<?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>20422</bug_id>
          
          <creation_ts>2008-08-18 01:26:53 -0700</creation_ts>
          <short_desc>Patch to allow custom memory allocation control</short_desc>
          <delta_ts>2009-05-14 02:07:25 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Paul Pedriana">ppedriana</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>ariya.hidayat</cc>
    
    <cc>darin</cc>
    
    <cc>emacemac7</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>manyoso</cc>
    
    <cc>mario.bensi</cc>
    
    <cc>mrowe</cc>
    
    <cc>pam</cc>
    
    <cc>sam</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>88698</commentid>
    <comment_count>0</comment_count>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-08-18 01:26:53 -0700</bug_when>
    <thetext>This submission consists of two files: New.h and OperatorNewTest.cpp. The former implements a base header file which allows for custom control of memory allocation in WebKit. The latter implements a basic unit test for New.h. 

The usefulness of this feature was discussed in June on the webkit-dev mailing list. See the following for context: https://lists.webkit.org/pipermail/webkit-dev/2008-June/004089.html. In summary, this system allows for the external redirection of memory allocation in WebKit to a user-specified heap or heaps. It provides for this by two means: overriding operator new in C++ classes (usually via a base class), and by overriding global operator new. Users have responded that the first means is preferred, though there may be cases where classes aren&apos;t used or where malloc is being used instead of new and thus the second means would be needed. These means are mutually compatible. 

Initially this submission does not include a WebKit-wide patch to convert code to using this system, nor does it need to at this time. In theory, WebKit code can be migrated to take advantage of this in a gradual manner, though the intended ability for the user to control memory allocation WebKit-wide won&apos;t be possibly until the migration is complete. This initial submission is a more formal RFC than that proposed on the mailing list and after discussion modifications and a full WebKit-wide patch to use it can be considered. New.h could be checked into the codebase and undergo initial testing before any patch to use it WebKit-wide was constructed and submitted. 

This submission is motivated by the necessity to tightly control memory on embedded platforms, especially where WebKit is not the primary application but instead is a library used within another application. Additionally, the submission significantly benefits the KDE project by allowing memory optimizations that they otherwise are unable to implement. I will defer to a representative from KDE to step in and clarify this further. 

This submission should not affect the optimized WebKit runtime in any significant way. It is unlikely to affect the WebKit build speed or memory usage either. The primary downside to the proposed system is that it will require a number of modifications to the WebKit code (adding base class operators) to take advantage of.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88699</commentid>
    <comment_count>1</comment_count>
      <attachid>22847</attachid>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-08-18 01:28:25 -0700</bug_when>
    <thetext>Created attachment 22847
Implements operator new utilities</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88700</commentid>
    <comment_count>2</comment_count>
      <attachid>22848</attachid>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-08-18 01:29:19 -0700</bug_when>
    <thetext>Created attachment 22848
Unit test for New.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88716</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-08-18 07:30:45 -0700</bug_when>
    <thetext>Can you please take a look at http://webkit.org/coding/contributing.html for information about contributing code changes.  In particular, take note of the coding style guidelines, the need for a ChangeLog entry, and that changes should be provided in patch form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88726</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2008-08-18 09:34:43 -0700</bug_when>
    <thetext>I think this would be a good solution to allow the Linux ports to use FastMalloc and further it does provide a nice way for ports to provide customized allocators.  

Definitely prefer the new base class option to the global operator new for reasons discussed here by Maciej:

https://lists.webkit.org/pipermail/webkit-dev/2008-June/004089.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88743</commentid>
    <comment_count>5</comment_count>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-08-18 11:39:46 -0700</bug_when>
    <thetext>I can convert these to patches and make new attachments for that (along with a ChangeLog entry). Before I submitted the above files I walked over the coding guidelines and did any changes to make the code compliant. Did I possibly miss something?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88889</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-08-19 21:55:21 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I can convert these to patches and make new attachments for that (along with a
&gt; ChangeLog entry). Before I submitted the above files I walked over the coding
&gt; guidelines and did any changes to make the code compliant. Did I possibly miss
&gt; something?

There are a few issues that I see:
* Lack of license header
* Inconsistent placement of the opening brace in a function definition.
* Functions named with an initial upper-case letter.
* Use of C-style casts in C++ code.
* Use of NULL in C++ code.
* &quot;Filled&quot; block header comments.
* Large numbers of blank lines, such as at the end of the file.

Some of these aren&apos;t explicitly mentioned in the coding style guidelines, but are style rules that we apply consistently throughout WebKit.  If something isn&apos;t explicitly mentioned it&apos;s a good idea to match the predominant style of existing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88890</commentid>
    <comment_count>7</comment_count>
      <attachid>22847</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-08-19 21:57:06 -0700</bug_when>
    <thetext>Comment on attachment 22847
Implements operator new utilities

Marking as r- for now.  When you attach the updated patch someone can review for substance rather than style :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89961</commentid>
    <comment_count>8</comment_count>
      <attachid>23132</attachid>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-09-02 17:44:48 -0700</bug_when>
    <thetext>Created attachment 23132
Implements a new file: JavaScriptCore/wtf/New.h.

I have revised the file to better follow WebKit coding conventions than the previous version, made it a formal patch instead of a .h file, and made a couple small code changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89962</commentid>
    <comment_count>9</comment_count>
      <attachid>23133</attachid>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-09-02 17:47:16 -0700</bug_when>
    <thetext>Created attachment 23133
Test application for New.h

This file is incidental and is not itself currently a proposed patch to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90524</commentid>
    <comment_count>10</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2008-09-08 06:39:43 -0700</bug_when>
    <thetext>Our goal is to change standard malloc to tcmalloc under linux-qt port but we couldn&apos;t solve operator new and delete problems.  As we see this solution can solve this, therefore if the community accepts this change then we would gladly help to replace all new and delete operators to the new ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91217</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2008-09-15 09:02:01 -0700</bug_when>
    <thetext>Zoltan, to be clear I think we would not be replacing all the &apos;new&apos; and &apos;delete&apos; operators, rather we&apos;d be changing WebKit so that all classes inherit AllocBase.  At least that is my preferred solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92022</commentid>
    <comment_count>12</comment_count>
      <attachid>23132</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-21 14:25:10 -0700</bug_when>
    <thetext>Comment on attachment 23132
Implements a new file: JavaScriptCore/wtf/New.h.

Seems good.

I think the term &quot;Object&quot; might be confusing here. I hope we can come up with better names than deleteObject and deleteArray.

AllocBase seems like a reasonable name, but if we&apos;re going to be using it everywhere, do we really have to use the abbreviation &quot;alloc&quot;? I&apos;d prefer a name that was a tiny bit more expressive about what it does exactly. Not that I&apos;m a fan of the prefix &quot;fast&quot; in &quot;fastMalloc&quot;, but it would at least be consistent to use that motif everywhere; we should consider that.

I think it&apos;s probably a mistake to name this &lt;wtf/New.h&gt; since there&apos;s a system header called &lt;new.h&gt; on some platforms. We have trouble with &lt;WebCore/String.h&gt; and we&apos;ve had to name it PlatformString.h because of conflict with &lt;string.h&gt; on some platforms.

The main thing I&apos;d like to see that&apos;s not here is a way to detect if people use new/delete directly and forget to use these functions. One of the advantages of the current approach is that there&apos;s no room for error. You can&apos;t forget and mismatch these. We would like a compile time error or a runtime error if someone does delete instead of deleteObject or delete [] instead of deleteArray. I&apos;d like to come up with a way of doing that, even if only on certain platforms. We can be creative and use macros if necessary. I also think we consider putting debugging sentinels in versions when NDEBUG is not set so we detect objects that are allocated with new/newObject and deleted with delete[]/deleteArray or vice versa.

It&apos;s fine to use the underscore naming convention for things where we&apos;re trying to match something in the std namespace. But I don&apos;t think that includes integral_constant, true_type, and false_type. Unless perhaps those are coming in a future standard?

+        template &lt;&gt; struct has_trivial_constructor&lt;float&gt;                    : public true_type{};
+        template &lt;&gt; struct has_trivial_constructor&lt;const float&gt;              : public true_type{};

Why are these versions with &quot;const&quot; needed? Are they really needed? If so, then why aren&apos;t versions with &quot;volatile&quot; and &quot;const volatile&quot; also needed?

HashTraits.h has a template called IsInteger. There are some differences in idiom between this new code and that existing code that might be worth resolving. And we may want to share with that template.

The has_trivial_constructor and has_trivial_destructor need to be specialized for raw pointers too. What does &quot;trivial&quot; mean for a constructor? Does it really mean you can use uninitialized memory for the type, as opposed to needing zero-filled memory?

We normally put spaces inside empty braces. We normally try to avoid lining up code, like the lined-up colons. It&apos;s &quot;high maintenance&quot; formatting that tends to fall apart if you rename something.

+            fastFree(p);  // We don&apos;t need to check for a null pointer; the compiler does this.

I don&apos;t understand this comment. fastFree checks for 0 and quietly does nothing. What does the compiler have to do with it?

+        // This handles the case whereby T has a trivial ctor and a trivial dtor.

I think you mean &quot;wherein&quot;, not &quot;whereby&quot;.

+                T* const p = static_cast&lt;T*&gt;(fastMalloc(sizeof(T) * count));

We normally don&apos;t mark local variables const, even if we don&apos;t plan to modify them. Is there a reason you&apos;re doing that here and not elsewhere?

+                return reinterpret_cast&lt;T*&gt;(p);

Why is there a cast here (in NewArrayImpl&lt;T, false, true&gt;? I believe p already has the right type.

+                uint64_t* p = static_cast&lt;uint64_t*&gt;(fastMalloc(sizeof(uint64_t) + (sizeof(T) * count)));

The use of uint64_t here is a little strange. Is that really what we want, even on 32-bit platforms? Seems a bit inefficient. I guess you&apos;re trying to not perturb the alignment so you&apos;re trying to chose an integer size that&apos;s big enough everywhere. If so, then &quot;unsigned long long&quot; may be the best type to use. I don&apos;t think explicitly specifying 64 bits is necessarily helpful.

I think a better approach would be to put the pointer into a char*, since that has a special case to allow pointer aliasing. I believe the implementation you have here would not compile with strict aliasing. We can&apos;t just cast directly from uint64_t* to another arbitrary type. But we can cast from char* to two different types. We should find an answer to this and test it. It&apos;s critical that we continue to compile with the strict aliasing compiler option on.

If you were using the char technique, then we could advance by a size that preserves alignment, while still using a 32-bit integer for the array size on 32-bit platforms, which is probably more efficient.

+        if (p) { // As per the C++ standard, test for null pointer.

I think this comment is inaccurate. Clearly the C++ standard doesn&apos;t tell us what a function template named deleteObject should do! What you&apos;re really trying to say here is something more like this: &quot;Since we intend to use this wherever we&apos;d use C++ delete, allow a null pointer as it does.&quot;

Since we plan to use this everywhere we might be using it in performance-critical code paths. Perhaps we should consider adding version of delete without a null check that instead assert? It might be good to save a branch in the case of a trivial destructor. We could also consider a version of fastFree without a null check for the same reason.

+                if (p) { // As per the C++ standard, test for null pointer.
+                    // No need to destruct the objects in this case.
+                    fastFree(p);
+                }

There&apos;s no need to add an extra check for null in this case since fastFree already does this.

I think I made enough comments to justify review- for now. I&apos;m really interested in figuring out a strategy for using this in all the code that will help us catch places where we forget to use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92023</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-21 14:28:03 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; we would gladly
&gt; help to replace all new and delete operators to the new ones.

I believe the proposal is this:

    1) Add AllocBase (looking for better name) as a base class for every class we new/delete or one of its base classes.
    2) For objects we new/delete that are not classes that can be changed to derive from AllocBase, use newObject/deleteObject and newArray/deleteArray.

One trick is coming up with a good technique for making sure we do this and catch mistakes either at compile time or at least at runtime if we do it wrong. It&apos;s going to be hard to review patches knowing that new/delete is sometimes right and sometimes wrong, depending on the type of object it&apos;s being called on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92082</commentid>
    <comment_count>14</comment_count>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-09-21 22:54:45 -0700</bug_when>
    <thetext>Thanks. That is very good feedback. I will work towards addressing the items over the next week or so.

The uint64_t is to cause it to act like malloc as per the C99 standard section 7.20.3 p1 (&quot;suitably aligned&quot;). But as you say, uint64_t isn&apos;t the best way. I wonder if the best way is to create a union of long long and long double and use the size of that. I&apos;m unaware of any compiler that would support uint64_t but have it be larger than long long. I have however seen compilers that implement long long as a 128 bit vector-friendly type, and then there is PowerPC&apos;s 16 bit vector types themselves. FWIW, FastMalloc.cpp states that it returns 8 byte aligned memory.

I have no idea where the &quot;We don&apos;t need to check for a null pointer; the compiler does this.&quot; statement came from. It&apos;s not a true statement in that context. I think it might have come in from a paste of some other code where it made sense. 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92503</commentid>
    <comment_count>15</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2008-09-24 04:13:06 -0700</bug_when>
    <thetext>We are working on trying this solution in JSCore. I have a question: Does it need to inherit all classes from AllocBase, or just those whitch currently created by new call? (I think over the future allocations of objects.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93523</commentid>
    <comment_count>16</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2008-10-01 02:22:16 -0700</bug_when>
    <thetext>We have implemented the experimental version of this solution for JavaScriptCore (r37048) therefore all classes inherit from the common base class (AllocBase). We had some problems during the implementation:
 - AllocBase was extended with another &amp;#8220;new&amp;#8221; operator which accepts pointer as well
 - There were several non-public inheritances therefore we changed their visibility to public (the main problem is that classes non-publicly inherit from Noncopyable)
 - Constructor was added to several structs and they are called when the structs are instantiated
 - Code-generator scripts were changed to use the constructors of the structs when instantiating them in static arrays 
    for example:
     -const ClassInfo InternalFunction::info = { &quot;Function&quot;, 0, 0, 0 };
     +const ClassInfo InternalFunction::info(&quot;Function&quot;, 0, 0, 0);
 - We corrected same compilation errors in WebCore which came from these but this solution is not implemented for the whole WebCore

We tested JavaScriptCore under linux-qt and it worked with this solution.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93524</commentid>
    <comment_count>17</comment_count>
      <attachid>23971</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2008-10-01 02:25:40 -0700</bug_when>
    <thetext>Created attachment 23971
proposed patch for JavaScripCore

This is a patch for JavaScriptCore only (use it inside JavaScriptCore directory).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93525</commentid>
    <comment_count>18</comment_count>
      <attachid>23972</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2008-10-01 02:28:09 -0700</bug_when>
    <thetext>Created attachment 23972
proposed patch for WebCore

This patch corrects the compilation errors in WebCore caused by the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93554</commentid>
    <comment_count>19</comment_count>
      <attachid>23971</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-01 09:42:24 -0700</bug_when>
    <thetext>Comment on attachment 23971
proposed patch for JavaScripCore

(In reply to comment #16)
&gt;  - There were several non-public inheritances therefore we changed their
&gt; visibility to public (the main problem is that classes non-publicly inherit
&gt; from Noncopyable)

Why did you change the visibility to public? That sounds wrong. Using private inheritance is a valid technique and you shouldn&apos;t just change the inheritance.

&gt;  - Constructor was added to several structs and they are called when the
&gt; structs are instantiated

Why?

&gt;  - Code-generator scripts were changed to use the constructors of the structs
&gt; when instantiating them in static arrays 
&gt;     for example:
&gt;      -const ClassInfo InternalFunction::info = { &quot;Function&quot;, 0, 0, 0 };
&gt;      +const ClassInfo InternalFunction::info(&quot;Function&quot;, 0, 0, 0);

This change is unacceptable.

On many platforms, including Mac OS X, it will cause the code of the JavaScriptCore framework to be paged in during load time so the constructors can be run. Struct initialization doesn&apos;t require code execution and is handled by the loader, but constructor execution does. This has a dramatic effect on the load time performance of an application that links with the library before it uses the library.

It seems that there are multiple unrelated changes here. I don&apos;t see how a change to ClassInfo has anything to do with the New.h header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93556</commentid>
    <comment_count>20</comment_count>
      <attachid>23972</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-01 09:44:49 -0700</bug_when>
    <thetext>Comment on attachment 23972
proposed patch for WebCore

Clearing review flag on this. Next time around, the WebCore and JavaScriptCore changes should go into a single patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93557</commentid>
    <comment_count>21</comment_count>
      <attachid>23971</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-01 09:50:18 -0700</bug_when>
    <thetext>Comment on attachment 23971
proposed patch for JavaScripCore

Thanks for tackling this.

I think the main problem with this patch is that it went overboard in making AllocBase a base class for classes that are never used with new/delete. Noncopyable and ClassInfo are both examples of that. By only using AllocBase as a base class for classes where we use new/delete the size of the patch would be smaller and we wouldn&apos;t have to make unwanted changes like the loading slowdown with static constructors.

Other examples of classes that are not ever allocated at all and so don&apos;t need to inherit from AllocBase are the various hash functions. These are simply traits and don&apos;t ever get allocated at all, so there&apos;s no reason to change them. Same thing for many other classes, such as AVLTreeAbstractorForArrayCompare. Same thing for classes where we only use them on the stack and never use new.

It makes no sense to add lots of empty constructors for classes where it&apos;s not legitimate to construct them that way, so we should redesign the AllocBase class so it doesn&apos;t require an empty constructor to compile.

There are also changes like this one:

-    NodeFeatureInfo&lt;T&gt; result = {node, info, numConstants};
+    NodeFeatureInfo&lt;T&gt; result = { node, info, numConstants };

That&apos;s just a formatting tweak so it should be in a separate patch. We don&apos;t want a patch that makes a small change to a file but also strips all the trailing spaces from that file. Those should be done separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93701</commentid>
    <comment_count>22</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2008-10-02 02:58:17 -0700</bug_when>
    <thetext>Do you happen to have benchmark results (SunSpider) comparison with and without the patch? At least, this should be easy for JSC part only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94219</commentid>
    <comment_count>23</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2008-10-06 04:16:07 -0700</bug_when>
    <thetext>We reimplemented our solution for JavaScriptCore by taking into account your comments. Now we only inherit classes from AllocBase which are ever allocated on the heap. Visibility of inheritances are not changed and we did not change structs.

We present the results of SunSpider on the original and on the modified WebKit (more precisely, on JSC). As you can see, there is no significant difference between the two versions.

official:Total:                 1597.4ms +/- 0.2%
patched: Total:                 1606.0ms +/- 0.9%
====================
official:Total:                 1602.8ms +/- 0.3%
patched: Total:                 1598.9ms +/- 0.2%
====================
official:Total:                 1600.1ms +/- 0.2%
patched: Total:                 1601.6ms +/- 0.1%
====================
official:Total:                 1601.1ms +/- 0.3%
patched: Total:                 1599.4ms +/- 0.2%
====================
official:Total:                 1602.6ms +/- 0.6%
patched: Total:                 1606.0ms +/- 0.9%
====================
official:Total:                 1610.3ms +/- 1.1%
patched: Total:                 1601.5ms +/- 0.2%
====================
official:Total:                 1602.2ms +/- 0.3%
patched: Total:                 1600.8ms +/- 0.1%
====================
official:Total:                 1606.4ms +/- 0.8%
patched: Total:                 1599.5ms +/- 0.2%
====================
official:Total:                 1600.2ms +/- 0.1%
patched: Total:                 1600.7ms +/- 0.1%
====================
official:Total:                 1608.4ms +/- 0.9%
patched: Total:                 1600.0ms +/- 0.2%
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94220</commentid>
    <comment_count>24</comment_count>
      <attachid>24113</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2008-10-06 04:20:36 -0700</bug_when>
    <thetext>Created attachment 24113
proposed patch

Implementing the solution for JavaScriptCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94368</commentid>
    <comment_count>25</comment_count>
      <attachid>24113</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-07 09:55:50 -0700</bug_when>
    <thetext>Comment on attachment 24113
proposed patch

This patch depends on Paul Pedriana&apos;s New.h, and if you read the bug report you&apos;ll see many unaddressed comments from me about that. So we can&apos;t just land that file until the comments are addressed. I&apos;m not going to repeat my comments.

This patch contains a double-copy of New.h; the whole file pasted twice. We won&apos;t land that,

+        HashEntry()
+		{
+			initialize(0, 0, 0, 0);
+		}

We don&apos;t want to add code like this. We need to fix AllocBase to eliminate that spurious requirement rather than adding dead code to the project to work around it.

-    class ExpressionNode : public Node {
+    class ExpressionNode : public Node, public WTF::AllocBase {

Where is the code that does &quot;new ExpressionNode&quot;?

+#include &lt;wtf/New.h&gt;

Why are you adding this include to ustring.h?

-    class Vector {
+    class Vector : public AllocBase {

Where is the code that does &quot;new Vector&quot;?

-class MainThreadInvoker : public QObject {
+class MainThreadInvoker : public QObject, public AllocBase {

Where is the code that does &quot;new MainThreadInvoker&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94444</commentid>
    <comment_count>26</comment_count>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-10-07 14:18:42 -0700</bug_when>
    <thetext>I think that Darin&apos;s comment #12 needs to be addressed before proceeding much further. I will be doing that, but must apologize because I&apos;ve been busy meeting deadlines in my effort to write a new graphics/font/transport back-end for my target platforms. I&apos;m gaining traction on that my deadlines so I should be able to work on this within a few days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94717</commentid>
    <comment_count>27</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2008-10-09 01:14:01 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 24113 [edit])
&gt; This patch depends on Paul Pedriana&apos;s New.h, and if you read the bug report
&gt; you&apos;ll see many unaddressed comments from me about that. So we can&apos;t just land
&gt; that file until the comments are addressed. I&apos;m not going to repeat my
&gt; comments.

Ok, wee stop this work until AllocBase is finished.

&gt; This patch contains a double-copy of New.h; the whole file pasted twice.
Sorry, it was a silly mistake.

&gt; 
&gt; -    class ExpressionNode : public Node {
&gt; +    class ExpressionNode : public Node, public WTF::AllocBase {
&gt; 
&gt; Where is the code that does &quot;new ExpressionNode&quot;?

There is no new call to ExpressionNode directly but its descendants are
instantiated by new. Here is the list of descendants which are instantiated:
JavaScriptCore/kjs/nodes.cpp: line 1303 - AssignResolveNode : public
                            ExpressionNode, public ThrowableExpressionData
JavaScriptCore/kjs/grammar.y: line 1249 - ReadModifyBracketNode : public
                            ExpressionNode, public ThrowableSubExpressionData
JavaScriptCore/kjs/grammar.y: line 1259 - ReadModifyDotNode : public
                            ExpressionNode, public ThrowableSubExpressionData
JavaScriptCore/kjs/grammar.y: line 1275 - PrefixBracketNode : public 
                     ExpressionNode, public ThrowablePrefixedSubExpressionData
JavaScriptCore/kjs/grammar.y: line 1281 - PrefixDotNode : public
                     ExpressionNode, public ThrowablePrefixedSubExpressionData
JavaScriptCore/kjs/grammar.y: line 1297 - PostfixBracketNode : public
                     ExpressionNode, public ThrowableSubExpressionData
JavaScriptCore/kjs/grammar.y: line 1304 - PostfixDotNode : public
                     ExpressionNode, public ThrowableSubExpressionData
JavaScriptCore/kjs/grammar.y: line 1324 - FunctionCallBracketNode : public
                     ExpressionNode, public ThrowableSubExpressionData
JavaScriptCore/kjs/grammar.y: line 1330 - FunctionCallDotNode : public 
                     ExpressionNode, public ThrowableSubExpressionData


&gt; +#include &lt;wtf/New.h&gt;
&gt; 
&gt; Why are you adding this include to ustring.h?
Another mistake.

&gt; -    class Vector {
&gt; +    class Vector : public AllocBase {
&gt; 
&gt; Where is the code that does &quot;new Vector&quot;?

JavaScriptCore/VM/SegmentedVector.h: line 149 - &quot;Segment* segment = new Segment;&quot;
And as you can see Segment is a Vector: &quot;typedef Vector&lt;T, SegmentSize&gt; Segment;&quot;

&gt; 
&gt; -class MainThreadInvoker : public QObject {
&gt; +class MainThreadInvoker : public QObject, public AllocBase {
&gt; 
&gt; Where is the code that does &quot;new MainThreadInvoker&quot;?
&gt; 
JavaScriptCore/wtf/qt/MainThreadQt.cpp: line 59 - Q_GLOBAL_STATIC(MainThreadInvoker, webkit_main_thread_invoker)
I think this line call new, but I am not sure. We will analyse it.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96069</commentid>
    <comment_count>28</comment_count>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-10-21 01:38:08 -0700</bug_when>
    <thetext>The following discussion follows Darin&apos;s comment #12. It references a new revision of the proposed allocation interface which is not yet posted. This is something I can work on right away and which I&apos;ve done some work on already. But some of the items below might require a little feedback before a revision is completed and posted with some confidence. 

Regarding the name AllocBase and fastMalloc, are you suggesting a base class called FastMallocBase? That seems fine and consistent with the use of fastMalloc. It would make it somewhat clear that its intent is to use fastMalloc. I will AllocBase to FastMallocBase for the new revision. 

Since the file name New.h needs to be changed, I can follow suit with this and rename it FastNew.h for the new revision. Or should it be FastMallocNew.h? 

Instead of newObject/deleteObject, I wonder if there is a way to use the fastMalloc name here. Such a name might be fastNew/fastDelete/fastNewArray/fastDeleteArray. I can&apos;t think of a simple way to avoid having special names for Array versions, as both the object and array delete functions take the same argument: T*. For the new revision I will switch it to fastNew, etc. and refer to it as such from here on. 

Being able to detect misuse (e.g. new/delete mismatches) at compile time is tough (given how C++ works), though detecting it at runtime isn&apos;t very difficult. For some users it&apos;s enough to simply have global operator new and delete assert(false), and that&apos;s what some embedded and game developers do application-wide. But that won&apos;t work for most users. A practical solution could involve a magic number approach whereby the four bytes prior to an allocation identifies how the allocation was done. Such an approach could tell not just if there was a mismatch between fastNew and fastDelete, but also could potentially be used to tell if there was a mistaken use of fastDelete instead of fastFree or vice versa. I can implement this for the new revision without much trouble. It can be controlled by a define which defaults to disabled in NDEBUG and which is tested by #if ENABLE(FAST_NEW_VALIDATION) or a suitable alternative. 

Regarding underscores in integral_constant, true_type, and false_type, these match the C++ TR1, as documented at http://msdn.microsoft.com/en-us/library/bb982910.aspx, for example. The functionality there is defined to be identical to the new C++ standard, with the only difference being that it is in the WTF namespace. And the new C++ functionality is imported into WTF if present. So I think it&apos;s a good idea to match the new C++ standard functionality.

Regarding the const version of has_trivial_constructor, yes volatile versions are needed to be complete. I left that out of the first proposal for expediency but left a comment in there about volatile. I&apos;m not aware of a way to avoid having the four types defined, but I&apos;m pretty sure there are only these four variations and no others. Granted, the code will execute correctly regardless of the omission of the volatile variations; it just would use a little extra memory. I will nevertheless add the volatile versions to be complete. Note that the most recent versions of GCC and VC++ (and IBM, CodeWarrior, and Dinkumware) for desktop platforms have built-in support for these type traits as per the new C++ standard. 

In looking at HashTraits.h I can see the aforementioned IsInteger type traits. It&apos;s just checking for int and not const int, volatile int, const volatile int. So it will misdetect for the latter three types. Since compilers are now providing explicit support for C++ standard type traits, I wonder if it would be useful to have HashTraits.h also defer to the compiler/standard library when possible. Would it be useful to have a TypeTraits.h header file which is shared by HashTraits.h and FastNew.h. I can implement that and add the const/volatile is_integral variations (recall that TR1 calls it is_integral).

I can add a space in between the braces and remove the lining up easily enough.

I will get rid of that mistaken &quot;We don&apos;t need to check for a null pointer&quot; comment.

I suppose &quot;whereby&quot; isn&apos;t right; that can be easily changed.

Ditto for the &apos;const&apos; in local variable declarations. 

Yes the cast in NewArrayImpl&lt;T, false, true&gt; is redundant.

Regarding the uint64_t thing, it&apos;s there to provide an array size prefix to arrays of non-POD types, while preserving C++&apos;s &quot;suitably aligned&quot; allocation requirement. I can switch that to use a type which is a union of void*/long long/double/int64_t, and that would be reasonably portable. The built-in compiler generated array new is going to be doing something similar if not identical to this in a lot of cases, so adding a prefix of 8 bytes shouldn&apos;t be adding any more space than the compiler or standard library is already adding on its own (I just verified with GCC 4.1 on PowerPC). The reason it is 8 bytes even on a 32 bit platform is for this alignment preservation. Exactly how compilers deal with this is compiler-specific, but they all face the problem that non-PODs must be aligned. 

Should the delete function (previously deleteObject, to be changed to fastDelete) check for a NULL pointer? It seems to me that it needs to do so by default. I agree that using &quot;Since we intend to use this wherever we&apos;d use C++ delete, allow a null pointer as it does&quot; is a better comment to have there. I can pretty easily add a version that avoids the NULL pointer check. It&apos;s only a matter of what to call it. Is there a precedent in WebKit for this kind of naming? fastDeleteSafe? fastDeleteValid? fastDeletePtr? It will be useful to document that fastFree or the user&apos;s equivalent can handle NULL so that FastNew.h doesn&apos;t need to. 
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96088</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-21 11:32:16 -0700</bug_when>
    <thetext>Comments just on your comments. I didn&apos;t reread my original comments to make sure you addressed all of them.

(In reply to comment #28)
&gt; Regarding the name AllocBase and fastMalloc, are you suggesting a base class
&gt; called FastMallocBase? That seems fine and consistent with the use of
&gt; fastMalloc.

Sounds good. I don&apos;t love the name fastMalloc, but I do love consistency and clarity about the relationship between these.

Maybe FastAllocBase would be better -- the &quot;m&quot; makes it even more jargony without adding much -- but FastMallocBase seems fine. Maybe there&apos;s an even better name that makes it clear that deriving fromthis makes new/delete use FastMalloc by default for objects of this class. Because, as you know, that&apos;s all it does: Saves you having to use fastNew/fastDelete explicitly. We don&apos;t use the word &quot;Base&quot; in classes like &quot;Noncopyable&quot;, so I think it&apos;s worth thinking at least a tiny bit further about what a more straightforward name would be; maybe it wouldn&apos;t include Base at all.

&gt; Since the file name New.h needs to be changed, I can follow suit with this and
&gt; rename it FastNew.h for the new revision. Or should it be FastMallocNew.h? 

I think you should name the file after the class. So FastAllocBase.h (or whatever we end up naming it) even though it will contain helpful function templates too, not just the class. The general pattern in the WebKit project overall is to name files after classes, and it seems we can follow that here.

&gt; Instead of newObject/deleteObject, I wonder if there is a way to use the
&gt; fastMalloc name here. Such a name might be
&gt; fastNew/fastDelete/fastNewArray/fastDeleteArray. I can&apos;t think of a simple way
&gt; to avoid having special names for Array versions, as both the object and array
&gt; delete functions take the same argument: T*. For the new revision I will switch
&gt; it to fastNew, etc. and refer to it as such from here on.

Seems fine. While I don&apos;t love the &quot;fast&quot; word, I think that using it consistently as a theme will help people understand how to use it.

&gt; Being able to detect misuse (e.g. new/delete mismatches) at compile time is
&gt; tough (given how C++ works), though detecting it at runtime isn&apos;t very
&gt; difficult.

Yes, that&apos;s my impression too. But lets not give up on compile time just yet.

But I am still hoping to find a creative solution to detecting the misuse at compile time, although I haven&apos;t thought of anything. In the past we have done some clever things with macros that worked just fine. For example, we could do something that involves defining new and delete macros to prevent accidental direct use of built-in new, and somehow exempt code that needs to do this. I don&apos;t want to give up on this yet, so please do think about it while you do the rest of the project. Keep in mind, too, that something to detect misuse at compile time is useful even if it isn&apos;t possible on all platforms.

Lets definitely do the work to detect it at runtime.

&gt; For some users it&apos;s enough to simply have global operator new and
&gt; delete assert(false), and that&apos;s what some embedded and game developers do
&gt; application-wide.

And this will probably work on Mac OS X, since the tool chain supports a global operator new that is not actually global, but is instead local to the WebKit, WebCore, and JavaScriptCore frameworks. So we should do it on that platform, where a lot of the WebKit development is done.

&gt; A practical solution
&gt; could involve a magic number approach whereby the four bytes prior to an
&gt; allocation identifies how the allocation was done. Such an approach could tell
&gt; not just if there was a mismatch between fastNew and fastDelete, but also could
&gt; potentially be used to tell if there was a mistaken use of fastDelete instead
&gt; of fastFree or vice versa. I can implement this for the new revision without
&gt; much trouble. It can be controlled by a define which defaults to disabled in
&gt; NDEBUG and which is tested by #if ENABLE(FAST_NEW_VALIDATION) or a suitable
&gt; alternative. 

Yes, worth doing. There are many misuses it won&apos;t detect, though. For example, if a programmer use fastNew to allocate and then uses the standard compiler delete to deallocate there&apos;s no guarantee it would be caught; those are some of the most likely types of mistakes. But it would be great to catch things like using fastNew and then pairing it with fastFree, so I think we want to do this in FastMalloc too, not just the new functions.

We should think further about how to catch more types of mistake.

&gt; Regarding underscores in integral_constant, true_type, and false_type, these
&gt; match the C++ TR1, as documented at
&gt; http://msdn.microsoft.com/en-us/library/bb982910.aspx, for example.

Sounds fine. There should be a comment explaining this.

&gt; Regarding the const version of has_trivial_constructor, yes volatile versions
&gt; are needed to be complete. I left that out of the first proposal for expediency
&gt; but left a comment in there about volatile.

Sorry, I overlooked the comment about volatile.

&gt; Note that
&gt; the most recent versions of GCC and VC++ (and IBM, CodeWarrior, and Dinkumware)
&gt; for desktop platforms have built-in support for these type traits as per the
&gt; new C++ standard.

I think the best way to handle this is to make a header that supplies the new standard stuff as needed for compilers that lack it. Analogous to the MathExtras.h header. Then we can just use this almost as if the standard was present on all the platforms. If we can get away with actually defining it inside the std namespace on the non-compliant platforms, that&apos;s good. Or we can import it into the WTF namespace on the platforms that have it, and define it in the WTF namespace for platforms that don&apos;t.

&gt; In looking at HashTraits.h I can see the aforementioned IsInteger type traits.
&gt; It&apos;s just checking for int and not const int, volatile int, const volatile int.
&gt; So it will misdetect for the latter three types. Since compilers are now
&gt; providing explicit support for C++ standard type traits, I wonder if it would
&gt; be useful to have HashTraits.h also defer to the compiler/standard library when
&gt; possible. Would it be useful to have a TypeTraits.h header file which is shared
&gt; by HashTraits.h and FastNew.h. I can implement that and add the const/volatile
&gt; is_integral variations (recall that TR1 calls it is_integral).

Yes, a shared implementation would be better than just leaving this existing one in place while we add a new one.

&gt; Regarding the uint64_t thing, it&apos;s there to provide an array size prefix to
&gt; arrays of non-POD types, while preserving C++&apos;s &quot;suitably aligned&quot; allocation
&gt; requirement. I can switch that to use a type which is a union of void*/long
&gt; long/double/int64_t, and that would be reasonably portable.

Why not use &quot;unsigned long long&quot; instead of uint64_t? Is uint64_t more portable in some concrete way? Also, is there any platform where double is not sufficient? I think the specific &quot;64&quot; in uint64_t places the wrong emphasis. It&apos;s not the concrete size that matters, but rather &quot;aligned enough for all built in types&quot;, and uint64_t does not say that to me any more than double would.

&gt; I can pretty easily add a version that avoids the NULL pointer check. It&apos;s only a
&gt; matter of what to call it. Is there a precedent in WebKit for this kind of
&gt; naming? fastDeleteSafe? fastDeleteValid? fastDeletePtr?

I couldn&apos;t find any good precedent. There&apos;s gcProtect and gcProtectNullTolerant, but: 1) those names are too long, 2) that&apos;s backwards because the standard new/delete are null tolerant. What we need names for are versions of delete and free that are *not* null-tolerant. I would suggest these:

    fastNonNullFree
    fastNonNullDelete

Clarity is more important than brevity, I think. The above are ugly, but not too terrible.

An aside: We don&apos;t want the word &quot;safe&quot; in function names, because that implies that all other functions are possibly &quot;unsafe&quot;; I don&apos;t want to create a sense of vague dread about all the other functions ;-)

&gt; It will be useful to
&gt; document that fastFree or the user&apos;s equivalent can handle NULL so that
&gt; FastNew.h doesn&apos;t need to.

I think it should already be clear that since fastFree is an implementation of free, and free requires handling of null pointers, that fastFree is obligated to handle null pointers. But maybe you&apos;re just saying we need a comment to that effect in FastMalloc.h; you could include that in your patch. Or are you saying something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99592</commentid>
    <comment_count>30</comment_count>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-11-20 21:13:06 -0800</bug_when>
    <thetext>We (Zoltan Horvath and I) have produced a new patch (AllAllocation_v3.patch) which addresses the previous review comments. This patch includes the primary allocator and type traits-related code as well as a working patch of WebKit (revision 38334) to use the allocator code and which serves to demonstrate feasibility. The core of the patch involves the following files:

FastAllocBase.h 
    Primary header
TypeTraits.h
    New file which includes improved traits moved from HashTraits.h
FastMalloc.h
    Implements FAST_MALLOC_MATCH_VALIDATION
FastMalloc.cpp
    Implements FAST_MALLOC_MATCH_VALIDATION
Platform.h
    Provides definition of ENABLE(FAST_MALLOC_MATCH_VALIDATION)
HashTraits.h
    moved is_integer to to TypeTraits.h

Additionally there is FastAllocBaseTest.cpp which is a standalone test of the functionality.

A possibility is to apply this patch in two phases: 1) just the changes above with 2) other changes to follow. We felt it was useful to produce a demonstration of the patch which is carried through to all affected WebKit files to demonstrate ease and practicality of implementation. Zoltan can discuss the implementation of it better than me, since he did most of the work there and was the producer of the current .patch file. 

Zoltan could also speak more about observed performance effects, though I&apos;d be surprised if performance changed in a measurable way. When FAST_MALLOC_MATCH_VALIDATION is enabled I expect that memory usage could increase by perhaps as much as 1-2% for patterns that include a lot of small allocations.

Most of the following discussion refers to FastAllocatorBase.h. Hopefully it isn&apos;t too verbose.

  &gt;&gt; I wrote:
  &gt;&gt; Regarding the name AllocBase and fastMalloc, are you suggesting a base 
  &gt;&gt; class called FastMallocBase? That seems fine and consistent with the 
  &gt;&gt; use of fastMalloc.

  &gt; Darin wrote:
  &gt; Sounds good. I don&apos;t love the name fastMalloc, but I do love consistency 
  &gt; and clarity about the relationship between these.
  &gt; 
  &gt; Maybe FastAllocBase would be better -- the &quot;m&quot; makes it even more jargony
  &gt; without adding much -- but FastMallocBase seems fine. Maybe there&apos;s an 
  &gt; even better name that makes it clear that deriving from this makes 
  &gt; new/delete use FastMalloc by default for objects of this class. Because, 
  &gt; as you know, that&apos;s all it does: Save you having to use fastNew/fastDelete
  &gt; explicitly. We don&apos;t use the word &quot;Base&quot; in classes like &quot;Noncopyable&quot;, 
  &gt; so I think it&apos;s worth thinking at least a tiny bit further about what a 
  &gt; more straightforward name would be; maybe it wouldn&apos;t include Base at all.

I&apos;ve got it as FastAllocBase now. I&apos;m trying to think of a name that doesn&apos;t 
include &quot;Base&quot; but conveys some meaning. &quot;Noncopyable&quot; works well for its 
purpose, and an analog for an allocation base class might be something like 
&quot;FastAllocated&quot;. I did notice that GenericHashTraitsBase is the base for 
HashTraits in HashTraits.h.


  &gt;&gt; Since the file name New.h needs to be changed, I can follow suit with 
  &gt;&gt; this and rename it FastNew.h for the new revision. Or FastMallocNew.h? 

  &gt; I think you should name the file after the class. So FastAllocBase.h 
  &gt; (or whatever we end up naming it) even though it will contain helpful 
  &gt; function templates too, not just the class. The general pattern in the 
  &gt; WebKit project overall is to name files after classes, and it seems we 
  &gt; can follow that here.

I&apos;ve got it as FastAllocBase.h, though it could be changed to something 
like FastAllocated.h.


  &gt;&gt; Instead of newObject/deleteObject, I wonder if there is a way to use the
  &gt;&gt; fastMalloc name here. Such a name might be
  &gt;&gt; fastNew/fastDelete/fastNewArray/fastDeleteArray. I can&apos;t think of a 
  &gt;&gt; simple way to avoid having special names for Array versions, as both the 
  &gt;&gt; object and array delete functions take the same argument: T*. For the 
  &gt;&gt; new revision I will switch it to fastNew, etc. and refer to it as such 
  &gt;&gt; from here on.

  &gt; Seems fine. While I don&apos;t love the &quot;fast&quot; word, I think that using it
  &gt; consistently as a theme will help people understand how to use it.

It is now implemented as fastNew, etc.


  &gt;&gt; Being able to detect misuse (e.g. new/delete mismatches) at compile time 
  &gt;&gt; is tough (given how C++ works), though detecting it at runtime isn&apos;t 
  &gt;&gt; very difficult.

  &gt; Yes, that&apos;s my impression too. But lets not give up on compile time 
  &gt; just yet. But I am still hoping to find a creative solution to detecting 
  &gt; the misuse at compile time, although I haven&apos;t thought of anything. 
  &gt; In the past we have done some clever things with macros that worked 
  &gt; just fine. For example, we could do something that involves defining new 
  &gt; and delete macros to prevent accidental direct use of built-in new, and 
  &gt; somehow exempt code that needs to do this. I don&apos;t want to give up on this
  &gt; yet, so please do think about it while you do the rest of the project. 
  &gt; Keep in mind, too, that something to detect misuse at compile time is 
  &gt; useful even if it isn&apos;t possible on all platforms.

Lets definitely do the work to detect it at runtime.

There&apos;s now code to detect mismatches of allocation. It&apos;s enabled via 
#if ENABLE(FAST_MALLOC_MATCH_VALIDATION) and has undergone some testing. 
The implementation is fairly neat in that it allows any heap implementation
to support it; it isn&apos;t limited to the FastMalloc heap.

  &gt;&gt; For some users it&apos;s enough to simply have global operator new and
  &gt;&gt; delete assert(false), and that&apos;s what some embedded and game developers 
  &gt;&gt; do application-wide.

  &gt; And this will probably work on Mac OS X, since the tool chain supports a 
  &gt; global operator new that is not actually global, but is instead local to 
  &gt; the WebKit, WebCore, and JavaScriptCore frameworks. So we should do it 
  &gt; on that platform, where a lot of the WebKit development is done.

I think this is something that would be done outside this patch in the 
application&apos;s or library&apos;s new/delete implementation. My testing has included
testing this and it works as expected.

  &gt;&gt; A practical solution could involve a magic number approach whereby the 
  &gt;&gt; four bytes prior to an allocation identifies how the allocation was done.
  &gt;&gt; Such an approach could tell not just if there was a mismatch between 
  &gt;&gt; fastNew and fastDelete, but also could potentially be used to tell if 
  &gt;&gt; there was a mistaken use of fastDelete instead of fastFree or vice versa.
  &gt;&gt; I can implement this for the new revision without much trouble. It can 
  &gt;&gt; be controlled by a define which defaults to disabled in NDEBUG and which 
  &gt;&gt; is tested by #if ENABLE(FAST_NEW_VALIDATION) or a suitable alternative. 

  &gt; Yes, worth doing. There are many misuses it won&apos;t detect, though. 
  &gt; For example, if a programmer use fastNew to allocate and then uses the 
  &gt; standard compiler delete to deallocate there&apos;s no guarantee it would be 
  &gt; caught; those are some of the most likely types of mistakes. But it would 
  &gt; be great to catch things like using fastNew and then pairing it with 
  &gt; fastFree, so I think we want to do this in FastMalloc too, not just the 
  &gt; new functions. We should think further about how to catch more types of 
  &gt; mistake.

It turns out that fastNew followed be delete or free is being detected at 
the glibc level and msvc CRT level in our tests. We&apos;ve tested the other
combinations and they do the right thing. 

  &gt;&gt; Regarding underscores in integral_constant, true_type, and false_type, 
  &gt;&gt; these match the C++ TR1, as documented at:
  &gt;&gt; http://msdn.microsoft.com/en-us/library/bb982910.aspx, for example.

  &gt; Sounds fine. There should be a comment explaining this.

Done

  &gt;&gt; In looking at HashTraits.h I can see the aforementioned IsInteger type 
  &gt;&gt; traits. It&apos;s just checking for int and not const int, volatile int, 
  &gt;&gt; const volatile int. So it will misdetect for the latter three types. 
  &gt;&gt; Since compilers are now providing explicit support for C++ standard 
  &gt;&gt; type traits, I wonder if it would be useful to have HashTraits.h also 
  &gt;&gt; defer to the compiler/standard library when possible. Would it be useful 
  &gt;&gt; to have a TypeTraits.h header file which is shared by HashTraits.h and 
  &gt;&gt; FastNew.h. I can implement that and add the const/volatile is_integral 
  &gt;&gt; variations (recall that TR1 calls it is_integral).

  &gt; Yes, a shared implementation would be better than just leaving this 
  &gt; existing one in place while we add a new one.

This is implemented in TypeTraits.h and it includes const/volatile traits
for both HashTraits&apos; is_integral and FastMallocBase&apos;s has_trivial_constructor.


  &gt;&gt; Regarding the uint64_t thing, it&apos;s there to provide an array size prefix 
  &gt;&gt; to arrays of non-POD types, while preserving C++&apos;s &quot;suitably aligned&quot; 
  &gt;&gt; allocation requirement. I can switch that to use a type which is a union 
  &gt;&gt; of void*/long long/double/int64_t, and that would be reasonably portable.

  &gt; Why not use &quot;unsigned long long&quot; instead of uint64_t? Is uint64_t more 
  &gt; portable in some concrete way? Also, is there any platform where double 
  &gt; is not sufficient? I think the specific &quot;64&quot; in uint64_t places the wrong 
  &gt; emphasis. It&apos;s not the concrete size that matters, but rather &quot;aligned 
  &gt; enough for all built in types&quot;, and uint64_t does not say that to me any 
  &gt; more than double would.

I&apos;ve used a templated union of unsigned long long and T. This should address
size and aliasing issues.


  &gt;&gt; Should the delete function (previously deleteObject, to be changed to
  &gt;&gt; fastDelete) check for a NULL pointer? It seems to me that it needs to do
  &gt;&gt; so by default. I agree that using &quot;Since we intend to use this wherever 
  &gt;&gt; we&apos;d use C++ delete, allow a null pointer as it does&quot; is a better comment
  &gt;&gt; to have there. I can pretty easily add a version that avoids the NULL 
  &gt;&gt; pointer check. It&apos;s only a matter of what to call it. Is there a 
  &gt;&gt; precedent in WebKit for this kind of naming? fastDeleteSafe? 
  &gt;&gt; fastDeleteValid? fastDeletePtr?

  &gt; I couldn&apos;t find any good precedent. There&apos;s gcProtect and
  &gt; gcProtectNullTolerant, but: 1) those names are too long, 2) that&apos;s 
  &gt; backwards because the standard new/delete are null tolerant. What we need 
  &gt; names for are versions of delete and free that are *not* null-tolerant. 
  &gt; I would suggest these:
  &gt;     fastNonNullFree
  &gt;     fastNonNullDelete
  &gt; Clarity is more important than brevity, I think. The above are ugly, but 
  &gt; not too terrible.
  &gt; 
  &gt; An aside: We don&apos;t want the word &quot;safe&quot; in function names, because that 
  &gt; implies that all other functions are possibly &quot;unsafe&quot;; I don&apos;t want to 
  &gt; create a sense of vague dread about all the other functions ;-)

I&apos;ve added fastNonNullDelete to match fastDelete. I wonder if having this 
is necessary or if it&apos;s better to simply require that the allocator 
implementation always act like fastFree and check for a NULL pointer. 


  &gt;&gt; It will be useful to document that fastFree or the user&apos;s equivalent can
  &gt;&gt; handle NULL so that FastNew.h doesn&apos;t need to.

  &gt; I think it should already be clear that since fastFree is an 
  &gt; implementation of free, and free requires handling of null pointers, 
  &gt; that fastFree is obligated to handle null pointers. But maybe you&apos;re just
  &gt; saying we need a comment to that effect in FastMalloc.h; you could include 
  &gt; that in your patch. Or are you saying something else?

I&apos;ve added a comment clarifying that the underlying allocator must check 
for NULL for the use of FastDelete.


  &gt;&gt; + T* const p = static_cast&lt;T*&gt;(fastMalloc(sizeof(T) * count));

  &gt; We normally don&apos;t mark local variables const, even if we don&apos;t plan to 
  &gt; modify them. Is there a reason you&apos;re doing that here and not elsewhere?

This is now fixed.


  &gt;&gt; + return reinterpret_cast&lt;T*&gt;(p);

  &gt; Why is there a cast here (in NewArrayImpl&lt;T, false, true&gt;? I believe p 
  &gt; already has the right type.

This is now fixed.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99597</commentid>
    <comment_count>31</comment_count>
      <attachid>25333</attachid>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-11-20 21:19:18 -0800</bug_when>
    <thetext>Created attachment 25333
Patch against revision 38334</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99599</commentid>
    <comment_count>32</comment_count>
      <attachid>25334</attachid>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-11-20 21:20:41 -0800</bug_when>
    <thetext>Created attachment 25334
Unit test for latest FastAllocBase patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99657</commentid>
    <comment_count>33</comment_count>
      <attachid>25333</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-21 09:38:51 -0800</bug_when>
    <thetext>Comment on attachment 25333
Patch against revision 38334

I started reviewing this, but I&apos;m only part way through it. I&apos;ll post my comments soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99867</commentid>
    <comment_count>34</comment_count>
      <attachid>25333</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-23 20:24:49 -0800</bug_when>
    <thetext>Comment on attachment 25333
Patch against revision 38334

&gt; -    class HeavyProfile : public Profile {
&gt; +    class HeavyProfile : public Profile, public WTF::FastAllocBase {

Instead of having all the classes that derive from Profile derive from FastAllocBase, I suggest having Profile derive from FastAllocBase.

&gt; -    struct CallIdentifier {
&gt; +    struct CallIdentifier : public WTF::FastAllocBase {

This class is never used with new/delete, so I&apos;m not sure it&apos;s helpful to derive from FastAllocBase. What&apos;s the rule of thumb you&apos;re using to decide when to derive from it? I&apos;m thinking we should start with classes that are used with &quot;new&quot;.

&gt; -    class StructureID : public RefCounted&lt;StructureID&gt; {
&gt; +    class StructureID : public RefCounted&lt;StructureID&gt;, public WTF::FastAllocBase {

This class has been renamed to Structure, so this patch is a bit stale.

&gt; Index: JavaScriptCore/runtime/Identifier.h
&gt; ===================================================================
&gt; --- JavaScriptCore/runtime/Identifier.h	(revision 38334)
&gt; +++ JavaScriptCore/runtime/Identifier.h	(working copy)
&gt; @@ -23,12 +23,13 @@
&gt;  
&gt;  #include &quot;JSGlobalData.h&quot;
&gt;  #include &quot;UString.h&quot;
&gt; +#include &lt;wtf/FastAllocBase.h&gt;

Since UString.h already includes this header, the new include is redundant. There&apos;s a script, find-extra-includes, that you can use to find redundant includes of this file. You could do &quot;find-extra-includes | grep FastAllocBase&quot; and eliminate any redundant includes before you put the next patch up for review.

&gt; -    Rep* r = new Rep;
&gt; +    Rep* r = fastNew&lt;Rep&gt;();

The Rep struct should be changed to inherit from FastAllocBase.

&gt; -    , arrayTable(new HashTable(JSC::arrayTable))
&gt; +    , arrayTable(fastNew&lt;HashTable&gt;(JSC::arrayTable))

The HashTable struct should be changed to inherit from FastAllocBase.

&gt; -    class JSValue : Noncopyable {
&gt; +    class JSValue : Noncopyable, public WTF::FastAllocBase {

No JSValue object or object of any class derived from it can be allocated with a plain &quot;new&quot;. These objects are garbage-collected. So there&apos;s no need to add the base class here.

&gt; -class MainThreadInvoker : public QObject {
&gt; +class MainThreadInvoker : public QObject, public FastAllocBase {

Is this class used with &quot;new&quot;? I couldn&apos;t find any place where it was.

&gt; -class ThreadCondition : Noncopyable {
&gt; +class ThreadCondition : Noncopyable, public WTF::FastAllocBase {

I can&apos;t find any use of this class with &quot;new&quot;.

&gt; +    template &lt;typename T&gt; struct has_trivial_constructor : public integral_constant&lt;bool, __has_trivial_constructor(T)&gt;{ };

Missing spaces between the &quot;&gt;&quot; and the &quot;{&quot; on many lines in this file.

&gt; +namespace WTF {
&gt; +
&gt; +    COMPILE_ASSERT(is_integral&lt;bool&gt;::value, WTF_IsInteger_bool_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;const bool&gt;::value, WTF_IsInteger_bool_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;volatile bool&gt;::value, WTF_IsInteger_bool_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;const volatile bool&gt;::value, WTF_IsInteger_bool_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;char&gt;::value, WTF_IsInteger_char_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;signed char&gt;::value, WTF_IsInteger_signed_char_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;unsigned char&gt;::value, WTF_IsInteger_unsigned_char_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;short&gt;::value, WTF_IsInteger_short_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;unsigned short&gt;::value, WTF_IsInteger_unsigned_short_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;int&gt;::value, WTF_IsInteger_int_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;unsigned int&gt;::value, WTF_IsInteger_unsigned_int_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;long&gt;::value, WTF_IsInteger_long_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;unsigned long&gt;::value, WTF_IsInteger_unsigned_long_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;long long&gt;::value, WTF_IsInteger_long_long_true);
&gt; +    COMPILE_ASSERT(is_integral&lt;unsigned long long&gt;::value, WTF_IsInteger_unsigned_long_long_true);
&gt; +
&gt; +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
&gt; +    COMPILE_ASSERT(is_integral&lt;wchar_t&gt;::value, WTF_IsInteger_wchar_t_true);
&gt; +#endif
&gt; +
&gt; +    COMPILE_ASSERT(!is_integral&lt;char*&gt;::value, WTF_IsInteger_char_pointer_false);
&gt; +    COMPILE_ASSERT(!is_integral&lt;const char*&gt;::value, WTF_IsInteger_const_char_pointer_false);
&gt; +    COMPILE_ASSERT(!is_integral&lt;volatile char*&gt;::value, WTF_IsInteger_volatile_char_pointer__false);
&gt; +    COMPILE_ASSERT(!is_integral&lt;double&gt;::value, WTF_IsInteger_double_false);
&gt; +    COMPILE_ASSERT(!is_integral&lt;float&gt;::value, WTF_IsInteger_float_false);
&gt; +
&gt; +} // namespace WTF

Could we put these assertions in a .cpp file instead of in the header? I don&apos;t think we need to compile these compile time assertions in every single file that includes TypeTraits.h.

&gt; +    // This defines a type which holds an unsigned integer and is the same 
&gt; +    // size as the minimally aligned memory allocation. It can be used as 
&gt; +    // a size prefix for array allocations.
&gt; +    typedef unsigned long long AlignedAllocSize;

I think that the word &quot;Size&quot; in this name makes it sound like it&apos;s a block size. That&apos;s not what this is at all. Maybe MaximallyAlignedInteger would be a better name for this type? Or AllocAlignmentInteger?

Also, I don&apos;t understand what the comment &quot;can be used as a size prefix&quot; means, since you&apos;re storying the AllocType byte there, not a size.

&gt; +    inline AllocType getFastMallocMatchValidationType(const void* p)
&gt; +    {
&gt; +        const char* pType = static_cast&lt;const char*&gt;(p) - sizeof(AlignedAllocSize);
&gt; +        return static_cast&lt;AllocType&gt;(*pType);
&gt; +    }

WebKit style guidelines onit the word &quot;get&quot; in a function name like this one.

Since AllocType is used for validation, I think you should use longer values instead of just a byte, and more unusual numbers, to decrease the chance of a false negative.

Why not put AllocType and these functions into the Internal namespace?

&gt; +#include &lt;wtf/TypeTraits.h&gt;
&gt; +
&gt; +
&gt; +namespace WTF {

We normally don&apos;t put two blank lines in a place like this. I noticed otehr examples of that, and I think you should omit those also.

&gt; +#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
&gt; +            if (p)
&gt; +                setFastMallocMatchValidationType(p, AllocTypeClassNew);
&gt; +#endif

I&apos;d like to see this ditty in an inline function so that FastAllocBase can share it with fastNew without repeating the code twice. This would also have the benefit of moving the #if out of those functions.

&gt; +#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
&gt; +            if (p) {
&gt; +                if (getFastMallocMatchValidationType(p) != AllocTypeClassNew)
&gt; +                    fastMallocMatchFailed(p);
&gt; +                setFastMallocMatchValidationType(p, AllocTypeMalloc);  // Set it to this so that fastFree thinks it&apos;s OK.
&gt; +            }
&gt; +#endif

Same comment here.

&gt; +    /* Disabled until it&apos;s known that we want to actually do this.
&gt; +    template &lt;typename T, typename Arg1&gt;
&gt; +    inline T* fastNew(Arg1 arg1)
&gt; +    {
&gt; +        void* p = fastMalloc(sizeof(T));
&gt; +
&gt; +        if (p) {
&gt; +#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
&gt; +            if (p)
&gt; +                setFastMallocMatchValidationType(p, AllocTypeFastNew);
&gt; +#endif
&gt; +            return ::new(p) T(arg1);
&gt; +        }
&gt; +
&gt; +        return 0;
&gt; +    }
&gt; +    */

It looks like you have this commented out, but later in the same file you have one that&apos;s not commented out.

&gt; +                void* p = fastMalloc(sizeof(AlignedAllocSize) + (sizeof(T) * count));
&gt; +                ArraySize&lt;T&gt; a = { static_cast&lt;AlignedAllocSize*&gt;(p) };
&gt; +
&gt; +                if (p) {
&gt; +#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
&gt; +                    setFastMallocMatchValidationType(p, AllocTypeFastNewArray);
&gt; +#endif
&gt; +                    *a.size++ = count;

I don&apos;t understand how you can store both the array size and the validation type in the same place; &quot;p&quot; and &quot;a.size&quot; both point to the same address. Maybe I&apos;m missing something obvious here.

&gt; +        if(p) { // We need to test p here because we dereference it.

Needs a space after the &quot;if&quot;.

&gt; +                if(p) { // We need to test p here because we dereference it.

Needs a space after the &quot;if&quot;.

&gt; +                    while(pEnd-- != p)

Needs a space after the &quot;while&quot;.

&gt; +    template &lt;typename T&gt;
&gt; +    inline void fastNonNullDelete(T* p)
&gt; +    {
&gt; +        if (p) {

Given &quot;NonNull&quot; I don&apos;t understand why there&apos;s a null check here. Maybe &quot;NonNull&quot; means something different than I think it does.

&gt; +                    while(pEnd-- != p)

Needs a space after the &quot;while&quot;.

&gt; +    n += sizeof(AlignedAllocSize);  // A pathologically high n value could result in this overflowing.

I think we need code to handle that and return a 0, not just a comment.
 
&gt; +    totalBytes += sizeof(AlignedAllocSize); // A pathologically high totalBytes value could result in this overflowing.

I think we need code to handle that and return a 0, not just a comment.

&gt;  void cfree(void* ptr) {
&gt; -#ifndef WTF_CHANGES
&gt; -    MallocHook::InvokeDeleteHook(ptr);
&gt; -#endif
&gt; -  do_free(ptr);
&gt; +  free(ptr);
&gt;  }

Do you really need to change this?

&gt;  
&gt;  #ifndef WTF_CHANGES
&gt; @@ -3324,25 +3430,35 @@
&gt;      return realloc&lt;false&gt;(old_ptr, new_size);
&gt;  }
&gt;  
&gt; +
&gt;  template &lt;bool abortOnFailure&gt;
&gt;  ALWAYS_INLINE
&gt;  #endif
&gt;  void* realloc(void* old_ptr, size_t new_size) {
&gt;    if (old_ptr == NULL) {
&gt; +#if ENABLE(FAST_MALLOC_MATCH_VALIDATION)
&gt; +    void* result = malloc(new_size);
&gt; +#else
&gt;      void* result = do_malloc(new_size);
&gt;  #ifndef WTF_CHANGES
&gt;      MallocHook::InvokeNewHook(result, new_size);
&gt;  #endif
&gt; +#endif
&gt;      return result;
&gt;    }
&gt;    if (new_size == 0) {
&gt; -#ifndef WTF_CHANGES
&gt; -    MallocHook::InvokeDeleteHook(old_ptr);
&gt; -#endif
&gt;      free(old_ptr);
&gt;      return NULL;
&gt;    }

I don&apos;t understand what the value is of removing InvokeDeleteHook here.

&gt; +#if !defined(ENABLE_FAST_MALLOC_MATCH_VALIDATION)
&gt; +#define ENABLE_FAST_MALLOC_MATCH_VALIDATION 1
&gt; +#endif

This seems wrong. I think this is something we&apos;d want off in production builds.

&gt; -    class NullNode : public ExpressionNode {
&gt; +    class NullNode : public ExpressionNode, public WTF::FastAllocBase {

We can avoid adding so much separate derivation of every node class from FastAllocBase by making ParserRefCounted inherit from it.

&gt; Index: WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
&gt; ===================================================================
&gt; --- WebKit/qt/tests/qwebframe/tst_qwebframe.cpp	(revision 38334)
&gt; +++ WebKit/qt/tests/qwebframe/tst_qwebframe.cpp	(working copy)
&gt; @@ -27,6 +27,8 @@
&gt;  #include &lt;qwebhistory.h&gt;
&gt;  #include &lt;QRegExp&gt;
&gt;  #include &lt;QNetworkRequest&gt;
&gt; +
&gt; +#include &lt;wtf/FastAllocBase.h&gt;
&gt;  //TESTED_CLASS=
&gt;  //TESTED_FILES=
&gt;  
&gt; @@ -69,7 +71,7 @@
&gt;  Q_DECLARE_METATYPE(QVariantList)
&gt;  Q_DECLARE_METATYPE(QVariantMap)
&gt;  
&gt; -class MyQObject : public QObject
&gt; +class MyQObject : public QObject, public WTF::FastAllocBase
&gt;  {
&gt;      Q_OBJECT
&gt;  
&gt; @@ -2037,7 +2039,7 @@
&gt;      QCOMPARE(m_view-&gt;page()-&gt;mainFrame()-&gt;toHtml(), html);
&gt;  }
&gt;  
&gt; -class TestNetworkManager : public QNetworkAccessManager
&gt; +class TestNetworkManager : public QNetworkAccessManager, public WTF::FastAllocBase
&gt;  {
&gt;  public:
&gt;      TestNetworkManager(QObject* parent) : QNetworkAccessManager(parent) {}

Given this is just a test, I think it&apos;s OK to just leave these classes alone.

&gt; Index: WebKit/qt/tests/qwebframe/qwebframe.pro
&gt; ===================================================================
&gt; --- WebKit/qt/tests/qwebframe/qwebframe.pro	(revision 38334)
&gt; +++ WebKit/qt/tests/qwebframe/qwebframe.pro	(working copy)
&gt; @@ -4,3 +4,6 @@
&gt;  SOURCES  += tst_qwebframe.cpp
&gt;  QT += testlib network
&gt;  QMAKE_RPATHDIR = $$OUTPUT_DIR/lib $$QMAKE_RPATHDIR
&gt; +
&gt; +LIBS += -L../../../../JavaScriptCore
&gt; +LIBS += -lJavaScriptCore
&gt; Index: WebKit/qt/tests/qwebpage/qwebpage.pro
&gt; ===================================================================
&gt; --- WebKit/qt/tests/qwebpage/qwebpage.pro	(revision 38334)
&gt; +++ WebKit/qt/tests/qwebpage/qwebpage.pro	(working copy)
&gt; @@ -4,3 +4,6 @@
&gt;  SOURCES  += tst_qwebpage.cpp
&gt;  QT += testlib network
&gt;  QMAKE_RPATHDIR = $$OUTPUT_DIR/lib $$QMAKE_RPATHDIR
&gt; +
&gt; +LIBS += -L../../../../JavaScriptCore
&gt; +LIBS += -lJavaScriptCore

Are you sure these are correct? Why wasn&apos;t this needed before now? It this a good/reasonable new requirement?

I can&apos;t review all the rest of this. I think it&apos;s a mistake to make adoption of this across the entire project one giant patch. It would be much smarter to convert a class in JavaScriptCore and another in WebCore and get the kinks out before adding the code to hundreds of files all at the same time.

In general, I think we should put FastAllocBase into some base classes such as RefCounted and thereby avoid having to explicitly put it in so many classes individually, and in various other cases put it into a class as far up the inheritance tree as possible.

I&apos;m concerned that the patch has modifications to the Qt build system but not others. Is that because you&apos;ve only tried this with the Qt build system, or is there something Qt-specific? I think we should get the build system changes out of the way first, so a small patch that just adds the dependency and gets the build right would be good to do first before the giant patch.

review- for now.

Lets come up with a smaller patch that introduces the new header and adopts it in enough places so we can test it, rather than an &quot;all at once&quot; approach. Then we can follow up with adopting it elsewhere and then some kind of &quot;check that it&apos;s used everywhere&quot; final step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99968</commentid>
    <comment_count>35</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2008-11-24 07:32:57 -0800</bug_when>
    <thetext>&gt;&gt; -    class HeavyProfile : public Profile {
&gt;&gt; +    class HeavyProfile : public Profile, public WTF::FastAllocBase {
&gt;
&gt;Instead of having all the classes that derive from Profile derive from
&gt;FastAllocBase, I suggest having Profile derive from FastAllocBase.

Okay, I&apos;ll do this.

&gt;&gt; -    struct CallIdentifier {
&gt;&gt; +    struct CallIdentifier : public WTF::FastAllocBase {
&gt;
&gt;This class is never used with new/delete, so I&apos;m not sure it&apos;s helpful to
&gt;derive from FastAllocBase. What&apos;s the rule of thumb you&apos;re using to decide when
&gt;to derive from it? I&apos;m thinking we should start with classes that are used with
&gt;&quot;new&quot;.

new call: JavaScriptCore/profiler/CallIdentifier.h: line 84

We use a static analyzer tool called Columbus (http://www.inf.u-szeged.hu/sed/softwarequality) to find out which classes are instantiated with &quot;new&quot; so we know exactly which classes have to be inherited from FastAllocBase. (With the help of Columbus we can filter out unneccessary inheritances and we can handle diamond inheritances properly.)

&gt;&gt; -    class StructureID : public RefCounted&lt;StructureID&gt; {
&gt;&gt; +    class StructureID : public RefCounted&lt;StructureID&gt;, public WTF::FastAllocBase {
&gt;
&gt;This class has been renamed to Structure, so this patch is a bit stale.

It will be updated in the next patch. I did this patch for r38344.

&gt;&gt; Index: JavaScriptCore/runtime/Identifier.h
&gt;&gt; ===================================================================
&gt;&gt; --- JavaScriptCore/runtime/Identifier.h       (revision 38334)
&gt;&gt; +++ JavaScriptCore/runtime/Identifier.h       (working copy)
&gt;&gt; @@ -23,12 +23,13 @@
&gt;&gt;  
&gt;&gt;  #include &quot;JSGlobalData.h&quot;
&gt;&gt;  #include &quot;UString.h&quot;
&gt;&gt; +#include &lt;wtf/FastAllocBase.h&gt;
&gt;
&gt;Since UString.h already includes this header, the new include is redundant.
&gt;There&apos;s a script, find-extra-includes, that you can use to find redundant
&gt;includes of this file. You could do &quot;find-extra-includes | grep FastAllocBase&quot;
&gt;and eliminate any redundant includes before you put the next patch up for
&gt;review.

I&apos;ll remove redundant headers, thanks for the tip.

&gt;&gt; -    Rep* r = new Rep;
&gt;&gt; +    Rep* r = fastNew&lt;Rep&gt;();
&gt;
&gt;The Rep struct should be changed to inherit from FastAllocBase.
&gt;

If I inherit Rep from FastAllocBase it&apos;ll be no longer a POD and it can&apos;t be initalized with a C-style initializer list. (causes compile error)
Should I add new/delete member functions to Rep or use fastNew/fastDelete?

&gt;&gt; -    , arrayTable(new HashTable(JSC::arrayTable))
&gt;&gt; +    , arrayTable(fastNew&lt;HashTable&gt;(JSC::arrayTable))
&gt;
&gt;The HashTable struct should be changed to inherit from FastAllocBase.

I had the same problem with Rep. I&apos;ll check it again in the new patch.

&gt;&gt; -    class JSValue : Noncopyable {
&gt;&gt; +    class JSValue : Noncopyable, public WTF::FastAllocBase {
&gt;
&gt;No JSValue object or object of any class derived from it can be allocated with
&gt;a plain &quot;new&quot;. These objects are garbage-collected. So there&apos;s no need to add
&gt;the base class here.

Okay, I&apos;ll modify.

&gt;&gt; -class MainThreadInvoker : public QObject {
&gt;&gt; +class MainThreadInvoker : public QObject, public FastAllocBase {
&gt;
&gt;Is this class used with &quot;new&quot;? I couldn&apos;t find any place where it was.

new call: MainThreadInvoker: JavaScriptCore/wtf/qt/MainThreadQt.cpp: line 59
Qt&apos;s Q_GLOBAL_STATIC macro causes: MainThreadInvoker *x = new MainThreadInvoker;

&gt;&gt; -class ThreadCondition : Noncopyable {
&gt;&gt; +class ThreadCondition : Noncopyable, public WTF::FastAllocBase {
&gt;
&gt;I can&apos;t find any use of this class with &quot;new&quot;.

new call: WebCore/storage/DatabaseTask.cpp: line 74

&gt;&gt; -    class NullNode : public ExpressionNode {
&gt;&gt; +    class NullNode : public ExpressionNode, public WTF::FastAllocBase {
&gt;
&gt;We can avoid adding so much separate derivation of every node class from
&gt;FastAllocBase by making ParserRefCounted inherit from it.

Okay. I&apos;ll inherit ParserRefCounted. I didn&apos;t do this because there are some classes which inherited from ParserRefCounted but not constructed by new.

&gt;Given this is just a test, I think it&apos;s OK to just leave these classes alone.

Ok.

&gt;&gt; Index: WebKit/qt/tests/qwebframe/qwebframe.pro
&gt;&gt; Index: WebKit/qt/tests/qwebpage/qwebpage.pro
&gt;&gt;...
&gt;&gt; +LIBS += -L../../../../JavaScriptCore
&gt;&gt; +LIBS += -lJavaScriptCore
&gt;
&gt;Are you sure these are correct? Why wasn&apos;t this needed before now? It this a
&gt;good/reasonable new requirement?

We&apos;ll leave tests alone so it won&apos;t be needed.

&gt;I can&apos;t review all the rest of this. I think it&apos;s a mistake to make adoption of
&gt;this across the entire project one giant patch. It would be much smarter to
&gt;convert a class in JavaScriptCore and another in WebCore and get the kinks out
&gt;before adding the code to hundreds of files all at the same time.

Ok. First we&apos;ll produce a patch just for JavaScriptCore.

&gt;In general, I think we should put FastAllocBase into some base classes such as
&gt;RefCounted and thereby avoid having to explicitly put it in so many classes
&gt;individually, and in various other cases put it into a class as far up the
&gt;inheritance tree as possible.

Okay, but how far up? There are a lot of classes which are inherited from (for example) Noncopyable but only a part of them instantiated with &quot;new&quot;. And what can we do when the inheritance is private?

&gt;I&apos;m concerned that the patch has modifications to the Qt build system but not
&gt;others. Is that because you&apos;ve only tried this with the Qt build system, or is
&gt;there something Qt-specific? I think we should get the build system changes out
&gt;of the way first, so a small patch that just adds the dependency and gets the
&gt;build right would be good to do first before the giant patch.

We&apos;ve only tried this under linux-qt port. For the next version we need to modify the build system just for QtLauncher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99975</commentid>
    <comment_count>36</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-24 09:24:29 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; If I inherit Rep from FastAllocBase it&apos;ll be no longer a POD and it can&apos;t be
&gt; initalized with a C-style initializer list. (causes compile error)
&gt; Should I add new/delete member functions to Rep or use fastNew/fastDelete?

Probably fastNew/fastDelete. If we wanted to add new/delete member functions, I think we&apos;d want to do it with a macro, not writing it by hand.

&gt; Okay. I&apos;ll inherit ParserRefCounted. I didn&apos;t do this because there are some
&gt; classes which inherited from ParserRefCounted but not constructed by new.

I think we can be a bit liberal about adding FastAllocBase as a base class for various classes even if they aren&apos;t being used with new/delete. I don&apos;t think the inheritance will do any harm.

&gt; Okay, but how far up? There are a lot of classes which are inherited from (for
&gt; example) Noncopyable but only a part of them instantiated with &quot;new&quot;. And what
&gt; can we do when the inheritance is private?

Currently we inherit from Noncopyable privately because there&apos;s no difference between inheriting it privately and publicly. I think it would be fine to add FastAllocBase as a base class for Noncopyable, just for convenience, and then change inheritance of Noncopyable to be public inheritance -- it wasn&apos;t important to inherit from it privately, and it&apos;s reasonable to change it.

&gt; We&apos;ve only tried this under linux-qt port. For the next version we need to
&gt; modify the build system just for QtLauncher.

We&apos;ll want a version of this patch that tries to make all ports work, even if it&apos;s not tested with all of them. I suggest making a small patch that concentrates on the build issues of adding new source files and getting them compiled in all ports, before doing a larger patch that tries to adopt this class in all the relevant places.

It&apos;s easier to get things right if we do things in smaller pieces.

In particular, you want a small, easy-to-review patch that will exercise the issues. For example, a patch that adds the new files and adds one use of each aspect of the header in WebCore as well as in JavaScriptCore would be a good idea. Then a larger patch that simply adopts the mechanism more widely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100975</commentid>
    <comment_count>37</comment_count>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-12-01 22:33:14 -0800</bug_when>
    <thetext>I&apos;m working on a revision of the allocator code that addresses Darin&apos;s comments in https://bugs.webkit.org/show_bug.cgi?id=20422#c34. It might be useful to know that I have been working on the allocator implementation and its unit test, while Zoltan has been working on the application code to use it.

In the meantime, I have a response to three items.

    &gt;&gt; -  do_free(ptr);
    &gt;&gt; +  free(ptr);
    &gt;&gt;  }

    &gt; Do you really need to change this?

I believe, the former behavior is a bug, as it bypasses the InvokeDeleteHook mechanism. cfree is a sibling to free and a complement to calloc. Without the above fix, a call to calloc would result in a call to InvokeNewHook, but the eventual call to cfree would never call the InvokeDeleteHook.

    &gt;&gt;    if (new_size == 0) {
    &gt;&gt; -#ifndef WTF_CHANGES
    &gt;&gt; -    MallocHook::InvokeDeleteHook(old_ptr);
    &gt;&gt; -#endif
    &gt;&gt;      free(old_ptr);
    &gt;&gt;      return NULL;
    &gt;&gt;    }

    &gt; I don&apos;t understand what the value is of removing InvokeDeleteHook here.

The InvokeDeleteHook call is redundant and is called again within free. Aside from being less efficient, it complicates the user&apos;s implementation requirements and makes it harder to do validation since the user would have to keep track of pointers being &apos;double-deleted&apos;.

If for some reason people want to keep the existing (IMO buggy) behavior, then I can undo the above.

    &gt;&gt; I don&apos;t understand how you can store both the array size and
    &gt;&gt; the validation type in the same place; &quot;p&quot; and &quot;a.size&quot; both point
    &gt;&gt; to the same address. Maybe I&apos;m missing something obvious here.

They aren&apos;t stored in the same place. The validation type is stored prior
in memory to the array size. First the validation type is written in some
reserved prefix bytes, then the array size is written in its own reserved
prefix bytes. The array code doesn&apos;t care about the location of the
validation type bytes. The unit tests exercise this and execute OK, FWIW.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101244</commentid>
    <comment_count>38</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-03 12:39:34 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt;     &gt;&gt; -  do_free(ptr);
&gt;     &gt;&gt; +  free(ptr);
&gt;     &gt;&gt;  }
&gt; 
&gt;     &gt; Do you really need to change this?
&gt; 
&gt; I believe, the former behavior is a bug, as it bypasses the InvokeDeleteHook
&gt; mechanism. cfree is a sibling to free and a complement to calloc. Without the
&gt; above fix, a call to calloc would result in a call to InvokeNewHook, but the
&gt; eventual call to cfree would never call the InvokeDeleteHook.

OK. Lets fix this separately, then. Doesn&apos;t seem closely related to the rest of what&apos;s going on here.

&gt;     &gt;&gt;    if (new_size == 0) {
&gt;     &gt;&gt; -#ifndef WTF_CHANGES
&gt;     &gt;&gt; -    MallocHook::InvokeDeleteHook(old_ptr);
&gt;     &gt;&gt; -#endif
&gt;     &gt;&gt;      free(old_ptr);
&gt;     &gt;&gt;      return NULL;
&gt;     &gt;&gt;    }
&gt; 
&gt;     &gt; I don&apos;t understand what the value is of removing InvokeDeleteHook here.
&gt; 
&gt; The InvokeDeleteHook call is redundant and is called again within free. Aside
&gt; from being less efficient, it complicates the user&apos;s implementation
&gt; requirements and makes it harder to do validation since the user would have to
&gt; keep track of pointers being &apos;double-deleted&apos;.
&gt; 
&gt; If for some reason people want to keep the existing (IMO buggy) behavior, then
&gt; I can undo the above.

Same comment. Lets fix these without including all the other changes.

&gt;     &gt;&gt; I don&apos;t understand how you can store both the array size and
&gt;     &gt;&gt; the validation type in the same place; &quot;p&quot; and &quot;a.size&quot; both point
&gt;     &gt;&gt; to the same address. Maybe I&apos;m missing something obvious here.
&gt; 
&gt; They aren&apos;t stored in the same place. The validation type is stored prior
&gt; in memory to the array size. First the validation type is written in some
&gt; reserved prefix bytes, then the array size is written in its own reserved
&gt; prefix bytes. The array code doesn&apos;t care about the location of the
&gt; validation type bytes. The unit tests exercise this and execute OK, FWIW.

There are two ways to resolve this then:

    1) Make me smarter.
    2) Make the code easier to read.

Somehow I thought that &quot;p&quot; and &quot;a.size&quot; were the same address. I&apos;m just guessing, but there&apos;s probably a way to write this that makes it clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102218</commentid>
    <comment_count>39</comment_count>
      <attachid>25944</attachid>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-12-11 01:19:24 -0800</bug_when>
    <thetext>Created attachment 25944
JavaScriptCore FastMalloc-related patch.

This addresses Darin&apos;s comments in https://bugs.webkit.org/show_bug.cgi?id=20422#c34 and https://bugs.webkit.org/show_bug.cgi?id=20422#c38. This is merely the basic JavaScriptCore patch for memory allocation control and doesn&apos;t include changes to JavaScriptCore, WebCore, etc. to use this. That is to be done in a succeeding patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102219</commentid>
    <comment_count>40</comment_count>
      <attachid>25945</attachid>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2008-12-11 01:22:36 -0800</bug_when>
    <thetext>Created attachment 25945
Build file patch.

This is Zoltan Horvath&apos;s pbxproj/GNUmakefile.am/vcproj file patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104566</commentid>
    <comment_count>41</comment_count>
      <attachid>26460</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2009-01-06 06:46:20 -0800</bug_when>
    <thetext>Created attachment 26460
Updated build systems patch

I&apos;ve updated the build patch. Both patches works with latest revisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105149</commentid>
    <comment_count>42</comment_count>
      <attachid>25944</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-10 15:38:11 -0800</bug_when>
    <thetext>Comment on attachment 25944
JavaScriptCore FastMalloc-related patch.

The work looks good and about ready to land.

&gt; +            fastFree(p);  // We don&apos;t need to check for a null pointer; the compiler does this.

The comment is curious, because fastFree also checks for a null pointer. I&apos;m not really sure what we&apos;re saying with the comment.

&gt; +        void* p = fastMalloc(sizeof(T));
&gt; +
&gt; +        if (p) {
&gt; +            fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNew);
&gt; +            return ::new(p) T;
&gt; +        }
&gt; +
&gt; +        return 0;

In general in this project, we prefer the &quot;early return&quot; style, so we&apos;d check for null and return 0, then put the success case code in a straight line rather than nested in an if statement.

&gt; +    if(static_cast&lt;size_t&gt;(~0) - sizeof(AllocAlignmentInteger) &lt;= n)  // If overflow would occur...

We put a space after the if and before the &quot;(&quot; character.

It&apos;s OK to use static_cast&lt;size_t&gt;(~0), but it doesn&apos;t seem better than numeric_limits&lt;size_t&gt;::max() to me.

&gt; +    n += sizeof(AllocAlignmentInteger);
&gt; +    char* result = static_cast&lt;char*&gt;(malloc(n));

I think it&apos;s slightly better to write this as:

    char* result = static_cast&lt;char*&gt;(malloc(sizeof(AllocAlignmentInteger) + n));

rather than modifying the argument. On the minus side, it makes the line of code a little more complex, but on the plus side it avoids modifying an argument which can sometimes be confusing. I&apos;m also not sure that making the result be a char* is all that valuable, since we have to cast it with reinterpret_cast. If we made it a void* we could use static_cast instead.

&gt; +        *reinterpret_cast&lt;AllocAlignmentInteger*&gt;(result) = Internal::AllocTypeMalloc;
&gt; +        result += sizeof(AllocAlignmentInteger);

With void* this would be:

    *static_cast&lt;AllocAlignmentInteger*&gt;(result) = Internal::AllocTypeMalloc;
    result = static_cast&lt;AllocAlignmentInteger*&gt;(result) + 1;

Or:

    AllocAlignmentInteger* header = static_cast&lt;AllocAlignmentInteger*&gt;(result);
    *header = Internal::AllocTypeMalloc;
    result = header + 1;

&gt; +        AllocAlignmentInteger* pValue = Internal::fastMallocMatchValidationValue(p);
&gt; +        if (*pValue != Internal::AllocTypeMalloc)
&gt; +            Internal::fastMallocMatchFailed(p);
&gt; +        free(pValue);

We almost never use the &quot;Hungarian&quot; style where a varible is named &quot;pType&quot;, which you&apos;re using here. I&apos;d personally prefer a letter or a word, maybe &quot;header&quot;.

&gt; +    new_ptr = static_cast&lt;char*&gt;(new_ptr) + sizeof(AllocAlignmentInteger);

I don&apos;t see a good reason to involve char* here. I&apos;d use this:

    new_ptr = static_cast&lt;AllocAlignmentInteger*&gt;(new_ptr) + 1;

&gt; +            const AllocAlignmentInteger* pType = reinterpret_cast&lt;const AllocAlignmentInteger*&gt;(static_cast&lt;const char*&gt;(p) - sizeof(AllocAlignmentInteger));

Again, unnecessary use of char* and reinterpret_cast here.

    const AllocAlignmentInteger* pType = static_cast&lt;const AllocAlignmentInteger*&gt;(p) - 1;


&gt; +    // These could alternatively be inline functions which do nothing.
&gt; +    #define fastMallocMatchValidateMalloc(p, type)
&gt; +    #define fastMallocMatchValidateFree(p, type)

And they should be. We&apos;d prefer empty inline functions to macros for this sort of thing.

&gt;  /* ENABLE macro defaults */
&gt; +#if !defined(ENABLE_FAST_MALLOC_MATCH_VALIDATION)
&gt; +#define ENABLE_FAST_MALLOC_MATCH_VALIDATION 0
&gt; +#endif

Our platform header is really getting out of hand. A long list of things with no documentation about what they are! Not that your single addition makes it significantly worse.

I think there were just enough comments that I&apos;ll say review-, although I think this is in great shape and nearly ready to go. I don&apos;t think there&apos;s any one comment above that&apos;s important, but I&apos;m hoping you&apos;ll want to take at least one of my suggestions above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105150</commentid>
    <comment_count>43</comment_count>
      <attachid>25945</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-10 15:38:54 -0800</bug_when>
    <thetext>Comment on attachment 25945
Build file patch.

Please include the build file patch along with the cpp file patch and the ChangeLog next time around. Separate patches make it slightly harder for the committer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105151</commentid>
    <comment_count>44</comment_count>
      <attachid>26460</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-10 15:39:26 -0800</bug_when>
    <thetext>Comment on attachment 26460
Updated build systems patch

Looks fine. Ideally we want a single patch including the whole thing next time around.

I think we&apos;re getting really close!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107301</commentid>
    <comment_count>45</comment_count>
      <attachid>27097</attachid>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2009-01-28 00:51:55 -0800</bug_when>
    <thetext>Created attachment 27097
Updated FastMalloc patch.

We have an updated patch, which has the source and build file 
changes in one patch. Some comments, FWIW:

    &gt; +            fastFree(p);  // We don&apos;t need to check for a null pointer;
    the compiler does this.

    The comment is curious, because fastFree also checks for a null 
    pointer. I&apos;m not really sure what we&apos;re saying with the comment.

It has been removed. It didn&apos;t really need to be said.


    &gt; +        void* p = fastMalloc(sizeof(T));
    &gt; +
    &gt; +        if (p) {
    &gt; +            fastMallocMatchValidateMalloc(p, Internal::AllocTypeFastNew);
    &gt; +            return ::new(p) T;
    &gt; +        }
    &gt; +
    &gt; +        return 0;

    In general in this project, we prefer the &quot;early return&quot; style, 
    so we&apos;d check for null and return 0, then put the success case 
    code in a straight line rather than nested in an if statement.

I changed the FastAllocBase code to use the early return style. 
I might point out that the early return style results in slightly 
slower code with most compilers, including GCC and VC++. The reason 
is that branch prediction expects the &apos;true&apos; case to be executed
and optimizes for that. Code with if statements which are false pay 
a small branch prediction penalty. Some processors (e.g. PowerPC) 
have instruction variants which tell the processor to reverse this 
expectation, but you need to use things like GCC&apos;s __builtin_expect 
or assembly language to access them. I realize you&apos;re probably aware
of this already, but I&apos;m mentioning it because that&apos;s why in the past
I&apos;ve often written code that way.


    &gt; +    if(static_cast&lt;size_t&gt;(~0) - sizeof(AllocAlignmentInteger) &lt;= n)  
      // If overflow would occur...

    We put a space after the if and before the &quot;(&quot; character.

    It&apos;s OK to use static_cast&lt;size_t&gt;(~0), but it doesn&apos;t seem better 
    than numeric_limits&lt;size_t&gt;::max() to me.

OK. Done on both accounts.



    &gt; +    n += sizeof(AllocAlignmentInteger);
    &gt; +    char* result = static_cast&lt;char*&gt;(malloc(n));

    I think it&apos;s slightly better to write this as:

        char* result = static_cast&lt;char*&gt;(malloc(sizeof(AllocAlignmentInteger) +
    n));

    rather than modifying the argument. On the minus side, it makes 
    the line of code a little more complex, but on the plus side it 
    avoids modifying an argument which can sometimes be confusing. 

I changed the code to use the (sizeof(AllocAlignmentInteger) + n) form.

    I&apos;m also not sure that making the result be a char* is 
    all that valuable, since we have to cast it with reinterpret_cast. 
    If we made it a void* we could use static_cast instead.

    &gt; +        *reinterpret_cast&lt;AllocAlignmentInteger*&gt;(result) = 
         Internal::AllocTypeMalloc;
    &gt; +        result += sizeof(AllocAlignmentInteger);

    With void* this would be:

        *static_cast&lt;AllocAlignmentInteger*&gt;(result) = 
            Internal::AllocTypeMalloc;
        result = static_cast&lt;AllocAlignmentInteger*&gt;(result) + 1;

    Or:

        AllocAlignmentInteger* header = static_cast&lt;AllocAlignmentInteger*&gt;
            (result);
        *header = Internal::AllocTypeMalloc;
        result = header + 1;

OK. Done.


    &gt; +        AllocAlignmentInteger* pValue =
          Internal::fastMallocMatchValidationValue(p);
    &gt; +        if (*pValue != Internal::AllocTypeMalloc)
    &gt; +            Internal::fastMallocMatchFailed(p);
    &gt; +        free(pValue);

    We almost never use the &quot;Hungarian&quot; style where a varible is 
    named &quot;pType&quot;, which you&apos;re using here. I&apos;d personally prefer 
    a letter or a word, maybe &quot;header&quot;.

header seems fine. Done.


    &gt; +    new_ptr = static_cast&lt;char*&gt;(new_ptr) + 
        sizeof(AllocAlignmentInteger);

    I don&apos;t see a good reason to involve char* here. I&apos;d use this:

        new_ptr = static_cast&lt;AllocAlignmentInteger*&gt;(new_ptr) + 1;

OK. Done.


    &gt; + const AllocAlignmentInteger* pType = reinterpret_cast&lt;const 
         AllocAlignmentInteger*&gt;(static_cast&lt;const char*&gt;(p) - 
         sizeof(AllocAlignmentInteger));

    Again, unnecessary use of char* and reinterpret_cast here.

        const AllocAlignmentInteger* pType = static_cast&lt;const 
            AllocAlignmentInteger*&gt;(p) - 1;

Yep. The latter is significantly better. 


    &gt; +    // These could alternatively be inline functions which do nothing.
    &gt; +    #define fastMallocMatchValidateMalloc(p, type)
    &gt; +    #define fastMallocMatchValidateFree(p, type)

    And they should be. We&apos;d prefer empty inline functions 
    to macros for this sort of thing.

OK. Done.


    &gt;  /* ENABLE macro defaults */
    &gt; +#if !defined(ENABLE_FAST_MALLOC_MATCH_VALIDATION)
    &gt; +#define ENABLE_FAST_MALLOC_MATCH_VALIDATION 0
    &gt; +#endif

    Our platform header is really getting out of hand. 
    A long list of things with no documentation about what 
    they are! Not that your single addition makes it
    significantly worse.

I&apos;m a fan of more in-code documentation. I didn&apos;t put anything 
there because there wasn&apos;t existing similar documentation. 
I put a two line comment explaining what this feature does.


    I think there were just enough comments that I&apos;ll say 
    review-, although I think this is in great shape and 
    nearly ready to go. I don&apos;t think there&apos;s any one comment 
    above that&apos;s important, but I&apos;m hoping you&apos;ll want to take 
    at least one of my suggestions above.

I did them all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110659</commentid>
    <comment_count>46</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-02-23 16:38:47 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; I might point out that the early return style results in slightly 
&gt; slower code with most compilers, including GCC and VC++. The reason 
&gt; is that branch prediction expects the &apos;true&apos; case to be executed
&gt; and optimizes for that.

Very interesting. I did not know that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110660</commentid>
    <comment_count>47</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-02-23 16:40:23 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; Some processors (e.g. PowerPC) 
&gt; have instruction variants which tell the processor to reverse this 
&gt; expectation, but you need to use things like GCC&apos;s __builtin_expect 
&gt; or assembly language to access them.

That&apos;s not quite right. The compiler doesn&apos;t put the code in the same order you typed it, so the issue here is not about instruction variants for the processor. The compiler can order the code however it wants.

We do indeed use __builtin_expect in various places with the UNLIKELY and LIKELY macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110661</commentid>
    <comment_count>48</comment_count>
      <attachid>27097</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-02-23 16:42:28 -0800</bug_when>
    <thetext>Comment on attachment 27097
Updated FastMalloc patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111171</commentid>
    <comment_count>49</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-02-26 06:05:46 -0800</bug_when>
    <thetext>Congratulations  on getting this done!  Any ideas when this will be landing in the tree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113198</commentid>
    <comment_count>50</comment_count>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2009-03-11 10:51:10 -0700</bug_when>
    <thetext>I&apos;ll give this a couple of hours for any last-minute retractions, then land it this afternoon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113275</commentid>
    <comment_count>51</comment_count>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2009-03-11 17:44:08 -0700</bug_when>
    <thetext>OK, maybe not. With all these active patches, I&apos;m not positive which ones need landing. If you can let me know that, I&apos;ll get &apos;em in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113276</commentid>
    <comment_count>52</comment_count>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2009-03-11 17:45:12 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; OK, maybe not. With all these active patches, I&apos;m not positive which ones need
&gt; landing. If you can let me know that, I&apos;ll get &apos;em in.

More accurately, I&apos;m not positive that the last, r+ patch stands alone, and that all the others are obsolete rather than still in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113279</commentid>
    <comment_count>53</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-11 17:47:12 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; More accurately, I&apos;m not positive that the last, r+ patch stands alone, and
&gt; that all the others are obsolete rather than still in progress.

I&apos;m pretty sure that last one does stand alone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113337</commentid>
    <comment_count>54</comment_count>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2009-03-12 01:39:52 -0700</bug_when>
    <thetext>That&apos;s correct. 
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113464</commentid>
    <comment_count>55</comment_count>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2009-03-12 13:18:26 -0700</bug_when>
    <thetext>Sorry, this patch has suffered bitrot.  It no longer applies cleanly, and I&apos;m not confident I can manually patch it in correctly (especially the JSC XCode project). Paul, please refresh it and I&apos;ll land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116588</commentid>
    <comment_count>56</comment_count>
      <attachid>29272</attachid>
    <who name="Paul Pedriana">ppedriana</who>
    <bug_when>2009-04-06 01:21:12 -0700</bug_when>
    <thetext>Created attachment 29272
Same patch as before but updated to work with r42235 (April 6, 2009)

This is simply an updated patch which works with the latest trunk. The primary code of the patch is nearly unchanged from the previous version. The primary difference is that this new patch modifies the recently added TypeTraits.h instead of this patch creating TypeTraits.h itself. Thanks again to Zoltan Horvath for helping test this and making a build patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116620</commentid>
    <comment_count>57</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-04-06 09:22:49 -0700</bug_when>
    <thetext>Could be handled on landing, but
* The change in WebCore/ForwardingHeaders/wtf/TypeTraits.h looks wrong and seems like it should not be done (along with the corresponding ChangeLog).

* The // -*- mode: c++; c-basic-offset: 4 -*- at the top of JavaScriptCore/wtf/FastAllocBase.h isn&apos;t typical style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116622</commentid>
    <comment_count>58</comment_count>
      <attachid>29272</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-06 09:32:04 -0700</bug_when>
    <thetext>Comment on attachment 29272
Same patch as before but updated to work with r42235 (April 6, 2009)

I’ll clear the review flag since we’d ideally want a new patch without the two problems David Levin pointed out. If someone wants to fix those and land, that&apos;s OK; but if a non-committer wants to post a revised patch that would be good too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116655</commentid>
    <comment_count>59</comment_count>
      <attachid>29285</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2009-04-06 11:48:41 -0700</bug_when>
    <thetext>Created attachment 29285
Same patch as before, updated

&gt; * The change in WebCore/ForwardingHeaders/wtf/TypeTraits.h looks wrong and
&gt; seems like it should not be done (along with the corresponding ChangeLog).

Done.

&gt; * The // -*- mode: c++; c-basic-offset: 4 -*- at the top of
&gt; JavaScriptCore/wtf/FastAllocBase.h isn&apos;t typical style.

Done.

Three other smart correction in FastAllocBase.h: 
- in line 291: &quot;WTF::has_trivial_constructor&quot; replaced to  &quot;WTF::HasTrivialConstructor&quot; and 
&quot;WTF::has_trivial_destructor&quot; replaced to &quot;WTF::HasTrivialDestructor&quot;
- in line 347: &quot;WTF::has_trivial_destructor&quot; replaced to &quot;WTF::HasTrivialDestructor&quot;
- in line 396: &quot;WTF::has_trivial_destructor&quot; replaced to &quot;WTF::HasTrivialDestructor&quot;

Others are unchanged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116966</commentid>
    <comment_count>60</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-04-08 17:19:05 -0700</bug_when>
    <thetext>Working on landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116974</commentid>
    <comment_count>61</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-04-08 18:15:23 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/42344&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117028</commentid>
    <comment_count>62</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-09 05:30:53 -0700</bug_when>
    <thetext>I had to commit r42356 to fix the build with GCC after this patch. AFAICT checking for a given date in __GLIBCXX__ is not enough, you also have to check that C++0x is being used. I did this, but I&apos;m not sure if it&apos;s the ideal solution in this case, feel free to change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117888</commentid>
    <comment_count>63</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2009-04-17 02:07:03 -0700</bug_when>
    <thetext>The FastAllocBase class is in the trunk. The next step is to inherite every classes from FastAllocBase which has been instantiated by &apos;new&apos;. Darin mentioned before put FastAllocBase into inheritance tree as far up as possible. Is this still the convention? 

I think first we need to produce a patch for JavaScriptCore. Should I create a new bug report for this and file a patch for JSCore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117898</commentid>
    <comment_count>64</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-17 05:54:10 -0700</bug_when>
    <thetext>(In reply to comment #63)
&gt; The FastAllocBase class is in the trunk. The next step is to inherite every
&gt; classes from FastAllocBase which has been instantiated by &apos;new&apos;. Darin
&gt; mentioned before put FastAllocBase into inheritance tree as far up as possible.
&gt; Is this still the convention?

I think it&apos;s still the best approach, yes.

&gt; I think first we need to produce a patch for JavaScriptCore. Should I create a
&gt; new bug report for this and file a patch for JSCore?

I think the best next step would be to do a single class, not all of JavaScriptCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117912</commentid>
    <comment_count>65</comment_count>
      <attachid>29578</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2009-04-17 08:17:38 -0700</bug_when>
    <thetext>Created attachment 29578
proposed patch for HashTable inheritance

I&apos;ve inherited HashTable from FastAllocBase. (Instantiated by &apos;new&apos; in JavaScriptCore/runtime/JSGlobalData.cpp)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121234</commentid>
    <comment_count>66</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2009-05-14 02:07:25 -0700</bug_when>
    <thetext>I created a new bugreport for JavaScriptCore inheritance and I filed the HashTable patch there.
bug #25782 https://bugs.webkit.org/show_bug.cgi?id=25782</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22847</attachid>
            <date>2008-08-18 01:28:25 -0700</date>
            <delta_ts>2008-09-02 17:44:48 -0700</delta_ts>
            <desc>Implements operator new utilities</desc>
            <filename>New.h</filename>
            <type>text/plain</type>
            <size>14742</size>
            <attacher name="Paul Pedriana">ppedriana</attacher>
            
              <data encoding="base64">Ly8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCgoKI2lmbmRlZiBXVEZfTmV3
X2gKI2RlZmluZSBXVEZfTmV3X2gKCgovLyBQcm92aWRlcyBjdXN0b21pemFibGUgb3ZlcnJpZGVz
IG9mIGZhc3RNYWxsb2MvZmFzdEZyZWUgYW5kIG9wZXJhdG9yIG5ldy9kZWxldGUKLy8KLy8gUHJv
dmlkZWQgZnVuY3Rpb25hbGl0eToKLy8gICAgY2xhc3MgQWxsb2NCYXNleyAuLi4gfTsKLy8KLy8g
ICAgdm9pZCogTWFsbG9jKHNpemVfdCBuKQovLyAgICB2b2lkKiBaZXJvZWRNYWxsb2Moc2l6ZV90
IG4pCi8vICAgIHZvaWQqIENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRf
c2l6ZSkKLy8gICAgdm9pZCAgRnJlZSh2b2lkKiBwKQovLyAgICB2b2lkKiBSZWFsbG9jKHZvaWQq
IHAsIHNpemVfdCBuKQovLwovLyAgICBUKiAgICBOZXc8VD4oKTsKLy8gICAgVCogICAgTmV3QXJy
YXk8VD4oY291bnQpOwovLyAgICB2b2lkICBEZWxldGUoVCogcCk7Ci8vICAgIHZvaWQgIERlbGV0
ZUFycmF5KFQqIHApOwovLwovLyBFeGFtcGxlIHVzYWdlOgovLyAgICBjbGFzcyBXaWRnZXQgOiBw
dWJsaWMgQWxsb2NCYXNlIHsgLi4uIH07Ci8vCi8vICAgIGNoYXIqIHBDaGFyID0gTmV3PGNoYXI+
KCk7Ci8vICAgIERlbGV0ZShwQ2hhcik7Ci8vCi8vICAgIGNoYXIqIHBDaGFyQXJyYXkgPSBOZXdB
cnJheTxjaGFyPigzNyk7Ci8vICAgIERlbGV0ZUFycmF5KHBDaGFyQXJyYXkpOwovLwovLyAgICB2
b2lkKiogcFZvaWRQdHIgPSBOZXc8dm9pZCo+KCk7Ci8vICAgIERlbGV0ZShwVm9pZFB0cik7Ci8v
Ci8vICAgIHZvaWQqKiBwVm9pZFB0ckFycmF5ID0gTmV3QXJyYXk8dm9pZCo+KDM3KTsKLy8gICAg
RGVsZXRlQXJyYXkocFZvaWRQdHJBcnJheSk7Ci8vCi8vICAgIFBPRCogcFBPRCA9IE5ldzxQT0Q+
KCk7Ci8vICAgIERlbGV0ZShwUE9EKTsKLy8KLy8gICAgUE9EKiBwUE9EQXJyYXkgPSBOZXdBcnJh
eTxQT0Q+KDM3KTsKLy8gICAgRGVsZXRlQXJyYXkocFBPREFycmF5KTsKLy8KLy8gICAgT2JqZWN0
KiBwT2JqZWN0ID0gTmV3PE9iamVjdD4oKTsKLy8gICAgRGVsZXRlKHBPYmplY3QpOwovLwovLyAg
ICBPYmplY3QqIHBPYmplY3RBcnJheSA9IE5ld0FycmF5PE9iamVjdD4oMzcpOwovLyAgICBEZWxl
dGVBcnJheShwT2JqZWN0QXJyYXkpOwovLwoKCiNpbmNsdWRlIDxuZXc+CiNpbmNsdWRlIDxzdGRp
bnQuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgojaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KCgovLyBEZWZpbmUg
dHlwZSB0cmFpdHMgdGhhdCBhbGxvdyB1cyB0byBvcHRpbWl6ZSB0ZW1wbGF0ZWQgYXJyYXkgbmV3
L2RlbGV0ZS4KLy8gVGhlc2UgY291bGQgcG9zc2libHkgZ28gaW50byBhIHNlcGFyYXRlIGhlYWRl
ciBmaWxlIGlmIHVzZWZ1bC4KLy8gUmVjZW50IHZlcnNpb25zIG9mIEdDQydzIGxpYnN0ZGMrKyBh
bmQgVkMrKyBoYXZlIHN1cHBvcnQgZm9yIHR5cGUgdHJhaXRzLgovLyBUbyBkbzogSW5jbHVkZSBv
dGhlciBjb21waWxlcnMvbGlicmFyaWVzIHRoYXQgc3VwcG9ydCB0eXBlX3RyYWl0cy4KI2lmIChk
ZWZpbmVkKF9fR0xJQkNYWF9fKSAmJiAoX19HTElCQ1hYX18gPj0gMjAwNzA3MjQpKSB8fCAoZGVm
aW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE1MDApKQogICAgI2luY2x1ZGUgPHR5cGVf
dHJhaXRzPgoKICAgIG5hbWVzcGFjZSBXVEYgewogICAgICAgIHVzaW5nIHN0ZDo6aGFzX3RyaXZp
YWxfY29uc3RydWN0b3I7CiAgICAgICAgdXNpbmcgc3RkOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9y
OwogICAgfQoKI2Vsc2UKICAgIG5hbWVzcGFjZSBXVEYgewoKICAgICAgICAvLyBUaGlzIGNvbXBp
bGVyIGRvZXNuJ3QgcHJvdmlkZSB0eXBlIHRyYWl0cywgc28gd2UgcHJvdmlkZSBhIGJhc2ljIHNt
YWxsIHNldC4KICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCB2PgogICAgICAgIHN0cnVj
dCBpbnRlZ3JhbF9jb25zdGFudAogICAgICAgIHsKICAgICAgICAgICAgc3RhdGljIGNvbnN0IFQg
dmFsdWUgPSB2OwogICAgICAgICAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKICAgICAgICAgICAg
dHlwZWRlZiBpbnRlZ3JhbF9jb25zdGFudDxULCB2PiB0eXBlOwogICAgICAgIH07CgogICAgICAg
IHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4gIHRydWVfdHlwZTsKICAgICAg
ICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsIGZhbHNlPiBmYWxzZV90eXBlOwoKCiAg
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBmYWxzZV90eXBle307CiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yICA6IHB1YmxpYyBmYWxzZV90eXBle307CgogICAg
ICAgIC8vIEF0IGxlYXN0IGhhbmRsZSB0aGUgY2FzZSBvZiBzY2FsYXIgdHlwZXMuCiAgICAgICAg
Ly8gSWRlYWxseSB0aGlzIHdvdWxkIGluY2x1ZGUgdm9sYXRpbGUgdmFyaWF0aW9ucyBhcyB3ZWxs
LgogICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3Ry
dWN0b3I8VCo+ICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8VCo+ICAgOiBwdWJsaWMgdHJ1ZV90
eXBle307CgogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rv
cjxmbG9hdD4gICAgICAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBmbG9hdD4g
ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxkb3VibGU+ICAgICAgICAgICAgICAgICAgIDog
cHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlh
bF9jb25zdHJ1Y3Rvcjxjb25zdCBkb3VibGU+ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlw
ZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxs
b25nIGRvdWJsZT4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBsb25nIGRvdWJs
ZT4gICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25lZCBjaGFyPiAgICAgICAgICAgIDogcHVi
bGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBjaGFyPiAgICAgIDogcHVibGljIHRydWVfdHlwZXt9
OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNp
Z25lZCBzaG9ydD4gICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBzaG9y
dD4gICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25lZCBpbnQ+ICAgICAgICAgICAgIDogcHVibGlj
IHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25z
dHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBpbnQ+ICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9Owog
ICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25l
ZCBsb25nPiAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nPiAg
ICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25lZCBsb25nIGxvbmc+ICAgICAgIDogcHVibGljIHRy
dWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1
Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwogICAg
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgY2hh
cj4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgY2hhcj4gICAgICAg
IDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJp
dmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgc2hvcnQ+ICAgICAgICAgICAgIDogcHVibGljIHRydWVf
dHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rv
cjxjb25zdCBzaWduZWQgc2hvcnQ+ICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgaW50PiAg
ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgaW50PiAgICAgICAgIDog
cHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlh
bF9jb25zdHJ1Y3RvcjxzaWduZWQgbG9uZz4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlw
ZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxj
b25zdCBzaWduZWQgbG9uZz4gICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgbG9uZyBsb25n
PiAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgbG9uZyBsb25nPiAgIDogcHVi
bGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3Rvcjxib29sPiAgICAgICAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9
OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25z
dCBib29sPiAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxjaGFyPiAgICAgICAgICAgICAg
ICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBjaGFyPiAgICAgICAgICAgICAgIDogcHVibGlj
IHRydWVfdHlwZXt9OwogICAgICAgICNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChf
TkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKICAgICAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhh
c190cml2aWFsX2NvbnN0cnVjdG9yPHdjaGFyX3Q+ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVl
X3R5cGV7fTsKICAgICAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0
cnVjdG9yPGNvbnN0IHdjaGFyX3Q+ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKICAgICAg
ICAjZW5kaWYKCiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0
b3I8ZmxvYXQ+ICAgICAgICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKICAgICAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCBmbG9hdD4g
ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGRvdWJsZT4gICAgICAgICAgICAgICAgICAgOiBw
dWJsaWMgdHJ1ZV90eXBle307CiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2Rlc3RydWN0b3I8Y29uc3QgZG91YmxlPiAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7
fTsKICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxsb25n
IGRvdWJsZT4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGxvbmcgZG91YmxlPiAg
ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhh
c190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQgY2hhcj4gICAgICAgICAgICA6IHB1YmxpYyB0
cnVlX3R5cGV7fTsKICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1
Y3Rvcjxjb25zdCB1bnNpZ25lZCBjaGFyPiAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAg
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVkIHNo
b3J0PiAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CiAgICAgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgc2hvcnQ+ICAgICA6
IHB1YmxpYyB0cnVlX3R5cGV7fTsKICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfZGVzdHJ1Y3Rvcjx1bnNpZ25lZCBpbnQ+ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlw
ZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNv
bnN0IHVuc2lnbmVkIGludD4gICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CiAgICAgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQgbG9uZz4gICAg
ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nPiAgICAgIDogcHVibGlj
IHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CiAg
ICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgdW5z
aWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKICAgICAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxzaWduZWQgY2hhcj4gICAgICAgICAgICAg
IDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJp
dmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBjaGFyPiAgICAgICAgOiBwdWJsaWMgdHJ1ZV90
eXBle307CiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8
c2lnbmVkIHNob3J0PiAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKICAgICAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQgc2hv
cnQ+ICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBpbnQ+ICAgICAgICAgICAgICAgOiBwdWJs
aWMgdHJ1ZV90eXBle307CiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rl
c3RydWN0b3I8Y29uc3Qgc2lnbmVkIGludD4gICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsK
ICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxzaWduZWQg
bG9uZz4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nPiAgICAg
ICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190
cml2aWFsX2Rlc3RydWN0b3I8c2lnbmVkIGxvbmcgbG9uZz4gICAgICAgICA6IHB1YmxpYyB0cnVl
X3R5cGV7fTsKICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rv
cjxjb25zdCBzaWduZWQgbG9uZyBsb25nPiAgIDogcHVibGljIHRydWVfdHlwZXt9OwogICAgICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGJvb2w+ICAgICAgICAg
ICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CiAgICAgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgYm9vbD4gICAgICAgICAgICAgICA6IHB1
YmxpYyB0cnVlX3R5cGV7fTsKICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3RvcjxjaGFyPiAgICAgICAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9
OwogICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0
IGNoYXI+ICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CiAgICAgICAgI2lmICFk
ZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQogICAg
ICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx3Y2hhcl90
PiAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CiAgICAgICAgICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHdjaGFyX3Q+ICAgICAgICA6
IHB1YmxpYyB0cnVlX3R5cGV7fTsKICAgICAgICAjZW5kaWYKCiAgICB9IC8vIG5hbWVzcGFjZSBX
VEYKCiNlbmRpZgoKCgoKbmFtZXNwYWNlIFdURiB7CgoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KICAgIC8vIEFsbG9jQmFzZSBiYXNlIGNsYXNzCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CgogICAgY2xhc3MgQWxsb2NCYXNlIHsKICAgIHB1YmxpYzoKICAgICAgICB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90IHNpemUpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gZmFzdE1hbGxv
YyhzaXplKTsKICAgICAgICB9CgogICAgICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHAp
CiAgICAgICAgewogICAgICAgICAgICBmYXN0RnJlZShwKTsgIC8vIFdlIGRvbid0IG5lZWQgdG8g
Y2hlY2sgZm9yIE5VTEw7IHRoZSBjb21waWxlciBkb2VzIHRoaXMuCiAgICAgICAgfQoKICAgICAg
ICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkKICAgICAgICB7CiAgICAgICAgICAg
IHJldHVybiBmYXN0TWFsbG9jKHNpemUpOwogICAgICAgIH0KCiAgICAgICAgdm9pZCBvcGVyYXRv
ciBkZWxldGVbXSh2b2lkKiBwKQogICAgICAgIHsKICAgICAgICAgICAgZmFzdEZyZWUocCk7ICAv
LyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciBOVUxMOyB0aGUgY29tcGlsZXIgZG9lcyB0aGlz
LgogICAgICAgIH0KICAgIH07CgoKCgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgLy8g
TWFsbG9jIC8gRnJlZSAKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICBpbmxpbmUgdm9p
ZCogTWFsbG9jKHNpemVfdCBuKSB7CiAgICAgICAgcmV0dXJuIGZhc3RNYWxsb2Mobik7CiAgICB9
CgoKICAgIGlubGluZSB2b2lkKiBaZXJvZWRNYWxsb2Moc2l6ZV90IG4pIHsKICAgICAgICB2b2lk
KiBjb25zdCBwID0gZmFzdE1hbGxvYyhuKTsKICAgICAgICBpZiAocCkKICAgICAgICAgICAgbWVt
c2V0KHAsIDAsIG4pOwogICAgICAgIHJldHVybiBwOwogICAgfQoKCiAgICBpbmxpbmUgdm9pZCog
Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKSB7CiAgICAgICAg
cmV0dXJuIGZhc3RDYWxsb2Mobl9lbGVtZW50cywgZWxlbWVudF9zaXplKTsKICAgIH0KCgogICAg
aW5saW5lIHZvaWQgRnJlZSh2b2lkKiBwKSB7CiAgICAgICAgZmFzdEZyZWUocCk7CiAgICB9CgoK
ICAgIGlubGluZSB2b2lkKiBSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKSB7CiAgICAgICAgcmV0
dXJuIGZhc3RSZWFsbG9jKHAsIG4pOwogICAgfQoKCgoKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCiAgICAvLyBOZXcgLyBEZWxldGUKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgIGlubGluZSBUKiBOZXcoKSB7CiAgICAgICAgdm9pZCog
cCA9IGZhc3RNYWxsb2Moc2l6ZW9mKFQpKTsKCiAgICAgICAgaWYgKHApCiAgICAgICAgICAgIHJl
dHVybiA6Om5ldyhwKSBUOwoKICAgICAgICByZXR1cm4gTlVMTDsKICAgIH0KCgoKICAgIC8vIFRo
aXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBOZXdBcnJheS4KICAgIC8vIFRoaXMgaGFuZGxl
cyB0aGUgY2FzZSB3aGVyZWJ5IFQgaGFzIGEgdHJpdmlhbCBjdG9yIGFuZCBhIHRyaXZpYWwgZHRv
ci4KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIHRyaXZpYWxDdG9yLCBib29sIHRyaXZp
YWxEdG9yPgogICAgc3RydWN0IE5ld0FycmF5SW1wbCB7CiAgICAgICAgc3RhdGljIFQqIE5ld0Fy
cmF5KHNpemVfdCBjb3VudCkgewogICAgICAgICAgICByZXR1cm4gKFQqKWZhc3RNYWxsb2Moc2l6
ZW9mKFQpICogY291bnQpOwogICAgICAgIH0KICAgIH07CgogICAgLy8gVGhpcyBpcyBhIHN1cHBv
cnQgdGVtcGxhdGUgZm9yIE5ld0FycmF5LgogICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdo
ZXJlYnkgVCBoYXMgYSBub24tdHJpdmlhbCBjdG9yIGFuZCBhIHRyaXZpYWwgZHRvci4KICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICAgc3RydWN0IE5ld0FycmF5SW1wbDxULCBmYWxzZSwgdHJ1
ZT4gewogICAgICAgIHN0YXRpYyBUKiBOZXdBcnJheShzaXplX3QgY291bnQpIHsKICAgICAgICAg
ICAgdWludDY0X3QqIHAgPSAodWludDY0X3QqKWZhc3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSAr
IChzaXplb2YoVCkgKiBjb3VudCkpOwoKICAgICAgICAgICAgaWYgKHApIHsKICAgICAgICAgICAg
ICAgICpwKysgPSAodWludDY0X3QpY291bnQ7CgogICAgICAgICAgICAgICAgZm9yIChUKiBwT2Jq
ZWN0ID0gKFQqKXAsICpwT2JqZWN0RW5kID0gcE9iamVjdCArIGNvdW50OyBwT2JqZWN0ICE9IHBP
YmplY3RFbmQ7ICsrcE9iamVjdCkKICAgICAgICAgICAgICAgICAgICA6Om5ldyhwT2JqZWN0KSBU
OyAvLyBUbyBjb25zaWRlcjogaGFuZGxlIGN0b3IgZXhjZXB0aW9ucyBpZiBleGNlcHRpb25zIGFy
ZSBlbmFibGVkIGJ5IHRoZSBjb21waWxlci4KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0
dXJuIChUKilwOwogICAgICAgIH0KICAgIH07CgogICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVt
cGxhdGUgZm9yIE5ld0FycmF5LgogICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlYnkg
VCBoYXMgYSB0cml2aWFsIGN0b3IgYW5kIGEgbm9uLXRyaXZpYWwgZHRvci4KICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgc3RydWN0IE5ld0FycmF5SW1wbDxULCB0cnVlLCBmYWxzZT4gewog
ICAgICAgIHN0YXRpYyBUKiBOZXdBcnJheShzaXplX3QgY291bnQpIHsKICAgICAgICAgICAgdWlu
dDY0X3QqIHAgPSAodWludDY0X3QqKWZhc3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSArIChzaXpl
b2YoVCkgKiBjb3VudCkpOwoKICAgICAgICAgICAgaWYgKHApIHsKICAgICAgICAgICAgICAgICpw
KysgPSAodWludDY0X3QpY291bnQ7CiAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGNvbnN0
cnVjdCB0aGUgb2JqZWN0cyBpbiB0aGlzIGNhc2UuCiAgICAgICAgICAgIH0KCiAgICAgICAgICAg
IHJldHVybiAoVCopcDsKICAgICAgICB9CiAgICB9OwoKICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0
IHRlbXBsYXRlIGZvciBOZXdBcnJheS4KICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVy
ZWJ5IFQgaGFzIGEgbm9uLXRyaXZpYWwgY3RvciBhbmQgYSBub24tdHJpdmlhbCBkdG9yLgogICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICBzdHJ1Y3QgTmV3QXJyYXlJbXBsPFQsIGZhbHNlLCBm
YWxzZT4gewogICAgICAgIHN0YXRpYyBUKiBOZXdBcnJheShzaXplX3QgY291bnQpIHsKICAgICAg
ICAgICAgdWludDY0X3QqIHAgPSAodWludDY0X3QqKWZhc3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90
KSArIChzaXplb2YoVCkgKiBjb3VudCkpOwoKICAgICAgICAgICAgaWYgKHApIHsKICAgICAgICAg
ICAgICAgICpwKysgPSAodWludDY0X3QpY291bnQ7CgogICAgICAgICAgICAgICAgZm9yIChUKiBw
T2JqZWN0ID0gKFQqKXAsICpwT2JqZWN0RW5kID0gcE9iamVjdCArIGNvdW50OyBwT2JqZWN0ICE9
IHBPYmplY3RFbmQ7ICsrcE9iamVjdCkKICAgICAgICAgICAgICAgICAgICA6Om5ldyhwT2JqZWN0
KSBUOyAvLyBUbyBjb25zaWRlcjogaGFuZGxlIGN0b3IgZXhjZXB0aW9ucyBpZiBleGNlcHRpb25z
IGFyZSBlbmFibGVkIGJ5IHRoZSBjb21waWxlci4KICAgICAgICAgICAgfQoKICAgICAgICAgICAg
cmV0dXJuIChUKilwOwogICAgICAgIH0KICAgIH07CgoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICAgaW5saW5lIFQqIE5ld0FycmF5KHNpemVfdCBjb3VudCkgewogICAgICAgIHJldHVybiBO
ZXdBcnJheUltcGw8VCwgV1RGOjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxUPjo6dmFsdWUsIFdU
Rjo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPjo6dmFsdWU+OjpOZXdBcnJheShjb3VudCk7CiAg
ICB9CgoKCgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICBpbmxpbmUgdm9pZCBEZWxldGUo
VCogcCkgewogICAgICAgIGlmIChwKSB7Ly8gQXMgcGVyIHRoZSBDKysgc3RhbmRhcmQsIHRlc3Qg
Zm9yIE5VTEwuCiAgICAgICAgICAgIHAtPn5UKCk7CiAgICAgICAgICAgIGZhc3RGcmVlKHApOwog
ICAgICAgIH0KICAgIH0KCgogICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIERl
bGV0ZUFycmF5LgogICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlYnkgVCBoYXMgYSB0
cml2aWFsIGR0b3IuCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCB0cml2aWFsRHRvcj4K
ICAgIHN0cnVjdCBEZWxldGVBcnJheUltcGwgewogICAgICAgIHN0YXRpYyB2b2lkIERlbGV0ZUFy
cmF5KHZvaWQqIHApIHsKICAgICAgICAgICAgaWYgKHApIHsgLy8gQXMgcGVyIHRoZSBDKysgc3Rh
bmRhcmQsIHRlc3QgZm9yIE5VTEwuCiAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGRlc3Ry
dWN0IHRoZSBvYmplY3RzIGluIHRoaXMgY2FzZS4KICAgICAgICAgICAgICAgIGZhc3RGcmVlKHAp
OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAvLyBUaGlzIGlzIGEgc3VwcG9y
dCB0ZW1wbGF0ZSBmb3IgRGVsZXRlQXJyYXkuCiAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ug
d2hlcmVieSBUIGhhcyBhIG5vbi10cml2aWFsIGR0b3IuCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KICAgIHN0cnVjdCBEZWxldGVBcnJheUltcGw8VCwgZmFsc2U+IHsKICAgICAgICBzdGF0aWMg
dm9pZCBEZWxldGVBcnJheShUKiBwKSB7CiAgICAgICAgICAgIGlmIChwKSB7IC8vIEFzIHBlciB0
aGUgQysrIHN0YW5kYXJkLCB0ZXN0IGZvciBOVUxMLgogICAgICAgICAgICAgICAgVCogcEVuZCA9
IHAgKyAqKCh1aW50NjRfdCopcCAtIDEpOwogICAgICAgICAgICAgICAgd2hpbGUocEVuZC0tICE9
IHApCiAgICAgICAgICAgICAgICAgICAgcEVuZC0+flQoKTsKCiAgICAgICAgICAgICAgICBmYXN0
RnJlZSgodm9pZCopKCh1aW50NjRfdCopcCAtIDEpKTsKICAgICAgICAgICAgfQogICAgICAgIH0K
ICAgIH07CgoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgdm9pZCBEZWxldGVBcnJheShU
KiBwKSB7CiAgICAgICAgRGVsZXRlQXJyYXlJbXBsPFQsIFdURjo6aGFzX3RyaXZpYWxfZGVzdHJ1
Y3RvcjxUPjo6dmFsdWU+OjpEZWxldGVBcnJheShwKTsKICAgIH0KCgp9IC8vIG5hbWVzcGFjZSBX
VEYKCgojZW5kaWYgLy8gV1RGX05ld19oCgoKCgoKCgoKCgoK
</data>
<flag name="review"
          id="10155"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22848</attachid>
            <date>2008-08-18 01:29:19 -0700</date>
            <delta_ts>2008-09-02 17:47:16 -0700</delta_ts>
            <desc>Unit test for New.h</desc>
            <filename>OperatorNewTest.cpp</filename>
            <type>text/plain</type>
            <size>5423</size>
            <attacher name="Paul Pedriana">ppedriana</attacher>
            
              <data encoding="base64">Ly8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotDQoNCg0KI2luY2x1ZGUgPHd0
Zi9OZXcuaD4NCiNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPg0KDQoNCg0KLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLw0KLy8gSW5oZXJpdGVkDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCmNsYXNz
IEluaGVyaXRlZCA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZQ0Kew0KcHVibGljOg0KICAgIHN0YXRp
YyBpbnQgY3RvckNvdW50Ow0KICAgIHN0YXRpYyBpbnQgZHRvckNvdW50Ow0KDQogICAgaW50IHg7
DQoNCiAgICBJbmhlcml0ZWQoKSB7ICsrY3RvckNvdW50OyB9DQogICAgSW5oZXJpdGVkKGNvbnN0
IEluaGVyaXRlZCYpIHsgKytjdG9yQ291bnQ7IH0NCiAgIH5Jbmhlcml0ZWQoKSB7ICsrZHRvckNv
dW50OyB9DQogICAgSW5oZXJpdGVkJiBvcGVyYXRvciA9KGNvbnN0IEluaGVyaXRlZCYpIHsgcmV0
dXJuICp0aGlzOyB9DQp9Ow0KDQppbnQgSW5oZXJpdGVkOjpjdG9yQ291bnQgPSAwOw0KaW50IElu
aGVyaXRlZDo6ZHRvckNvdW50ID0gMDsNCg0KDQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8v
IFBPRA0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQpzdHJ1Y3QgUE9EDQp7DQogICAgaW50IHg7
DQp9Ow0KDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy8gT2JqZWN0DQovLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vDQoNCmNsYXNzIE9iamVjdA0Kew0KcHVibGljOg0KICAgIHN0YXRpYyBpbnQg
Y3RvckNvdW50Ow0KICAgIHN0YXRpYyBpbnQgZHRvckNvdW50Ow0KDQogICAgaW50IHg7DQoNCiAg
ICBPYmplY3QoKSB7ICsrY3RvckNvdW50OyB9DQogICAgT2JqZWN0KGNvbnN0IE9iamVjdCYpIHsg
KytjdG9yQ291bnQ7IH0NCiAgIH5PYmplY3QoKSB7ICsrZHRvckNvdW50OyB9DQogICAgT2JqZWN0
JiBvcGVyYXRvciA9KGNvbnN0IE9iamVjdCYpIHsgcmV0dXJuICp0aGlzOyB9DQp9Ow0KDQppbnQg
T2JqZWN0OjpjdG9yQ291bnQgPSAwOw0KaW50IE9iamVjdDo6ZHRvckNvdW50ID0gMDsNCg0KDQoN
Ci8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vIFZlcmlmeUlzQWxpZ25lZA0KLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLw0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCmJvb2wgVmVyaWZ5SXNBbGlnbmVk
KFQqIHApDQp7DQogICAgY29uc3QgYm9vbCBpc0FsaWduZWQgPSAoKHNpemVfdCkoKCgodWludHB0
cl90KXAgXiAoKHVpbnRwdHJfdClwIC0gMSkpID4+IDEpICsgMSkgPj0gc2l6ZW9mKFQpKTsNCiAg
ICBBU1NFUlQoaXNBbGlnbmVkKTsNCiAgICByZXR1cm4gaXNBbGlnbmVkOw0KfQ0KDQoNCg0KDQov
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vDQovLyBBc3NlcnQgdGhhdCBnbG9iYWwgbmV3L2RlbGV0ZSBh
cmUgbmV2ZXIgY2FsbGVkLg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQp2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90KSB0aHJvdygpIHsNCiAgICBBU1NFUlQoZmFsc2UpOw0KICAgIHJldHVybiBO
VUxMOw0KfQ0KDQp2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKikgew0KICAgIEFTU0VSVChmYWxz
ZSk7DQp9DQoNCnZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCkgdGhyb3coKSB7DQogICAgQVNT
RVJUKGZhbHNlKTsNCiAgICByZXR1cm4gTlVMTDsNCn0NCg0Kdm9pZCBvcGVyYXRvciBkZWxldGVb
XSh2b2lkKikgew0KICAgIEFTU0VSVChmYWxzZSk7DQp9DQoNCg0KDQovLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vDQovLyBUZXN0V1RGTmV3DQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQpib29sIFRlc3RX
VEZOZXcoKTsNCg0KYm9vbCBUZXN0V1RGTmV3KCkNCnsNCiAgICB1c2luZyBuYW1lc3BhY2UgV1RG
Ow0KDQogICAgYm9vbCAgIHN1Y2Nlc3MgPSB0cnVlOw0KICAgIHNpemVfdCBpOw0KICAgIHZvaWQq
ICBwOw0KDQogICAgLy8gQWxsb2NCYXNlDQogICAgQWxsb2NCYXNlKiBwQWxsb2NCYXNlID0gbmV3
IEFsbG9jQmFzZTsNCiAgICBWZXJpZnlJc0FsaWduZWQocEFsbG9jQmFzZSk7DQogICAgZGVsZXRl
IHBBbGxvY0Jhc2U7DQoNCiAgICBBbGxvY0Jhc2UqIHBBbGxvY0Jhc2VBcnJheSA9IG5ldyBBbGxv
Y0Jhc2VbMzddOw0KICAgIFZlcmlmeUlzQWxpZ25lZChwQWxsb2NCYXNlQXJyYXkpOw0KICAgIGRl
bGV0ZVtdIHBBbGxvY0Jhc2VBcnJheTsNCg0KDQogICAgLy8gQWxsb2NCYXNlIC8gSW5oZXJpdGVk
DQogICAgSW5oZXJpdGVkKiBwSW5oZXJpdGVkID0gbmV3IEluaGVyaXRlZDsNCiAgICBWZXJpZnlJ
c0FsaWduZWQocEluaGVyaXRlZCk7DQogICAgcEluaGVyaXRlZC0+eCA9IDE7DQogICAgZGVsZXRl
IHBJbmhlcml0ZWQ7DQoNCiAgICBJbmhlcml0ZWQqIHBJbmhlcml0ZWRBcnJheSA9IG5ldyBJbmhl
cml0ZWRbMzddOw0KICAgIFZlcmlmeUlzQWxpZ25lZChwSW5oZXJpdGVkQXJyYXkpOw0KICAgIGZv
cihpID0gMDsgaSA8IDM3OyArK2kpDQogICAgICAgIHBJbmhlcml0ZWRBcnJheVtpXS54ID0gMTsN
CiAgICBkZWxldGVbXSBwSW5oZXJpdGVkQXJyYXk7DQoNCiAgICBBU1NFUlQoKEluaGVyaXRlZDo6
Y3RvckNvdW50ID09IDM4KSAmJiAoSW5oZXJpdGVkOjpkdG9yQ291bnQgPT0gMzgpKTsNCiAgICBz
dWNjZXNzID09IHN1Y2Nlc3MgJiYgKChJbmhlcml0ZWQ6OmN0b3JDb3VudCA9PSAzOCkgJiYgKElu
aGVyaXRlZDo6ZHRvckNvdW50ID09IDM4KSk7DQoNCg0KICAgIC8vIE1hbGxvYw0KICAgIHAgPSBN
YWxsb2MoMzcpOw0KICAgIG1lbXNldChwLCAxLCAzNyk7DQogICAgRnJlZShwKTsNCg0KDQogICAg
Ly8gUmVhbGxvYw0KICAgIHAgPSBNYWxsb2MoMzcpOw0KICAgIG1lbXNldChwLCAxLCAzNyk7DQog
ICAgcCA9IFJlYWxsb2MocCwgNDApOw0KICAgIGZvcihpID0gMDsgaSA8IDM3OyArK2kpDQogICAg
ICAgIEFTU0VSVCgqKGNoYXIqKXAgPT0gMSk7DQogICAgRnJlZShwKTsNCg0KDQogICAgLy8gUmVh
bGxvYw0KICAgIHAgPSBSZWFsbG9jKE5VTEwsIDM3KTsNCiAgICBtZW1zZXQocCwgMSwgMzcpOw0K
ICAgIEZyZWUocCk7DQoNCg0KICAgIC8vIFplcm9lZE1hbGxvYw0KICAgIHAgPSBaZXJvZWRNYWxs
b2MoMzcpOw0KICAgIGZvcihpID0gMDsgaSA8IDM3OyArK2kpDQogICAgICAgIEFTU0VSVCgqKGNo
YXIqKXAgPT0gMCk7DQogICAgRnJlZShwKTsNCg0KDQogICAgLy8gQ2FsbG9jDQogICAgcCA9IENh
bGxvYygzLCAzNyk7DQogICAgZm9yKGkgPSAwOyBpIDwgKDMgKiAzNyk7ICsraSkNCiAgICAgICAg
QVNTRVJUKCooY2hhciopcCA9PSAwKTsNCiAgICBGcmVlKHApOw0KDQoNCiAgICAvLyBjaGFyDQog
ICAgY2hhciogcENoYXIgPSBOZXc8Y2hhcj4oKTsNCiAgICBEZWxldGUocENoYXIpOw0KDQogICAg
Y2hhciogcENoYXJBcnJheSA9IE5ld0FycmF5PGNoYXI+KDM3KTsNCiAgICBmb3IoaSA9IDA7IGkg
PCAzNzsgKytpKQ0KICAgICAgICBwQ2hhckFycmF5W2ldID0gMTsNCiAgICBEZWxldGVBcnJheShw
Q2hhckFycmF5KTsNCg0KDQogICAgLy8gZG91YmxlDQogICAgZG91YmxlKiBwRG91YmxlID0gTmV3
PGRvdWJsZT4oKTsNCiAgICBWZXJpZnlJc0FsaWduZWQocERvdWJsZSk7DQogICAgKnBEb3VibGUg
PSAxOw0KICAgIERlbGV0ZShwRG91YmxlKTsNCg0KICAgIGRvdWJsZSogcERvdWJsZUFycmF5ID0g
TmV3QXJyYXk8ZG91YmxlPigzNyk7DQogICAgVmVyaWZ5SXNBbGlnbmVkKHBEb3VibGVBcnJheSk7
DQogICAgZm9yKGkgPSAwOyBpIDwgMzc7ICsraSkNCiAgICAgICAgcERvdWJsZUFycmF5W2ldID0g
MTsNCiAgICBEZWxldGVBcnJheShwRG91YmxlQXJyYXkpOw0KDQoNCiAgICAvLyB2b2lkKg0KICAg
IHZvaWQqKiBwVm9pZFB0ciA9IE5ldzx2b2lkKj4oKTsNCiAgICBEZWxldGUocFZvaWRQdHIpOw0K
DQogICAgdm9pZCoqIHBWb2lkUHRyQXJyYXkgPSBOZXdBcnJheTx2b2lkKj4oMzcpOw0KICAgIGZv
cihpID0gMDsgaSA8IDM3OyArK2kpDQogICAgICAgIHBWb2lkUHRyQXJyYXlbaV0gPSBOVUxMOw0K
ICAgIERlbGV0ZUFycmF5KHBWb2lkUHRyQXJyYXkpOw0KDQoNCiAgICAvLyBQT0QNCiAgICBQT0Qq
IHBQT0QgPSBOZXc8UE9EPigpOw0KICAgIFZlcmlmeUlzQWxpZ25lZChwUE9EKTsNCiAgICBwUE9E
LT54ID0gMTsNCiAgICBEZWxldGUocFBPRCk7DQoNCiAgICBQT0QqIHBQT0RBcnJheSA9IE5ld0Fy
cmF5PFBPRD4oMzcpOw0KICAgIFZlcmlmeUlzQWxpZ25lZChwUE9EQXJyYXkpOw0KICAgIGZvcihp
ID0gMDsgaSA8IDM3OyArK2kpDQogICAgICAgIHBQT0RBcnJheVtpXS54ID0gMTsNCiAgICBEZWxl
dGVBcnJheShwUE9EQXJyYXkpOw0KDQoNCiAgICAvLyBPYmplY3QNCiAgICBPYmplY3QqIHBPYmpl
Y3QgPSBOZXc8T2JqZWN0PigpOw0KICAgIFZlcmlmeUlzQWxpZ25lZChwT2JqZWN0KTsNCiAgICBw
T2JqZWN0LT54ID0gMTsNCiAgICBEZWxldGUocE9iamVjdCk7DQoNCiAgICBPYmplY3QqIHBPYmpl
Y3RBcnJheSA9IE5ld0FycmF5PE9iamVjdD4oMzcpOw0KICAgIFZlcmlmeUlzQWxpZ25lZChwT2Jq
ZWN0QXJyYXkpOw0KICAgIGZvcihpID0gMDsgaSA8IDM3OyArK2kpDQogICAgICAgIHBPYmplY3RB
cnJheVtpXS54ID0gMTsNCiAgICBEZWxldGVBcnJheShwT2JqZWN0QXJyYXkpOw0KDQogICAgQVNT
RVJUKChPYmplY3Q6OmN0b3JDb3VudCA9PSAzOCkgJiYgKE9iamVjdDo6ZHRvckNvdW50ID09IDM4
KSk7DQogICAgc3VjY2VzcyA9PSBzdWNjZXNzICYmICgoT2JqZWN0OjpjdG9yQ291bnQgPT0gMzgp
ICYmIChPYmplY3Q6OmR0b3JDb3VudCA9PSAzOCkpOw0KDQogICAgcmV0dXJuIHN1Y2Nlc3M7DQp9
DQoNCg0KDQo=
</data>
<flag name="review"
          id="10156"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23132</attachid>
            <date>2008-09-02 17:44:48 -0700</date>
            <delta_ts>2008-11-20 21:19:18 -0800</delta_ts>
            <desc>Implements a new file: JavaScriptCore/wtf/New.h.</desc>
            <filename>WTFNewPatch.txt</filename>
            <type>text/plain</type>
            <size>17228</size>
            <attacher name="Paul Pedriana">ppedriana</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM2MDI5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDgtMDkt
MDIgIFBhdWwgUGVkcmlhbmEgPHdlYmtpdEBwZWRyaWFuYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvTmV3Lmg6IEFkZGVkLgorICAg
ICAgICAoV1RGOjopOgorICAgICAgICAoV1RGOjpBbGxvY0Jhc2U6Om9wZXJhdG9yIG5ldyk6Cisg
ICAgICAgIChXVEY6OkFsbG9jQmFzZTo6b3BlcmF0b3IgZGVsZXRlKToKKyAgICAgICAgKFdURjo6
QWxsb2NCYXNlOjpvcGVyYXRvciBuZXdbXSk6CisgICAgICAgIChXVEY6OkFsbG9jQmFzZTo6b3Bl
cmF0b3IgZGVsZXRlW10pOgorICAgICAgICAoV1RGOjpuZXdPYmplY3QpOgorICAgICAgICAoV1RG
OjpXVEZJbnRlcm5hbDo6TmV3QXJyYXlJbXBsOjpuZXdBcnJheSk6CisgICAgICAgIChXVEY6OldU
RkludGVybmFsOjopOgorICAgICAgICAoV1RGOjpuZXdBcnJheSk6CisgICAgICAgIChXVEY6OmRl
bGV0ZU9iamVjdCk6CisgICAgICAgIChXVEY6OldURkludGVybmFsOjpEZWxldGVBcnJheUltcGw6
OmRlbGV0ZUFycmF5KToKKyAgICAgICAgKFdURjo6ZGVsZXRlQXJyYXkpOgorCiAyMDA4LTA5LTAy
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxk
IGZpeGVzCkluZGV4OiB3dGYvTmV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd3RmL05ldy5oCShyZXZpc2lv
biAwKQorKysgd3RmL05ldy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1MiBAQAorLy8gLSot
IG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggUGF1bCBQZWRyaWFuYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdURl9OZXdf
aAorI2RlZmluZSBXVEZfTmV3X2gKKworLy8gUHJvdmlkZXMgY3VzdG9taXphYmxlIG92ZXJyaWRl
cyBvZiBmYXN0TWFsbG9jL2Zhc3RGcmVlIGFuZCBvcGVyYXRvciBuZXcvZGVsZXRlCisvLworLy8g
UHJvdmlkZWQgZnVuY3Rpb25hbGl0eToKKy8vICAgIG5hbWVzcGFjZSBXVEYgeyAKKy8vICAgICAg
ICBjbGFzcyBBbGxvY0Jhc2U7CisvLworLy8gICAgICAgIFQqICAgIG5ld09iamVjdDxUPigpOwor
Ly8gICAgICAgIFQqICAgIG5ld0FycmF5PFQ+KGNvdW50KTsKKy8vICAgICAgICB2b2lkICBkZWxl
dGVPYmplY3QoVCogcCk7CisvLyAgICAgICAgdm9pZCAgZGVsZXRlQXJyYXkoVCogcCk7CisvLyAg
ICB9CisvLworLy8gRXhhbXBsZSB1c2FnZToKKy8vICAgIGNsYXNzIFdpZGdldCA6IHB1YmxpYyBB
bGxvY0Jhc2UgeyAuLi4gfTsKKy8vCisvLyAgICBjaGFyKiBjaGFyUHRyID0gbmV3T2JqZWN0PGNo
YXI+KCk7CisvLyAgICBkZWxldGVPYmplY3QoY2hhclB0cik7CisvLworLy8gICAgY2hhciogY2hh
ckFycmF5UHRyID0gbmV3QXJyYXk8Y2hhcj4oMzcpOworLy8gICAgZGVsZXRlQXJyYXkoY2hhckFy
cmF5UHRyKTsKKy8vCisvLyAgICB2b2lkKiogdm9pZFB0clB0ciA9IG5ld09iamVjdDx2b2lkKj4o
KTsKKy8vICAgIGRlbGV0ZU9iamVjdCh2b2lkUHRyUHRyKTsKKy8vCisvLyAgICB2b2lkKiogdm9p
ZFB0ckFycmF5UHRyID0gbmV3QXJyYXk8dm9pZCo+KDM3KTsKKy8vICAgIGRlbGV0ZUFycmF5KHZv
aWRQdHJBcnJheVB0cik7CisvLworLy8gICAgUE9EKiBwb2RQdHIgPSBuZXdPYmplY3Q8UE9EPigp
OworLy8gICAgZGVsZXRlT2JqZWN0KHBvZFB0cik7CisvLworLy8gICAgUE9EKiBwb2RBcnJheVB0
ciA9IG5ld0FycmF5PFBPRD4oMzcpOworLy8gICAgZGVsZXRlQXJyYXkocG9kQXJyYXlQdHIpOwor
Ly8KKy8vICAgIE9iamVjdCogb2JqZWN0UHRyID0gbmV3T2JqZWN0PE9iamVjdD4oKTsKKy8vICAg
IGRlbGV0ZU9iamVjdChvYmplY3RQdHIpOworLy8KKy8vICAgIE9iamVjdCogb2JqZWN0QXJyYXlQ
dHIgPSBuZXdBcnJheTxPYmplY3Q+KDM3KTsKKy8vICAgIGRlbGV0ZUFycmF5KG9iamVjdEFycmF5
UHRyKTsKKy8vCisKKyNpbmNsdWRlIDxuZXc+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVk
ZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCisvLyBEZWZpbmUgdHlwZSB0cmFp
dHMgdGhhdCBhbGxvdyB1cyB0byBvcHRpbWl6ZSB0ZW1wbGF0ZWQgYXJyYXkgbmV3L2RlbGV0ZS4K
Ky8vIFRoZXNlIGNvdWxkIHBvc3NpYmx5IGdvIGludG8gYSBzZXBhcmF0ZSBoZWFkZXIgZmlsZSBp
ZiB1c2VmdWwuCisvLyBSZWNlbnQgdmVyc2lvbnMgb2YgR0NDJ3MgbGlic3RkYysrIGFuZCBWQysr
IGhhdmUgc3VwcG9ydCBmb3IgdHlwZSB0cmFpdHMuCisvLyBUbyBkbzogSW5jbHVkZSBvdGhlciBj
b21waWxlcnMvbGlicmFyaWVzIHRoYXQgc3VwcG9ydCB0eXBlX3RyYWl0cy4KKy8vIFRvIGNvbnNp
ZGVyOiBTaG91bGQgdGhpcyBnbyBpbnRvIGEgc2VwYXJhdGUgaGVhZGVyIGZpbGU/CisjaWYgKGRl
ZmluZWQoX19HTElCQ1hYX18pICYmIChfX0dMSUJDWFhfXyA+PSAyMDA3MDcyNCkpIHx8IChkZWZp
bmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTUwMCkpCisgICAgI2luY2x1ZGUgPHR5cGVf
dHJhaXRzPgorCisgICAgbmFtZXNwYWNlIFdURiB7CisgICAgICAgIHVzaW5nIHN0ZDo6aGFzX3Ry
aXZpYWxfY29uc3RydWN0b3I7CisgICAgICAgIHVzaW5nIHN0ZDo6aGFzX3RyaXZpYWxfZGVzdHJ1
Y3RvcjsKKyAgICB9CisKKyNlbHNlCisgICAgbmFtZXNwYWNlIFdURiB7CisKKyAgICAgICAgLy8g
VGhpcyBjb21waWxlciBkb2Vzbid0IHByb3ZpZGUgdHlwZSB0cmFpdHMsIHNvIHdlIHByb3ZpZGUg
YSBiYXNpYyBzbWFsbCBzZXQuCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBUIHY+Cisg
ICAgICAgIHN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudCB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVCB2YWx1ZSA9IHY7CisgICAgICAgICAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKyAgICAg
ICAgICAgIHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8VCwgdj4gdHlwZTsKKyAgICAgICAgfTsK
KworICAgICAgICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+ICB0cnVlX3R5
cGU7CisgICAgICAgIHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+IGZhbHNl
X3R5cGU7CisKKworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGhhc190cml2
aWFsX2NvbnN0cnVjdG9yIDogcHVibGljIGZhbHNlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yICA6IHB1YmxpYyBmYWxz
ZV90eXBle307CisKKyAgICAgICAgLy8gQXQgbGVhc3QgaGFuZGxlIHRoZSBjYXNlIG9mIHNjYWxh
ciB0eXBlcy4KKyAgICAgICAgLy8gSWRlYWxseSB0aGlzIHdvdWxkIGluY2x1ZGUgdm9sYXRpbGUg
dmFyaWF0aW9ucyBhcyB3ZWxsLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0
IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPFQqPiAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAg
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxU
Kj4gICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8ZmxvYXQ+ICAgICAgICAgICAgICAgICAgICA6IHB1Ymxp
YyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Nv
bnN0cnVjdG9yPGNvbnN0IGZsb2F0PiAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307
CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxkb3Vi
bGU+ICAgICAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgZG91YmxlPiAgICAg
ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGxvbmcgZG91YmxlPiAgICAgICAgICAgICAgOiBwdWJs
aWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3Rvcjxjb25zdCBsb25nIGRvdWJsZT4gICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9
OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dW5z
aWduZWQgY2hhcj4gICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGNo
YXI+ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25lZCBzaG9ydD4gICAgICAgICAgIDogcHVi
bGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgc2hvcnQ+ICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7
fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHVu
c2lnbmVkIGludD4gICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBp
bnQ+ICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dW5zaWduZWQgbG9uZz4gICAgICAgICAgICA6IHB1
YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2NvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmc+ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBl
e307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1
bnNpZ25lZCBsb25nIGxvbmc+ICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQg
bG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHNpZ25lZCBjaGFyPiAgICAgICAgICAgICAgOiBw
dWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlh
bF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgY2hhcj4gICAgICAgIDogcHVibGljIHRydWVfdHlw
ZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8
c2lnbmVkIHNob3J0PiAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAg
dGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBz
aG9ydD4gICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgaW50PiAgICAgICAgICAgICAgIDog
cHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGludD4gICAgICAgICA6IHB1YmxpYyB0cnVlX3R5
cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9y
PHNpZ25lZCBsb25nPiAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQg
bG9uZz4gICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8c2lnbmVkIGxvbmcgbG9uZz4gICAgICAgICA6
IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2
aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nIGxvbmc+ICAgOiBwdWJsaWMgdHJ1ZV90
eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rv
cjxib29sPiAgICAgICAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgYm9vbD4g
ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNoYXI+ICAgICAgICAgICAgICAgICAgICAg
OiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJp
dmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBjaGFyPiAgICAgICAgICAgICAgIDogcHVibGljIHRydWVf
dHlwZXt9OworICAgICAgICAjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElW
RV9XQ0hBUl9UX0RFRklORUQpCisgICAgICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3Ry
aXZpYWxfY29uc3RydWN0b3I8d2NoYXJfdD4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlw
ZXt9OworICAgICAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVj
dG9yPGNvbnN0IHdjaGFyX3Q+ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAg
I2VuZGlmCisKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0
b3I8ZmxvYXQ+ICAgICAgICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgZmxvYXQ+
ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8ZG91YmxlPiAgICAgICAgICAgICAgICAgICA6
IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2
aWFsX2Rlc3RydWN0b3I8Y29uc3QgZG91YmxlPiAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5
cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8
bG9uZyBkb3VibGU+ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAg
dGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgbG9uZyBkb3Vi
bGU+ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQgY2hhcj4gICAgICAgICAgICA6IHB1
YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2Rlc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgY2hhcj4gICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7
fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dW5z
aWduZWQgc2hvcnQ+ICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgc2hv
cnQ+ICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQgaW50PiAgICAgICAgICAgICA6IHB1Ymxp
YyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rl
c3RydWN0b3I8Y29uc3QgdW5zaWduZWQgaW50PiAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsK
KyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWdu
ZWQgbG9uZz4gICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxh
dGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgbG9uZz4g
ICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhh
c190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQgbG9uZyBsb25nPiAgICAgICA6IHB1YmxpYyB0
cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3Ry
dWN0b3I8Y29uc3QgdW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAg
ICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8c2lnbmVkIGNo
YXI+ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUg
PD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGNoYXI+ICAgICAg
ICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190
cml2aWFsX2Rlc3RydWN0b3I8c2lnbmVkIHNob3J0PiAgICAgICAgICAgICA6IHB1YmxpYyB0cnVl
X3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0
b3I8Y29uc3Qgc2lnbmVkIHNob3J0PiAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8c2lnbmVkIGludD4g
ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGludD4gICAgICAgICA6
IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2
aWFsX2Rlc3RydWN0b3I8c2lnbmVkIGxvbmc+ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5
cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8
Y29uc3Qgc2lnbmVkIGxvbmc+ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAg
dGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8c2lnbmVkIGxvbmcgbG9u
Zz4gICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGxvbmcgbG9uZz4gICA6IHB1
YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2Rlc3RydWN0b3I8Ym9vbD4gICAgICAgICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7
fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29u
c3QgYm9vbD4gICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y2hhcj4gICAgICAgICAgICAg
ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgY2hhcj4gICAgICAgICAgICAgICA6IHB1Ymxp
YyB0cnVlX3R5cGV7fTsKKyAgICAgICAgI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVk
KF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQorICAgICAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2Rlc3RydWN0b3I8d2NoYXJfdD4gICAgICAgICAgICAgIDogcHVibGljIHRy
dWVfdHlwZXt9OworICAgICAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rl
c3RydWN0b3I8Y29uc3Qgd2NoYXJfdD4gICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAg
ICAgICAjZW5kaWYKKworICAgIH0gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYKKworbmFtZXNw
YWNlIFdURiB7CisKKyAgICBjbGFzcyBBbGxvY0Jhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZmFzdE1hbGxvYyhzaXplKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgb3BlcmF0
b3IgZGVsZXRlKHZvaWQqIHApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZhc3RGcmVlKHApOyAg
Ly8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgYSBudWxsIHBvaW50ZXI7IHRoZSBjb21waWxl
ciBkb2VzIHRoaXMuCisgICAgICAgIH0KKworICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhc3RNYWxsb2Moc2l6
ZSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZhc3RGcmVlKHApOyAgLy8gV2UgZG9uJ3QgbmVlZCB0
byBjaGVjayBmb3IgYSBudWxsIHBvaW50ZXI7IHRoZSBjb21waWxlciBkb2VzIHRoaXMuCisgICAg
ICAgIH0KKyAgICB9OworCisKKyAgICAvLyBuZXdPYmplY3QgLyBkZWxldGVPYmplY3QKKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIGlubGluZSBUKiBuZXdPYmplY3QoKQorICAgIHsK
KyAgICAgICAgdm9pZCogcCA9IGZhc3RNYWxsb2Moc2l6ZW9mKFQpKTsKKworICAgICAgICBpZiAo
cCkKKyAgICAgICAgICAgIHJldHVybiA6Om5ldyhwKSBUOworCisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIG5hbWVzcGFjZSBXVEZJbnRlcm5hbCB7CisKKyAgICAgICAgLy8gVGhpcyBp
cyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIG5ld0FycmF5LgorICAgICAgICAvLyBUaGlzIGhhbmRs
ZXMgdGhlIGNhc2Ugd2hlcmVieSBUIGhhcyBhIHRyaXZpYWwgY3RvciBhbmQgYSB0cml2aWFsIGR0
b3IuCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIHRyaXZpYWxDdG9yLCBib29s
IHRyaXZpYWxEdG9yPgorICAgICAgICBzdHJ1Y3QgTmV3QXJyYXlJbXBsIHsKKyAgICAgICAgICAg
IHN0YXRpYyBUKiBuZXdBcnJheShzaXplX3QgY291bnQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihmYXN0TWFsbG9jKHNpemVvZihUKSAqIGNv
dW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgLy8gVGhpcyBpcyBh
IHN1cHBvcnQgdGVtcGxhdGUgZm9yIG5ld0FycmF5LgorICAgICAgICAvLyBUaGlzIGhhbmRsZXMg
dGhlIGNhc2Ugd2hlcmVieSBUIGhhcyBhIG5vbi10cml2aWFsIGN0b3IgYW5kIGEgdHJpdmlhbCBk
dG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RydWN0IE5ld0Fy
cmF5SW1wbDxULCBmYWxzZSwgdHJ1ZT4geworICAgICAgICAgICAgc3RhdGljIFQqIG5ld0FycmF5
KHNpemVfdCBjb3VudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUKiBjb25zdCBw
ID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFQpICogY291bnQpKTsKKworICAg
ICAgICAgICAgICAgIGlmIChwKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoVCogcE9iamVj
dCA9IHAsICpwT2JqZWN0RW5kID0gcE9iamVjdCArIGNvdW50OyBwT2JqZWN0ICE9IHBPYmplY3RF
bmQ7ICsrcE9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDo6bmV3KHBPYmplY3QpIFQ7
IC8vIFRvIGNvbnNpZGVyOiBoYW5kbGUgY3RvciBleGNlcHRpb25zIGlmIGV4Y2VwdGlvbnMgYXJl
IGVuYWJsZWQgYnkgdGhlIGNvbXBpbGVyLgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKworICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgbmV3
QXJyYXkuCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWJ5IFQgaGFzIGEg
dHJpdmlhbCBjdG9yIGFuZCBhIG5vbi10cml2aWFsIGR0b3IuCisgICAgICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorICAgICAgICBzdHJ1Y3QgTmV3QXJyYXlJbXBsPFQsIHRydWUsIGZhbHNlPiB7
CisgICAgICAgICAgICBzdGF0aWMgVCogbmV3QXJyYXkoc2l6ZV90IGNvdW50KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHVpbnQ2NF90KiBwID0gc3RhdGljX2Nhc3Q8dWludDY0X3Qq
PihmYXN0TWFsbG9jKHNpemVvZih1aW50NjRfdCkgKyAoc2l6ZW9mKFQpICogY291bnQpKSk7CisK
KyAgICAgICAgICAgICAgICBpZiAocCkgeworICAgICAgICAgICAgICAgICAgICAqcCsrID0gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KGNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gTm8gbmVl
ZCB0byBjb25zdHJ1Y3QgdGhlIG9iamVjdHMgaW4gdGhpcyBjYXNlLgorICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0
ZW1wbGF0ZSBmb3IgbmV3QXJyYXkuCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3
aGVyZWJ5IFQgaGFzIGEgbm9uLXRyaXZpYWwgY3RvciBhbmQgYSBub24tdHJpdmlhbCBkdG9yLgor
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RydWN0IE5ld0FycmF5SW1w
bDxULCBmYWxzZSwgZmFsc2U+IHsKKyAgICAgICAgICAgIHN0YXRpYyBUKiBuZXdBcnJheShzaXpl
X3QgY291bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludDY0X3QqIHAgPSBz
dGF0aWNfY2FzdDx1aW50NjRfdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSArIChzaXpl
b2YoVCkgKiBjb3VudCkpKTsKKworICAgICAgICAgICAgICAgIGlmIChwKSB7CisgICAgICAgICAg
ICAgICAgICAgICpwKysgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oY291bnQpOworCisgICAgICAg
ICAgICAgICAgICAgIGZvciAoVCogcE9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHApLCAq
cE9iamVjdEVuZCA9IHBPYmplY3QgKyBjb3VudDsgcE9iamVjdCAhPSBwT2JqZWN0RW5kOyArK3BP
YmplY3QpCisgICAgICAgICAgICAgICAgICAgICAgICA6Om5ldyhwT2JqZWN0KSBUOyAvLyBUbyBj
b25zaWRlcjogaGFuZGxlIGN0b3IgZXhjZXB0aW9ucyBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVk
IGJ5IHRoZSBjb21waWxlci4KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4ocCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisgICAgfSAvLyBuYW1lc3BhY2UgV1RGSW50ZXJuYWwKKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICAgIGlubGluZSBUKiBuZXdBcnJheShzaXplX3QgY291bnQpCisgICAgeworICAgICAg
ICByZXR1cm4gV1RGSW50ZXJuYWw6Ok5ld0FycmF5SW1wbDxULCBXVEY6Omhhc190cml2aWFsX2Nv
bnN0cnVjdG9yPFQ+Ojp2YWx1ZSwgV1RGOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ojp2YWx1
ZT46Om5ld0FycmF5KGNvdW50KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgICBpbmxpbmUgdm9pZCBkZWxldGVPYmplY3QoVCogcCkKKyAgICB7CisgICAgICAgIGlmIChw
KSB7IC8vIEFzIHBlciB0aGUgQysrIHN0YW5kYXJkLCB0ZXN0IGZvciBudWxsIHBvaW50ZXIuCisg
ICAgICAgICAgICBwLT5+VCgpOworICAgICAgICAgICAgZmFzdEZyZWUocCk7CisgICAgICAgIH0K
KyAgICB9CisKKworICAgIG5hbWVzcGFjZSBXVEZJbnRlcm5hbCB7CisgICAgICAgIC8vIFRoaXMg
aXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBkZWxldGVBcnJheS4KKyAgICAgICAgLy8gVGhpcyBo
YW5kbGVzIHRoZSBjYXNlIHdoZXJlYnkgVCBoYXMgYSB0cml2aWFsIGR0b3IuCisgICAgICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCBib29sIHRyaXZpYWxEdG9yPgorICAgICAgICBzdHJ1Y3QgRGVs
ZXRlQXJyYXlJbXBsIHsKKyAgICAgICAgICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUFycmF5KHZvaWQq
IHApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHApIHsgLy8gQXMgcGVyIHRo
ZSBDKysgc3RhbmRhcmQsIHRlc3QgZm9yIG51bGwgcG9pbnRlci4KKyAgICAgICAgICAgICAgICAg
ICAgLy8gTm8gbmVlZCB0byBkZXN0cnVjdCB0aGUgb2JqZWN0cyBpbiB0aGlzIGNhc2UuCisgICAg
ICAgICAgICAgICAgICAgIGZhc3RGcmVlKHApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0
ZSBmb3IgZGVsZXRlQXJyYXkuCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVy
ZWJ5IFQgaGFzIGEgbm9uLXRyaXZpYWwgZHRvci4KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgICAgIHN0cnVjdCBEZWxldGVBcnJheUltcGw8VCwgZmFsc2U+IHsKKyAgICAgICAg
ICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUFycmF5KFQqIHApCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaWYgKHApIHsgLy8gQXMgcGVyIHRoZSBDKysgc3RhbmRhcmQsIHRlc3QgZm9yIG51
bGwgcG9pbnRlci4KKyAgICAgICAgICAgICAgICAgICAgVCogcEVuZCA9IHAgKyAqKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDY0X3QqPihwKSAtIDEpOworICAgICAgICAgICAgICAgICAgICB3aGlsZShw
RW5kLS0gIT0gcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBFbmQtPn5UKCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgZmFzdEZyZWUoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihwKSAt
IDEpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAg
ICB9IC8vIG5hbWVzcGFjZSBXVEZJbnRlcm5hbAorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgICAgdm9pZCBkZWxldGVBcnJheShUKiBwKQorICAgIHsKKyAgICAgICAgV1RGSW50ZXJuYWw6
OkRlbGV0ZUFycmF5SW1wbDxULCBXVEY6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD46OnZhbHVl
Pjo6ZGVsZXRlQXJyYXkocCk7CisgICAgfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlm
IC8vIFdURl9OZXdfaAo=
</data>
<flag name="review"
          id="10294"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23133</attachid>
            <date>2008-09-02 17:47:16 -0700</date>
            <delta_ts>2008-11-20 21:19:18 -0800</delta_ts>
            <desc>Test application for New.h</desc>
            <filename>NewTest.cpp</filename>
            <type>text/plain</type>
            <size>7631</size>
            <attacher name="Paul Pedriana">ppedriana</attacher>
            
              <data encoding="base64">Ly8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCgovKgogKiBDb3B5cmlnaHQg
KEMpIDIwMDggUGF1bCBQZWRyaWFuYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKgogKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CiAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgogKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAogKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogKgogKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQogKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQogKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwogKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CiAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAogKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICovCgojaW5jbHVkZSA8Y29uZmlnLmg+CiNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgojaW5jbHVkZSA8d3RmL05ldy5oPgoKLy8gSW5oZXJpdGVkCi8vIERlZmluZXMgYSBj
bGFzcyB3aGljaCBpbmhlcml0cyBmcm9tIFdURjo6QWxsb2NCYXNlIGFuZCBoYXMgYXQgbGVhc3QK
Ly8gb25lIG1lbWJlciB2YXJpYWJsZSB3aGljaCBtYWtlcyBpdHMgc2l6ZSBkaWZmZXJlbnQgZnJv
bSBBbGxvY0Jhc2UuCgpjbGFzcyBJbmhlcml0ZWQgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2Ugewpw
dWJsaWM6CiAgICBzdGF0aWMgaW50IG1fY3RvckNvdW50OwogICAgc3RhdGljIGludCBtX2R0b3JD
b3VudDsKCiAgICBpbnQgbV94OwoKICAgIEluaGVyaXRlZCgpCiAgICB7CiAgICAgICAgKyttX2N0
b3JDb3VudDsKICAgIH0KCiAgICBJbmhlcml0ZWQoY29uc3QgSW5oZXJpdGVkJikKICAgIHsKICAg
ICAgICArK21fY3RvckNvdW50OwogICAgfQoKICAgfkluaGVyaXRlZCgpCiAgICB7CiAgICAgICAg
KyttX2R0b3JDb3VudDsKICAgIH0KCiAgICBJbmhlcml0ZWQmIG9wZXJhdG9yID0oY29uc3QgSW5o
ZXJpdGVkJikKICAgIHsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9Cn07CgppbnQgSW5oZXJp
dGVkOjptX2N0b3JDb3VudCA9IDA7CmludCBJbmhlcml0ZWQ6Om1fZHRvckNvdW50ID0gMDsKCgov
LyBQT0QKLy8gSW1wbGVtZW50cyBhIFBsYWluIE9sZCBEYXRhIHR5cGUuIEJ5IGRlZmluaXRpb24g
aXQgaGFzIG5vIAovLyBjb25zdHJ1Y3RvcnMgb3IgZGVzdHJ1Y3Rvciwgbm9yIGRvZXMgaXQgaGF2
ZSBhIHZ0YWJsZSBub3IKLy8gaW5oZXJpdGFuY2UuIAoKc3RydWN0IFBPRCB7CiAgICBpbnQgbV94
Owp9OwoKCi8vIE9iamVjdAovLyBUaGlzIGlzIGEgbm9uLVBPRCBmb3Igb3VyIHB1cnBvc2VzLgoK
Y2xhc3MgT2JqZWN0IHsKcHVibGljOgogICAgc3RhdGljIGludCBtX2N0b3JDb3VudDsKICAgIHN0
YXRpYyBpbnQgbV9kdG9yQ291bnQ7CgogICAgaW50IG1feDsKCiAgICBPYmplY3QoKQogICAgewog
ICAgICAgICsrbV9jdG9yQ291bnQ7CiAgICB9CgogICAgT2JqZWN0KGNvbnN0IE9iamVjdCYpCiAg
ICB7CiAgICAgICAgKyttX2N0b3JDb3VudDsKICAgIH0KCiAgIH5PYmplY3QoKQogICAgewogICAg
ICAgICsrbV9kdG9yQ291bnQ7CiAgICB9CgogICAgT2JqZWN0JiBvcGVyYXRvciA9KGNvbnN0IE9i
amVjdCYpCiAgICB7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQp9OwoKaW50IE9iamVjdDo6
bV9jdG9yQ291bnQgPSAwOwppbnQgT2JqZWN0OjptX2R0b3JDb3VudCA9IDA7CgoKCnRlbXBsYXRl
IDx0eXBlbmFtZSBUPgpib29sIHZlcmlmeUlzQWxpZ25lZChUKiBwKQp7CiAgICBjb25zdCBib29s
IGlzQWxpZ25lZCA9ICgoc2l6ZV90KSgoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwKSBe
IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCkgLSAxKSkgPj4gMSkgKyAxKSA+PSBzaXpl
b2YoVCkpOwogICAgQVNTRVJUKGlzQWxpZ25lZCk7CiAgICByZXR1cm4gaXNBbGlnbmVkOwp9CgoK
Ly8gQXNzZXJ0IHRoYXQgZ2xvYmFsIG5ldy9kZWxldGUgYXJlIG5ldmVyIGNhbGxlZCBieSBtYWtp
bmcgdmVyc2lvbnMgCi8vIG9mIHRoZXNlIGZ1bmN0aW9ucyB0aGF0IHNob3VsZG4ndCBiZSBjYWxs
ZWQuCgp2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KSB0aHJvdygpCnsKICAgIEFTU0VSVChmYWxz
ZSk7CiAgICByZXR1cm4gMDsKfQoKdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCopCnsKICAgIEFT
U0VSVChmYWxzZSk7Cn0KCnZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCkgdGhyb3coKQp7CiAg
ICBBU1NFUlQoZmFsc2UpOwogICAgcmV0dXJuIDA7Cn0KCnZvaWQgb3BlcmF0b3IgZGVsZXRlW10o
dm9pZCopCnsKICAgIEFTU0VSVChmYWxzZSk7Cn0KCgppbnQgbWFpbihpbnQsIGNoYXIqKikKewog
ICAgdXNpbmcgbmFtZXNwYWNlIFdURjsKCiAgICBib29sICAgc3VjY2VzcyA9IHRydWU7CiAgICBz
aXplX3QgaTsKCiAgICAvLyBBbGxvY0Jhc2UKICAgIEFsbG9jQmFzZSogYWxsb2NCYXNlUHRyID0g
bmV3IEFsbG9jQmFzZTsKICAgIHZlcmlmeUlzQWxpZ25lZChhbGxvY0Jhc2VQdHIpOwogICAgZGVs
ZXRlIGFsbG9jQmFzZVB0cjsKCiAgICAvLyBWZXJpZnkgdGhhdCBkZWxldGlvbiBvZiBOVUxMIHdv
cmtzIGFzIGV4cGVjdGVkLgogICAgYWxsb2NCYXNlUHRyID0gTlVMTDsKICAgIGRlbGV0ZSBhbGxv
Y0Jhc2VQdHI7CgogICAgQWxsb2NCYXNlKiBhbGxvY0Jhc2VBcnJheVB0ciA9IG5ldyBBbGxvY0Jh
c2VbMzddOwogICAgdmVyaWZ5SXNBbGlnbmVkKGFsbG9jQmFzZUFycmF5UHRyKTsKICAgIGRlbGV0
ZVtdIGFsbG9jQmFzZUFycmF5UHRyOwoKICAgIGFsbG9jQmFzZUFycmF5UHRyID0gTlVMTDsKICAg
IGRlbGV0ZSBhbGxvY0Jhc2VBcnJheVB0cjsKCiAgICAvLyBBbGxvY0Jhc2UgLyBJbmhlcml0ZWQK
ICAgIEluaGVyaXRlZCogaW5oZXJpdGVkUHRyID0gbmV3IEluaGVyaXRlZDsKICAgIHZlcmlmeUlz
QWxpZ25lZChpbmhlcml0ZWRQdHIpOwogICAgaW5oZXJpdGVkUHRyLT5tX3ggPSAxOwogICAgZGVs
ZXRlIGluaGVyaXRlZFB0cjsKCiAgICBpbmhlcml0ZWRQdHIgPSBOVUxMOwogICAgZGVsZXRlIGlu
aGVyaXRlZFB0cjsKCiAgICBJbmhlcml0ZWQqIGluaGVyaXRlZEFycmF5UHRyID0gbmV3IEluaGVy
aXRlZFszN107CiAgICB2ZXJpZnlJc0FsaWduZWQoaW5oZXJpdGVkQXJyYXlQdHIpOwogICAgZm9y
IChpID0gMDsgaSA8IDM3OyArK2kpCiAgICAgICAgaW5oZXJpdGVkQXJyYXlQdHJbaV0ubV94ID0g
MTsKICAgIGRlbGV0ZVtdIGluaGVyaXRlZEFycmF5UHRyOwoKICAgIGluaGVyaXRlZEFycmF5UHRy
ID0gTlVMTDsKICAgIGRlbGV0ZSBpbmhlcml0ZWRBcnJheVB0cjsKCiAgICBBU1NFUlQoKEluaGVy
aXRlZDo6bV9jdG9yQ291bnQgPT0gMzgpICYmIChJbmhlcml0ZWQ6Om1fZHRvckNvdW50ID09IDM4
KSk7CiAgICBzdWNjZXNzID09IHN1Y2Nlc3MgJiYgKChJbmhlcml0ZWQ6Om1fY3RvckNvdW50ID09
IDM4KSAmJiAoSW5oZXJpdGVkOjptX2R0b3JDb3VudCA9PSAzOCkpOwoKICAgIC8vIGNoYXIKICAg
IGNoYXIqIGNoYXJQdHIgPSBuZXdPYmplY3Q8Y2hhcj4oKTsKICAgIGRlbGV0ZU9iamVjdChjaGFy
UHRyKTsKCiAgICBjaGFyUHRyID0gTlVMTDsKICAgIGRlbGV0ZU9iamVjdChjaGFyUHRyKTsKCiAg
ICBjaGFyKiBjaGFyQXJyYXlQdHIgPSBuZXdBcnJheTxjaGFyPigzNyk7CiAgICBmb3IgKGkgPSAw
OyBpIDwgMzc7ICsraSkKICAgICAgICBjaGFyQXJyYXlQdHJbaV0gPSAxOwogICAgZGVsZXRlQXJy
YXkoY2hhckFycmF5UHRyKTsKCiAgICBjaGFyQXJyYXlQdHIgPSBOVUxMOwogICAgZGVsZXRlQXJy
YXkoY2hhckFycmF5UHRyKTsKCiAgICAvLyBkb3VibGUKICAgIGRvdWJsZSogZG91YmxlUHRyID0g
bmV3T2JqZWN0PGRvdWJsZT4oKTsKICAgIHZlcmlmeUlzQWxpZ25lZChkb3VibGVQdHIpOwogICAg
KmRvdWJsZVB0ciA9IDE7CiAgICBkZWxldGVPYmplY3QoZG91YmxlUHRyKTsKCiAgICBkb3VibGVQ
dHIgPSBOVUxMOwogICAgZGVsZXRlT2JqZWN0KGRvdWJsZVB0cik7CgogICAgZG91YmxlKiBkb3Vi
bGVBcnJheVB0ciA9IG5ld0FycmF5PGRvdWJsZT4oMzcpOwogICAgdmVyaWZ5SXNBbGlnbmVkKGRv
dWJsZUFycmF5UHRyKTsKICAgIGZvciAoaSA9IDA7IGkgPCAzNzsgKytpKQogICAgICAgIGRvdWJs
ZUFycmF5UHRyW2ldID0gMTsKICAgIGRlbGV0ZUFycmF5KGRvdWJsZUFycmF5UHRyKTsKCiAgICBk
b3VibGVBcnJheVB0ciA9IE5VTEw7CiAgICBkZWxldGVBcnJheShkb3VibGVBcnJheVB0cik7Cgog
ICAgLy8gdm9pZCoKICAgIHZvaWQqKiB2b2lkUHRyUHRyID0gbmV3T2JqZWN0PHZvaWQqPigpOwog
ICAgZGVsZXRlT2JqZWN0KHZvaWRQdHJQdHIpOwoKICAgIHZvaWRQdHJQdHIgPSBOVUxMOwogICAg
ZGVsZXRlT2JqZWN0KHZvaWRQdHJQdHIpOwoKICAgIHZvaWQqKiB2b2lkUHRyQXJyYXlQdHIgPSBu
ZXdBcnJheTx2b2lkKj4oMzcpOwogICAgZm9yIChpID0gMDsgaSA8IDM3OyArK2kpCiAgICAgICAg
dm9pZFB0ckFycmF5UHRyW2ldID0gMDsKICAgIGRlbGV0ZUFycmF5KHZvaWRQdHJBcnJheVB0cik7
CgogICAgdm9pZFB0ckFycmF5UHRyID0gTlVMTDsKICAgIGRlbGV0ZUFycmF5KHZvaWRQdHJBcnJh
eVB0cik7CgogICAgLy8gUE9ECiAgICBQT0QqIHBvZFB0ciA9IG5ld09iamVjdDxQT0Q+KCk7CiAg
ICB2ZXJpZnlJc0FsaWduZWQocG9kUHRyKTsKICAgIHBvZFB0ci0+bV94ID0gMTsKICAgIGRlbGV0
ZU9iamVjdChwb2RQdHIpOwoKICAgIHBvZFB0ciA9IE5VTEw7CiAgICBkZWxldGVPYmplY3QocG9k
UHRyKTsKCiAgICBQT0QqIHBvZEFycmF5UHRyID0gbmV3QXJyYXk8UE9EPigzNyk7CiAgICB2ZXJp
ZnlJc0FsaWduZWQocG9kQXJyYXlQdHIpOwogICAgZm9yIChpID0gMDsgaSA8IDM3OyArK2kpCiAg
ICAgICAgcG9kQXJyYXlQdHJbaV0ubV94ID0gMTsKICAgIGRlbGV0ZUFycmF5KHBvZEFycmF5UHRy
KTsKCiAgICBwb2RBcnJheVB0ciA9IE5VTEw7CiAgICBkZWxldGVBcnJheShwb2RBcnJheVB0cik7
CgogICAgLy8gT2JqZWN0CiAgICBPYmplY3QqIG9iamVjdFB0ciA9IG5ld09iamVjdDxPYmplY3Q+
KCk7CiAgICB2ZXJpZnlJc0FsaWduZWQob2JqZWN0UHRyKTsKICAgIG9iamVjdFB0ci0+bV94ID0g
MTsKICAgIGRlbGV0ZU9iamVjdChvYmplY3RQdHIpOwoKICAgIG9iamVjdFB0ciA9IE5VTEw7CiAg
ICBkZWxldGVPYmplY3Qob2JqZWN0UHRyKTsKCiAgICBPYmplY3QqIG9iamVjdEFycmF5UHRyID0g
bmV3QXJyYXk8T2JqZWN0PigzNyk7CiAgICB2ZXJpZnlJc0FsaWduZWQob2JqZWN0QXJyYXlQdHIp
OwogICAgZm9yIChpID0gMDsgaSA8IDM3OyArK2kpCiAgICAgICAgb2JqZWN0QXJyYXlQdHJbaV0u
bV94ID0gMTsKICAgIGRlbGV0ZUFycmF5KG9iamVjdEFycmF5UHRyKTsKCiAgICBvYmplY3RBcnJh
eVB0ciA9IE5VTEw7CiAgICBkZWxldGVBcnJheShvYmplY3RBcnJheVB0cik7CgogICAgQVNTRVJU
KChPYmplY3Q6Om1fY3RvckNvdW50ID09IDM4KSAmJiAoT2JqZWN0OjptX2R0b3JDb3VudCA9PSAz
OCkpOwogICAgc3VjY2VzcyA9PSBzdWNjZXNzICYmICgoT2JqZWN0OjptX2N0b3JDb3VudCA9PSAz
OCkgJiYgKE9iamVjdDo6bV9kdG9yQ291bnQgPT0gMzgpKTsKCiAgICAvLyBUZXN0IE5ld0FycmF5
SW1wbDxULCBmYWxzZSwgdHJ1ZT4gZXhwbGljaXRseS4KICAgIE9iamVjdDo6bV9jdG9yQ291bnQg
PSAwOwogICAgT2JqZWN0OjptX2R0b3JDb3VudCA9IDA7CiAgICBvYmplY3RQdHIgPSBXVEZJbnRl
cm5hbDo6TmV3QXJyYXlJbXBsPE9iamVjdCwgZmFsc2UsIHRydWU+OjpuZXdBcnJheSgzKTsKICAg
IFdURkludGVybmFsOjpEZWxldGVBcnJheUltcGw8T2JqZWN0LCB0cnVlPjo6ZGVsZXRlQXJyYXko
b2JqZWN0UHRyKTsKCiAgICBBU1NFUlQoKE9iamVjdDo6bV9jdG9yQ291bnQgPT0gMykgJiYgKE9i
amVjdDo6bV9kdG9yQ291bnQgPT0gMCkpOwogICAgc3VjY2VzcyA9PSBzdWNjZXNzICYmICgoT2Jq
ZWN0OjptX2N0b3JDb3VudCA9PSAzKSAmJiAoT2JqZWN0OjptX2R0b3JDb3VudCA9PSAwKSk7Cgog
ICAgLy8gVGVzdCBOZXdBcnJheUltcGw8VCwgdHJ1ZSwgZmFsc2U+IGV4cGxpY2l0bHkuCiAgICBP
YmplY3Q6Om1fY3RvckNvdW50ID0gMDsKICAgIE9iamVjdDo6bV9kdG9yQ291bnQgPSAwOwogICAg
b2JqZWN0UHRyID0gV1RGSW50ZXJuYWw6Ok5ld0FycmF5SW1wbDxPYmplY3QsIHRydWUsIGZhbHNl
Pjo6bmV3QXJyYXkoMyk7CiAgICBXVEZJbnRlcm5hbDo6RGVsZXRlQXJyYXlJbXBsPE9iamVjdCwg
ZmFsc2U+OjpkZWxldGVBcnJheShvYmplY3RQdHIpOwoKICAgIEFTU0VSVCgoT2JqZWN0OjptX2N0
b3JDb3VudCA9PSAwKSAmJiAoT2JqZWN0OjptX2R0b3JDb3VudCA9PSAzKSk7CiAgICBzdWNjZXNz
ID09IHN1Y2Nlc3MgJiYgKChPYmplY3Q6Om1fY3RvckNvdW50ID09IDApICYmIChPYmplY3Q6Om1f
ZHRvckNvdW50ID09IDMpKTsKCiAgICByZXR1cm4gc3VjY2VzcyA/IDAgOiAtMTsKfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23971</attachid>
            <date>2008-10-01 02:25:40 -0700</date>
            <delta_ts>2008-10-01 09:42:24 -0700</delta_ts>
            <desc>proposed patch for JavaScripCore</desc>
            <filename>nd1.jscore.patch</filename>
            <type>text/plain</type>
            <size>142135</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">SW5kZXg6IHByb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcHJvZmlsZXIv
Q2FsbElkZW50aWZpZXIuaAkocmV2aXNpb24gMzcwNDgpCisrKyBwcm9maWxlci9DYWxsSWRlbnRp
Zmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNCArMjgsMTUgQEAKICNkZWZpbmUgQ2FsbElk
ZW50aWZpZXJfaAogCiAjaW5jbHVkZSA8a2pzL3VzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTmV3
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgc3RydWN0IENhbGxJZGVudGlmaWVyIHsKKyAg
ICBzdHJ1Y3QgQ2FsbElkZW50aWZpZXIgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAg
ICBVU3RyaW5nIG1fbmFtZTsKICAgICAgICAgVVN0cmluZyBtX3VybDsKICAgICAgICAgdW5zaWdu
ZWQgbV9saW5lTnVtYmVyOwotICAgICAgICAKKwogICAgICAgICBDYWxsSWRlbnRpZmllcihVU3Ry
aW5nIG5hbWUsIFVTdHJpbmcgdXJsLCBpbnQgbGluZU51bWJlcikKICAgICAgICAgICAgIDogbV9u
YW1lKG5hbWUpCiAgICAgICAgICAgICAsIG1fdXJsKHVybCkKQEAgLTYyLDcgKzYzLDcgQEAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBJbnRIYXNoPEpTQzo6Q2FsbElkZW50aWZpZXI+IHsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJ
bnRIYXNoPEpTQzo6Q2FsbElkZW50aWZpZXI+IDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgSlNDOjpDYWxsSWRlbnRpZmllciYga2V5
KQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7CkBAIC03
Niw3ICs3Nyw3IEBACiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEpTQzo6Q2FsbElk
ZW50aWZpZXImIGEsIGNvbnN0IEpTQzo6Q2FsbElkZW50aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0g
YjsgfQogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IHRydWU7CiAgICAgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxK
U0M6OkNhbGxJZGVudGlmaWVyPiB7IHR5cGVkZWYgSW50SGFzaDxKU0M6OkNhbGxJZGVudGlmaWVy
PiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6Q2FsbElk
ZW50aWZpZXI+IDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsgdHlwZWRlZiBJbnRIYXNoPEpTQzo6
Q2FsbElkZW50aWZpZXI+IEhhc2g7IH07CiAKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJh
aXRzPEpTQzo6Q2FsbElkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFpdHM8SlNDOjpDYWxsSWRl
bnRpZmllcj4gewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0g
ZmFsc2U7CkluZGV4OiBranMvQm9vbGVhbk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0Jv
b2xlYW5PYmplY3QuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9Cb29sZWFuT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEJvb2xlYW5PYmplY3QpOwogCi1jb25zdCBDbGFzc0luZm8gQm9vbGVhbk9iamVjdDo6
aW5mbyA9IHsgIkJvb2xlYW4iLCAwLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gQm9vbGVhbk9i
amVjdDo6aW5mbygiQm9vbGVhbiIsIDAsIDAsIDApOwogCiBCb29sZWFuT2JqZWN0OjpCb29sZWFu
T2JqZWN0KFBhc3NSZWZQdHI8U3RydWN0dXJlSUQ+IHN0cnVjdHVyZSkKICAgICA6IEpTV3JhcHBl
ck9iamVjdChzdHJ1Y3R1cmUpCkluZGV4OiBranMvSW50ZXJuYWxGdW5jdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2pzL0ludGVybmFsRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGtq
cy9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAog
CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEludGVybmFsRnVuY3Rpb24pOwogCi1jb25zdCBD
bGFzc0luZm8gSW50ZXJuYWxGdW5jdGlvbjo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwgMCwgMCwgMCB9
OworY29uc3QgQ2xhc3NJbmZvIEludGVybmFsRnVuY3Rpb246OmluZm8oIkZ1bmN0aW9uIiwgMCwg
MCwgMCk7CiAKIEludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjKQogICAgIDogSlNPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLm51bGxQcm90b1N0cnVjdHVy
ZUlEKQpJbmRleDoga2pzL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9SZWdFeHBP
YmplY3QuaAkocmV2aXNpb24gMzcwNDgpCisrKyBranMvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAicmVnZXhwLmgiCisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtNTEsNyArNTIsNyBAQAogCiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
Q2FsbERhdGEmKTsKIAotICAgICAgICBzdHJ1Y3QgUmVnRXhwT2JqZWN0RGF0YSB7CisgICAgICAg
IHN0cnVjdCBSZWdFeHBPYmplY3REYXRhIDogcHVibGljIFdURjo6QWxsb2NCYXNlewogICAgICAg
ICAgICAgUmVnRXhwT2JqZWN0RGF0YShQYXNzUmVmUHRyPFJlZ0V4cD4gcmVnRXhwLCBkb3VibGUg
bGFzdEluZGV4KQogICAgICAgICAgICAgICAgIDogcmVnRXhwKHJlZ0V4cCkKICAgICAgICAgICAg
ICAgICAsIGxhc3RJbmRleChsYXN0SW5kZXgpCkluZGV4OiBranMvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IpOwogCi1jb25zdCBDbGFzc0luZm8gTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OmluZm8sIDAs
IDAgfTsKK2NvbnN0IENsYXNzSW5mbyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjppbmZvKCJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjppbmZvLCAwLCAwKTsKIAogTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQ
dHI8U3RydWN0dXJlSUQ+IHN0cnVjdHVyZSwgTmF0aXZlRXJyb3JQcm90b3R5cGUqIG5hdGl2ZUVy
cm9yUHJvdG90eXBlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbihleGVjLCBzdHJ1Y3R1cmUsIElk
ZW50aWZpZXIoZXhlYywgbmF0aXZlRXJyb3JQcm90b3R5cGUtPmdldERpcmVjdChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubmFtZSktPmdldFN0cmluZygpKSkKSW5kZXg6IGtqcy9BcmdMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2pzL0FyZ0xpc3QuaAkocmV2aXNpb24gMzcwNDgpCisrKyBranMvQXJnTGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTMgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvTmV3Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgSlNWYWx1ZTsKICAgICAKLSAgICBjbGFzcyBBcmdMaXN0IDogTm9uY29weWFibGUgeworICAg
IGNsYXNzIEFyZ0xpc3QgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHByaXZhdGU6CiAgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDg7CiAgICAgICAgIHR5
cGVkZWYgVmVjdG9yPFJlZ2lzdGVyLCBpbmxpbmVDYXBhY2l0eT4gVmVjdG9yVHlwZTsKQEAgLTE0
MSwyMSArMTQyLDYgQEAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBQcm9oaWJpdHMgbmV3IC8g
ZGVsZXRlLCB3aGljaCB3b3VsZCBicmVhayBHQy4KICAgICAgICAgZnJpZW5kIGNsYXNzIEpTR2xv
YmFsRGF0YTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhc3RNYWxsb2Moc2l6ZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZmFzdEZyZWUocCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QpOwotICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQq
KTsKLQotICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKik7Ci0gICAgICAg
IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqLCBzaXplX3QpOwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDoga2pzL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvSlNBcnJh
eS5oCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDEyICsyMiwxMyBAQAogI2RlZmluZSBKU0FycmF5X2gKIAogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHR5cGVk
ZWYgSGFzaE1hcDx1bnNpZ25lZCwgSlNWYWx1ZSo+IFNwYXJzZUFycmF5VmFsdWVNYXA7CiAKLSAg
ICBzdHJ1Y3QgQXJyYXlTdG9yYWdlIHsKKyAgICBzdHJ1Y3QgQXJyYXlTdG9yYWdlIDogcHVibGlj
IFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiAgICAgICAgIHVu
c2lnbmVkIG1fdmVjdG9yTGVuZ3RoOwogICAgICAgICB1bnNpZ25lZCBtX251bVZhbHVlc0luVmVj
dG9yOwpAQCAtOTMsNyArOTQsNyBAQAogICAgICAgICB2b2lkIHB1dFNsb3dDYXNlKEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSopOwogCiAgICAgICAgIGJvb2wgaW5j
cmVhc2VWZWN0b3JMZW5ndGgodW5zaWduZWQgbmV3TGVuZ3RoKTsKLSAgICAgICAgCisKICAgICAg
ICAgdW5zaWduZWQgY29tcGFjdEZvclNvcnRpbmcoKTsKIAogICAgICAgICBlbnVtIENvbnNpc3Rl
bmN5Q2hlY2tUeXBlIHsgTm9ybWFsQ29uc2lzdGVuY3lDaGVjaywgRGVzdHJ1Y3RvckNvbnNpc3Rl
bmN5Q2hlY2ssIFNvcnRDb25zaXN0ZW5jeUNoZWNrIH07CkluZGV4OiBranMvU3RydWN0dXJlSUQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBranMvU3RydWN0dXJlSUQuaAkocmV2aXNpb24gMzcwNDgpCisrKyBr
anMvU3RydWN0dXJlSUQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV3Lmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC00NSw3ICs0Niw3IEBACiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlE
YXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUlEQ2hhaW47CiAKLSAgICBzdHJ1Y3QgVHJhbnNpdGlv
blRhYmxlSGFzaCB7CisgICAgc3RydWN0IFRyYW5zaXRpb25UYWJsZUhhc2ggOiBwdWJsaWMgV1RG
OjpBbGxvY0Jhc2UgewogICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxSZWZQdHI8VVN0cmluZzo6
UmVwPiwgdW5zaWduZWQ+IFRyYW5zaXRpb25UYWJsZUtleTsKICAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgVHJhbnNpdGlvblRhYmxlS2V5JiBwKQogICAgICAgICB7CkBAIC01Niwx
MSArNTcsMTEgQEAKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGEgPT0gYjsKICAgICAg
ICAgfQotCisgICAgICAgIFRyYW5zaXRpb25UYWJsZUhhc2goKSB7fQogICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiAgICAgfTsK
IAotICAgIHN0cnVjdCBUcmFuc2l0aW9uVGFibGVIYXNoVHJhaXRzIHsKKyAgICBzdHJ1Y3QgVHJh
bnNpdGlvblRhYmxlSGFzaFRyYWl0cyA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgICAg
IHR5cGVkZWYgV1RGOjpIYXNoVHJhaXRzPFJlZlB0cjxVU3RyaW5nOjpSZXA+ID4gRmlyc3RUcmFp
dHM7CiAgICAgICAgIHR5cGVkZWYgV1RGOjpHZW5lcmljSGFzaFRyYWl0czx1bnNpZ25lZD4gU2Vj
b25kVHJhaXRzOwogICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxGaXJzdFRyYWl0czo6VHJhaXRU
eXBlLCBTZWNvbmRUcmFpdHM6OlRyYWl0VHlwZT4gVHJhaXRUeXBlOwpAQCAtNzIsNiArNzMsNyBA
QAogCiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUcmFpdFR5cGUm
IHNsb3QpIHsgRmlyc3RUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90LmZpcnN0KTsg
fQogICAgICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBUcmFpdFR5cGUmIHZh
bHVlKSB7IHJldHVybiBGaXJzdFRyYWl0czo6aXNEZWxldGVkVmFsdWUodmFsdWUuZmlyc3QpOyB9
CisgICAgICAgIFRyYW5zaXRpb25UYWJsZUhhc2hUcmFpdHMoKSB7fQogICAgIH07CiAKICAgICBj
bGFzcyBTdHJ1Y3R1cmVJRCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVjdHVyZUlEPiB7CkluZGV4
OiBranMvaWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2lkZW50aWZpZXIuY3BwCShy
ZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9pZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTIgKzI3LDEzIEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L05ldy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIq
LCBSZWZQdHI8VVN0cmluZzo6UmVwPiwgUHRySGFzaDxjb25zdCBjaGFyKj4gPiBMaXRlcmFsSWRl
bnRpZmllclRhYmxlOwogCi1jbGFzcyBJZGVudGlmaWVyVGFibGUgeworY2xhc3MgSWRlbnRpZmll
clRhYmxlIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKIHB1YmxpYzoKICAgICB+SWRlbnRpZmll
clRhYmxlKCkKICAgICB7CkBAIC00MCw3ICs0MSw3IEBACiAgICAgICAgIGZvciAoSGFzaFNldDxV
U3RyaW5nOjpSZXAqPjo6aXRlcmF0b3IgaXRlciA9IG1fdGFibGUuYmVnaW4oKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikKICAgICAgICAgICAgICgqaXRlciktPnNldElkZW50aWZpZXJUYWJsZSgwKTsK
ICAgICB9Ci0gICAgCisKICAgICBzdGQ6OnBhaXI8SGFzaFNldDxVU3RyaW5nOjpSZXAqPjo6aXRl
cmF0b3IsIGJvb2w+IGFkZChVU3RyaW5nOjpSZXAqIHZhbHVlKQogICAgIHsKICAgICAgICAgc3Rk
OjpwYWlyPEhhc2hTZXQ8VVN0cmluZzo6UmVwKj46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBt
X3RhYmxlLmFkZCh2YWx1ZSk7CkBAIC05Niw3ICs5Nyw3IEBACiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0cnVjdCBDU3RyaW5nVHJhbnNsYXRvcgorc3RydWN0IENTdHJpbmdUcmFuc2xhdG9yIDog
cHVibGljIFdURjo6QWxsb2NCYXNlCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
Y2hhciogYykKICAgICB7CkBAIC0xMTQsNyArMTE1LDcgQEAKICAgICAgICAgVUNoYXIqIGQgPSBz
dGF0aWNfY2FzdDxVQ2hhcio+KGZhc3RNYWxsb2Moc2l6ZW9mKFVDaGFyKSAqIGxlbmd0aCkpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBsZW5ndGg7IGkrKykKICAgICAgICAgICAg
IGRbaV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjW2ldKTsgLy8gdXNlIHVuc2lnbmVk
IGNoYXIgdG8gemVyby1leHRlbmQgaW5zdGVhZCBvZiBzaWduLWV4dGVuZAotICAgICAgICAKKwog
ICAgICAgICBVU3RyaW5nOjpSZXAqIHIgPSBVU3RyaW5nOjpSZXA6OmNyZWF0ZShkLCBzdGF0aWNf
Y2FzdDxpbnQ+KGxlbmd0aCkpLnJlbGVhc2VSZWYoKTsKICAgICAgICAgci0+cmMgPSAwOwogICAg
ICAgICByLT5faGFzaCA9IGhhc2g7CkBAIC0xNTQsMTIgKzE1NSwyNCBAQAogICAgIHJldHVybiBh
ZGQoJmV4ZWMtPmdsb2JhbERhdGEoKSwgYyk7CiB9CiAKLXN0cnVjdCBVQ2hhckJ1ZmZlciB7Citz
dHJ1Y3QgVUNoYXJCdWZmZXIgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgIGNvbnN0IFVD
aGFyKiBzOwogICAgIHVuc2lnbmVkIGludCBsZW5ndGg7CisKKyAgICBVQ2hhckJ1ZmZlcigpCisJ
CTogcygwKQorCQksIGxlbmd0aCgwKQorCXsKKwl9CisKKyAgICBVQ2hhckJ1ZmZlcihjb25zdCBV
Q2hhciogX3MsIHVuc2lnbmVkIGludCBfbGVuZ3RoKQorICAgIAkJOiBzKF9zKQorICAgIAkJLCBs
ZW5ndGgoX2xlbmd0aCkKKwl7CisJfQogfTsKIAotc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRv
cgorc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvciA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZQog
ewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVDaGFyQnVmZmVyJiBidWYpCiAgICAg
ewpAQCAtMTc2LDEyICsxODksMTIgQEAKICAgICAgICAgVUNoYXIqIGQgPSBzdGF0aWNfY2FzdDxV
Q2hhcio+KGZhc3RNYWxsb2Moc2l6ZW9mKFVDaGFyKSAqIGJ1Zi5sZW5ndGgpKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBidWYubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICBk
W2ldID0gYnVmLnNbaV07Ci0gICAgICAgIAorCiAgICAgICAgIFVTdHJpbmc6OlJlcCogciA9IFVT
dHJpbmc6OlJlcDo6Y3JlYXRlKGQsIGJ1Zi5sZW5ndGgpLnJlbGVhc2VSZWYoKTsKICAgICAgICAg
ci0+cmMgPSAwOwogICAgICAgICByLT5faGFzaCA9IGhhc2g7Ci0gICAgICAgIAotICAgICAgICBs
b2NhdGlvbiA9IHI7IAorCisgICAgICAgIGxvY2F0aW9uID0gcjsKICAgICB9CiB9OwogCkBAIC0x
OTYsNyArMjA5LDcgQEAKICAgICAgICAgVVN0cmluZzo6UmVwOjplbXB0eS5oYXNoKCk7CiAgICAg
ICAgIHJldHVybiAmVVN0cmluZzo6UmVwOjplbXB0eTsKICAgICB9Ci0gICAgVUNoYXJCdWZmZXIg
YnVmID0ge3MsIGxlbmd0aH07IAorICAgIFVDaGFyQnVmZmVyIGJ1ZihzLCBsZW5ndGgpOwogICAg
IHJldHVybiAqZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlLT5hZGQ8VUNoYXJCdWZmZXIsIFVD
aGFyQnVmZmVyVHJhbnNsYXRvcj4oYnVmKS5maXJzdDsKIH0KIApJbmRleDoga2pzL0NvbW1vbklk
ZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0NvbW1vbklkZW50aWZpZXJzLmgJKHJldmlz
aW9uIDM3MDQ4KQorKysga2pzL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDcgKzY3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBDb21tb25JZGVu
dGlmaWVycyA6IE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBDb21tb25JZGVudGlmaWVycyA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQ29tbW9uSWRlbnRpZmll
cnMoSlNHbG9iYWxEYXRhKik7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0dsb2JhbERhdGE7Cklu
ZGV4OiBranMvRGF0ZU1hdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvRGF0ZU1hdGguaAkocmV2aXNp
b24gMzcwNDgpCisrKyBranMvRGF0ZU1hdGguaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEs
NyBAQAogCiAvLyBJbnRlbnRpb25hbGx5IG92ZXJyaWRkaW5nIHRoZSBkZWZhdWx0IHRtIG9mIHRo
ZSBzeXN0ZW0KIC8vIFRlZSBtZW1iZXJzIG9mIHRtIGRpZmZlciBvbiB2YXJpb3VzIG9wZXJhdGlu
ZyBzeXN0ZW1zLgotc3RydWN0IEdyZWdvcmlhbkRhdGVUaW1lIDogTm9uY29weWFibGUgeworc3Ry
dWN0IEdyZWdvcmlhbkRhdGVUaW1lIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBHcmVnb3Jp
YW5EYXRlVGltZSgpCiAgICAgICAgIDogc2Vjb25kKDApCiAgICAgICAgICwgbWludXRlKDApCklu
ZGV4OiBranMvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9BcnJheVByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL0FycmF5UHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQXJyYXlQcm90b3R5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1j
b25zdCBDbGFzc0luZm8gQXJyYXlQcm90b3R5cGU6OmluZm8gPSB7IkFycmF5IiwgJkpTQXJyYXk6
OmluZm8sIDAsIEV4ZWNTdGF0ZTo6YXJyYXlUYWJsZX07Citjb25zdCBDbGFzc0luZm8gQXJyYXlQ
cm90b3R5cGU6OmluZm8oIkFycmF5IiwgJkpTQXJyYXk6OmluZm8sIDAsIEV4ZWNTdGF0ZTo6YXJy
YXlUYWJsZSk7CiAKIC8qIFNvdXJjZSBmb3IgQXJyYXlQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBh
cnJheVRhYmxlIDE2CkluZGV4OiBranMvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0pT
QXJyYXkuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9KU0FycmF5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9BVkxUcmVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDxvcGVyYXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL05ldy5oPgogCiAjZGVmaW5lIENIRUNLX0FSUkFZX0NPTlNJU1RFTkNZIDAKIApAQCAtODEs
NyArODIsNyBAQAogLy8gYXMgbG9uZyBhcyBpdCBpcyAxLzggZnVsbC4gSWYgbW9yZSBzcGFyc2Ug
dGhhbiB0aGF0LCB3ZSB1c2UgYSBtYXAuCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluRGVuc2l0
eU11bHRpcGxpZXIgPSA4OwogCi1jb25zdCBDbGFzc0luZm8gSlNBcnJheTo6aW5mbyA9IHsiQXJy
YXkiLCAwLCAwLCAwfTsKK2NvbnN0IENsYXNzSW5mbyBKU0FycmF5OjppbmZvKCJBcnJheSIsIDAs
IDAsIDApOwogCiBzdGF0aWMgaW5saW5lIHNpemVfdCBzdG9yYWdlU2l6ZSh1bnNpZ25lZCB2ZWN0
b3JMZW5ndGgpCiB7CkBAIC02ODIsNyArNjgzLDcgQEAKICAgICBjaGVja0NvbnNpc3RlbmN5KFNv
cnRDb25zaXN0ZW5jeUNoZWNrKTsKIH0KIAotc3RydWN0IEFWTFRyZWVOb2RlRm9yQXJyYXlDb21w
YXJlIHsKK3N0cnVjdCBBVkxUcmVlTm9kZUZvckFycmF5Q29tcGFyZSA6IHB1YmxpYyBXVEY6OkFs
bG9jQmFzZSB7CiAgICAgSlNWYWx1ZSogdmFsdWU7CiAKICAgICAvLyBDaGlsZCBwb2ludGVycy4g
IFRoZSBoaWdoIGJpdCBvZiBndCBpcyByb2JiZWQgYW5kIHVzZWQgYXMgdGhlCkBAIC02OTIsNyAr
NjkzLDcgQEAKICAgICBpbnQzMl90IGx0OwogfTsKIAotc3RydWN0IEFWTFRyZWVBYnN0cmFjdG9y
Rm9yQXJyYXlDb21wYXJlIHsKK3N0cnVjdCBBVkxUcmVlQWJzdHJhY3RvckZvckFycmF5Q29tcGFy
ZSA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgdHlwZWRlZiBpbnQzMl90IGhhbmRsZTsg
Ly8gSGFuZGxlIGlzIGFuIGluZGV4IGludG8gbV9ub2RlcyB2ZWN0b3IuCiAgICAgdHlwZWRlZiBK
U1ZhbHVlKiBrZXk7CiAgICAgdHlwZWRlZiBpbnQzMl90IHNpemU7CkluZGV4OiBranMvZ3JhbW1h
ci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtqcy9ncmFtbWFyLnkJKHJldmlzaW9uIDM3MDQ4KQorKysga2pz
L2dyYW1tYXIueQkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBACiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gTm9kZUZlYXR1cmVJbmZvPFQ+IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbyhUIG5v
ZGUsIEZlYXR1cmVJbmZvIGluZm8sIGludCBudW1Db25zdGFudHMpCiB7CiAgICAgQVNTRVJUKChp
bmZvICYgfihFdmFsRmVhdHVyZSB8IENsb3N1cmVGZWF0dXJlIHwgQXNzaWduRmVhdHVyZSkpID09
IDApOwotICAgIE5vZGVGZWF0dXJlSW5mbzxUPiByZXN1bHQgPSB7bm9kZSwgaW5mbywgbnVtQ29u
c3RhbnRzfTsKKyAgICBOb2RlRmVhdHVyZUluZm88VD4gcmVzdWx0ID0geyBub2RlLCBpbmZvLCBu
dW1Db25zdGFudHMgfTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBranMvSlNWYXJp
YWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlz
aW9uIDM3MDQ4KQorKysga2pzL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlVudXNlZFBhcmFtLmgiCiAjaW5jbHVkZSA8d3RmL093
bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3Rm
L05ldy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNjAsNyArNjEsNyBAQAogICAgICAgICAv
LyBTdWJjbGFzc2VzIG9mIEpTVmFyaWFibGVPYmplY3QgY2FuIHN1YmNsYXNzIHRoaXMgc3RydWN0
IHRvIGFkZCBkYXRhCiAgICAgICAgIC8vIHdpdGhvdXQgaW5jcmVhc2luZyB0aGVpciBvd24gc2l6
ZSAoc2luY2UgdGhlcmUncyBhIGhhcmQgbGltaXQgb24gdGhlCiAgICAgICAgIC8vIHNpemUgb2Yg
YSBKU0NlbGwpLgotICAgICAgICBzdHJ1Y3QgSlNWYXJpYWJsZU9iamVjdERhdGEgeworICAgICAg
ICBzdHJ1Y3QgSlNWYXJpYWJsZU9iamVjdERhdGEgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2Ugewog
ICAgICAgICAgICAgSlNWYXJpYWJsZU9iamVjdERhdGEoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
XywgUmVnaXN0ZXIqIHJlZ2lzdGVyc18pCiAgICAgICAgICAgICAgICAgOiBzeW1ib2xUYWJsZShz
eW1ib2xUYWJsZV8pCiAgICAgICAgICAgICAgICAgLCByZWdpc3RlcnMocmVnaXN0ZXJzXykKSW5k
ZXg6IGtqcy9FcnJvckluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvRXJyb3JJbnN0YW5j
ZS5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL0Vycm9ySW5zdGFuY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFz
c0luZm8gRXJyb3JJbnN0YW5jZTo6aW5mbyA9IHsgIkVycm9yIiwgMCwgMCwgMCB9OworY29uc3Qg
Q2xhc3NJbmZvIEVycm9ySW5zdGFuY2U6OmluZm8oIkVycm9yIiwgMCwgMCwgMCk7CiAKIEVycm9y
SW5zdGFuY2U6OkVycm9ySW5zdGFuY2UoUGFzc1JlZlB0cjxTdHJ1Y3R1cmVJRD4gc3RydWN0dXJl
KQogICAgIDogSlNPYmplY3Qoc3RydWN0dXJlKQpJbmRleDoga2pzL1NtYWxsU3RyaW5ncy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga2pzL1NtYWxsU3RyaW5ncy5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysg
a2pzL1NtYWxsU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIFNtYWxsU3RyaW5nc1N0b3JhZ2UgeworY2xhc3MgU21h
bGxTdHJpbmdzU3RvcmFnZSA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiBwdWJsaWM6CiAgICAg
U21hbGxTdHJpbmdzU3RvcmFnZSgpOwogICAgIH5TbWFsbFN0cmluZ3NTdG9yYWdlKCk7CkluZGV4
OiBranMvaWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9pZGVudGlmaWVyLmgJKHJldmlz
aW9uIDM3MDQ4KQorKysga2pzL2lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIg
KzIzLDEzIEBACiAKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJ1c3RyaW5n
LmgiCisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEV4ZWNTdGF0ZTsKIAotICAgIGNsYXNzIElkZW50aWZpZXIgeworICAgIGNsYXNzIElkZW50aWZp
ZXIgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAgICBmcmllbmQgY2xhc3MgUHJvcGVy
dHlNYXA7CiAgICAgcHVibGljOgogICAgICAgICBJZGVudGlmaWVyKCkgeyB9CkluZGV4OiBranMv
SlNMb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0pTTG9jay5oCShyZXZpc2lvbiAzNzA0OCkKKysr
IGtqcy9KU0xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQAogCiAgICAgY2xh
c3MgRXhlY1N0YXRlOwogCi0gICAgY2xhc3MgSlNMb2NrIDogTm9uY29weWFibGUgeworICAgIGNs
YXNzIEpTTG9jayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBK
U0xvY2soRXhlY1N0YXRlKik7CiAKQEAgLTg1LDcgKzg1LDcgQEAKIAogICAgICAgICBib29sIG1f
bG9ja2luZ0ZvclJlYWw7CiAKLSAgICAgICAgY2xhc3MgRHJvcEFsbExvY2tzIDogTm9uY29weWFi
bGUgeworICAgICAgICBjbGFzcyBEcm9wQWxsTG9ja3MgOiBwdWJsaWMgTm9uY29weWFibGUgewog
ICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICBEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKiBleGVj
KTsKICAgICAgICAgICAgIERyb3BBbGxMb2Nrcyhib29sKTsKSW5kZXg6IGtqcy9Qcm9wZXJ0eVNs
b3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBranMvUHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDM3MDQ4KQor
Kysga2pzL1Byb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiaWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL05vdEZvdW5kLmg+CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtMzUsNyArMzYsNyBAQAogI2RlZmluZSBKU0NfVkFMVUVfU0xPVF9NQVJLRVIg
MAogI2RlZmluZSBKU0NfUkVHSVNURVJfU0xPVF9NQVJLRVIgcmVpbnRlcnByZXRfY2FzdDxHZXRW
YWx1ZUZ1bmM+KDEpCiAKLSAgICBjbGFzcyBQcm9wZXJ0eVNsb3QgeworICAgIGNsYXNzIFByb3Bl
cnR5U2xvdCA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBQ
cm9wZXJ0eVNsb3QoKQogICAgICAgICAgICAgOiBtX29mZnNldChXVEY6Om5vdEZvdW5kKQpJbmRl
eDoga2pzL0pTQWN0aXZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0pTQWN0aXZhdGlvbi5j
cHAJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL0pTQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwotIAorCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAK
QEAgLTM3LDcgKzM3LDcgQEAKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0FjdGl2YXRp
b24pOwogCi1jb25zdCBDbGFzc0luZm8gSlNBY3RpdmF0aW9uOjppbmZvID0geyAiSlNBY3RpdmF0
aW9uIiwgMCwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTQWN0aXZhdGlvbjo6aW5mbygiSlNB
Y3RpdmF0aW9uIiwgMCwgMCwgMCk7CiAKIEpTQWN0aXZhdGlvbjo6SlNBY3RpdmF0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBmdW5jdGlvbkJvZHksIFJl
Z2lzdGVyKiByZWdpc3RlcnMpCiAgICAgOiBCYXNlKGV4ZWMtPmdsb2JhbERhdGEoKS5udWxsUHJv
dG9TdHJ1Y3R1cmVJRCwgbmV3IEpTQWN0aXZhdGlvbkRhdGEoZnVuY3Rpb25Cb2R5LCByZWdpc3Rl
cnMpKQpJbmRleDoga2pzL0RhdGVJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0RhdGVJ
bnN0YW5jZS5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL0RhdGVJbnN0YW5jZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDE3ICsyNSwxOCBAQAogI2luY2x1ZGUgIkRhdGVNYXRoLmgiCiAj
aW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IERhdGVJbnN0YW5jZTo6Q2Fj
aGUgeworc3RydWN0IERhdGVJbnN0YW5jZTo6Q2FjaGUgIDogcHVibGljIFdURjo6QWxsb2NCYXNl
IHsKICAgICBkb3VibGUgbV9ncmVnb3JpYW5EYXRlVGltZUNhY2hlZEZvck1TOwogICAgIEdyZWdv
cmlhbkRhdGVUaW1lIG1fY2FjaGVkR3JlZ29yaWFuRGF0ZVRpbWU7CiAgICAgZG91YmxlIG1fZ3Jl
Z29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUzsKICAgICBHcmVnb3JpYW5EYXRlVGltZSBtX2Nh
Y2hlZEdyZWdvcmlhbkRhdGVUaW1lVVRDOwogfTsKIAotY29uc3QgQ2xhc3NJbmZvIERhdGVJbnN0
YW5jZTo6aW5mbyA9IHsiRGF0ZSIsIDAsIDAsIDB9OworY29uc3QgQ2xhc3NJbmZvIERhdGVJbnN0
YW5jZTo6aW5mbygiRGF0ZSIsIDAsIDAsIDApOwogCiBEYXRlSW5zdGFuY2U6OkRhdGVJbnN0YW5j
ZShQYXNzUmVmUHRyPFN0cnVjdHVyZUlEPiBzdHJ1Y3R1cmUpCiAgICAgOiBKU1dyYXBwZXJPYmpl
Y3Qoc3RydWN0dXJlKQpJbmRleDoga2pzL2ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pz
L2ludGVycHJldGVyLmgJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL2ludGVycHJldGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXcu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM1LDcgKzM2LDcgQEAKICAgY2xhc3MgU291cmNl
UHJvdmlkZXI7CiAgIGNsYXNzIFVTdHJpbmc7CiAgIAotICBjbGFzcyBJbnRlcnByZXRlciB7Cisg
IGNsYXNzIEludGVycHJldGVyIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgcHVibGljOgog
ICAgIC8qKgogICAgICAqIFBhcnNlcyB0aGUgc3VwcGxpZWQgRUNNQVNjcmlwdCBjb2RlIGFuZCBj
aGVja3MgZm9yIHN5bnRheCBlcnJvcnMuCkluZGV4OiBranMvbG9va3VwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga2pzL2xvb2t1cC5oCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9sb29rdXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksMTUgKzI5LDIxIEBACiAjaW5jbHVkZSAiaWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvTmV3Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgLy8gSGFzaCB0YWJsZSBnZW5lcmF0
ZWQgYnkgdGhlIGNyZWF0ZV9oYXNoX3RhYmxlIHNjcmlwdC4KLSAgICBzdHJ1Y3QgSGFzaFRhYmxl
VmFsdWUgeworICAgIHN0cnVjdCBIYXNoVGFibGVWYWx1ZSA6IHB1YmxpYyBXVEY6OkFsbG9jQmFz
ZSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGtleTsgLy8gcHJvcGVydHkgbmFtZQogICAgICAgICB1
bnNpZ25lZCBjaGFyIGF0dHJpYnV0ZXM7IC8vIEpTT2JqZWN0IGF0dHJpYnV0ZXMKICAgICAgICAg
aW50cHRyX3QgdmFsdWUxOwogICAgICAgICBpbnRwdHJfdCB2YWx1ZTI7CisgICAgICAgIAorICAg
ICAgICBIYXNoVGFibGVWYWx1ZShjb25zdCBjaGFyKiBfa2V5LCB1bnNpZ25lZCBjaGFyIF9hdHRy
aWJ1dGVzLCBpbnRwdHJfdCB2MSwgaW50cHRyX3QgdjIpCisgICAgICAgICAgICA6IGtleShfa2V5
KSwgYXR0cmlidXRlcyhfYXR0cmlidXRlcyksIHZhbHVlMSh2MSksIHZhbHVlMih2MikKKyAgICAg
ICAgeworICAgICAgICB9CiAgICAgfTsKIAogICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBubyByZWFz
b24gdGhpcyBnZXQgZnVuY3Rpb24gY2FuJ3QgYmUgc2ltcGxlci4KQEAgLTQ1LDcgKzUxLDcgQEAK
ICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogICAg
IHR5cGVkZWYgdm9pZCAoKlB1dEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9i
amVjdCwgSlNWYWx1ZSogdmFsdWUpOwogCi0gICAgY2xhc3MgSGFzaEVudHJ5IHsKKyAgICBjbGFz
cyBIYXNoRW50cnkgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2V7CiAgICAgcHVibGljOgogICAgICAg
ICB2b2lkIGluaXRpYWxpemUoVVN0cmluZzo6UmVwKiBrZXksIHVuc2lnbmVkIGNoYXIgYXR0cmli
dXRlcywgaW50cHRyX3QgdjEsIGludHB0cl90IHYyKQogICAgICAgICB7CkBAIC02Nyw2ICs3Mywx
NiBAQAogICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJU
KCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0K
IAogICAgICAgICBpbnRwdHJfdCBsZXhlclZhbHVlKCkgY29uc3QgeyBBU1NFUlQoIW1fYXR0cmli
dXRlcyk7IHJldHVybiBtX3UubGV4ZXIudmFsdWU7IH0KKyAgICAgICAgCisgICAgICAgIEhhc2hF
bnRyeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoMCwgMCwgMCwgMCk7Cisg
ICAgICAgIH0KKyAKKyAgICAgICAgSGFzaEVudHJ5KFVTdHJpbmc6OlJlcCoga2V5LCB1bnNpZ25l
ZCBjaGFyIGF0dHIsIGludHB0cl90IHYxLCBpbnRwdHJfdCB2MikKKyAgICAgICAgeworICAgICAg
ICAgICAgaW5pdGlhbGl6ZShrZXksIGF0dHIsIHYxLCB2Mik7CisgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIFVTdHJpbmc6OlJlcCogbV9rZXk7CkBAIC05MiwxMCArMTA4LDE1IEBA
CiAgICAgICAgIH0gbV91OwogICAgIH07CiAKLSAgICBzdHJ1Y3QgSGFzaFRhYmxlIHsKKyAgICBz
dHJ1Y3QgSGFzaFRhYmxlIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgaW50IGhh
c2hTaXplTWFzazsgLy8gUHJlY29tcHV0ZWQgc2l6ZSBmb3IgdGhlIGhhc2ggdGFibGUgKG1pbnVz
IDEpLgogICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogdmFsdWVzOyAvLyBGaXhlZCB2YWx1
ZXMgZ2VuZXJhdGVkIGJ5IHNjcmlwdC4KICAgICAgICAgbXV0YWJsZSBjb25zdCBIYXNoRW50cnkq
IHRhYmxlOyAvLyBUYWJsZSBhbGxvY2F0ZWQgYXQgcnVudGltZS4KKyAgICAgICAgCisgICAgICAg
IEhhc2hUYWJsZShpbnQgX2hhc2hTaXplTWFzaywgY29uc3QgSGFzaFRhYmxlVmFsdWUqIF92YWx1
ZXMsIGNvbnN0IEhhc2hFbnRyeSogX3RhYmxlKQorICAgICAgICAgICAgOiBoYXNoU2l6ZU1hc2so
X2hhc2hTaXplTWFzayksIHZhbHVlcyhfdmFsdWVzKSwgdGFibGUoX3RhYmxlKQorICAgICAgICB7
CisgICAgICAgIH0KIAogICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW5pdGlhbGl6ZUlmTmVl
ZGVkKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkgY29uc3QKICAgICAgICAgewpJbmRleDoga2pz
L2NvbXBsZXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvY29tcGxldGlvbi5oCShyZXZpc2lvbiAz
NzA0OCkKKysrIGtqcy9jb21wbGV0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDgg
QEAKICNpZm5kZWYgS0pTX0NPTVBMRVRJT05fSAogI2RlZmluZSBLSlNfQ09NUExFVElPTl9ICiAK
KyNpbmNsdWRlIDx3dGYvTmV3Lmg+CisKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNW
YWx1ZTsKQEAgLTMzLDcgKzM1LDcgQEAKICAgICAgKiBDb21wbGV0aW9uIG9iamVjdHMgYXJlIHVz
ZWQgdG8gY29udmV5IHRoZSByZXR1cm4gc3RhdHVzIGFuZCB2YWx1ZQogICAgICAqIGZyb20gZnVu
Y3Rpb25zLgogICAgICAqLwotICAgIGNsYXNzIENvbXBsZXRpb24geworICAgIGNsYXNzIENvbXBs
ZXRpb24gOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgQ29t
cGxldGlvbihDb21wbFR5cGUgdHlwZSA9IE5vcm1hbCwgSlNWYWx1ZSogdmFsdWUgPSAwKQogICAg
ICAgICAgICAgOiBtX3R5cGUodHlwZSkKSW5kZXg6IGtqcy9wcm90ZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga2pzL3Byb3RlY3QuaAkocmV2aXNpb24gMzcwNDgpCisrKyBranMvcHJvdGVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCwxMCArMjQsMTEgQEAKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNp
bmNsdWRlICJjb2xsZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvTmV3Lmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCi0gICAgaW5saW5lIHZvaWQgZ2NQcm90ZWN0KEpTVmFsdWUqIHZhbCkgCisgICAgaW5s
aW5lIHZvaWQgZ2NQcm90ZWN0KEpTVmFsdWUqIHZhbCkKICAgICB7CiAgICAgICAgIEhlYXAqIGhl
YXAgPSBIZWFwOjpoZWFwKHZhbCk7CiAgICAgICAgIGlmIChoZWFwKQpJbmRleDoga2pzL2R0b2Eu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtqcy9kdG9hLmNwcAkocmV2aXNpb24gMzcwNDgpCisrKyBranMv
ZHRvYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBAQAogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiAjaWYgQ09NUElMRVIoTVNW
QykKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MjQ0KQpAQCAtMjcxLDcgKzI3Miw3IEBACiAK
ICNkZWZpbmUgS21heCAxNQogCi1zdHJ1Y3QgQmlnaW50IHsKK3N0cnVjdCBCaWdpbnQgOiBwdWJs
aWMgV1RGOjpBbGxvY0Jhc2UgewogICAgIHN0cnVjdCBCaWdpbnQqIG5leHQ7CiAgICAgaW50IGss
IG1heHdkcywgc2lnbiwgd2RzOwogICAgIHVpbnQzMl90IHhbMV07CkBAIC01OTUsNyArNTk2LDcg
QEAKICAgICAgICAgICAgICAgICBwNS0+bmV4dCA9IG11bHQocDUsIHA1KTsKICAgICAgICAgICAg
ICAgICArK3A1c19jb3VudDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBwNXNfY291bnRfbG9jYWwgPSBwNXNfY291bnQ7CiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBM
RV9USFJFQURTKQogICAgICAgICAgICAgc19kdG9hUDVNdXRleC0+dW5sb2NrKCk7CkluZGV4OiBr
anMvU21hbGxTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL1NtYWxsU3RyaW5ncy5oCShyZXZp
c2lvbiAzNzA0OCkKKysrIGtqcy9TbWFsbFN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAidXN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvTmV3Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNiw3ICsz
Nyw3IEBACiAKICAgICBjbGFzcyBTbWFsbFN0cmluZ3NTdG9yYWdlOwogCi0gICAgY2xhc3MgU21h
bGxTdHJpbmdzIDogTm9uY29weWFibGUgeworICAgIGNsYXNzIFNtYWxsU3RyaW5ncyA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBTbWFsbFN0cmluZ3MoKTsKICAg
ICAgICAgflNtYWxsU3RyaW5ncygpOwpJbmRleDoga2pzL1Byb3BlcnR5TmFtZUFycmF5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2pzL1Byb3BlcnR5TmFtZUFycmF5LmgJKHJldmlzaW9uIDM3MDQ4KQorKysg
a2pzL1Byb3BlcnR5TmFtZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtNTcsNyArNTgsNyBAQAogICAgICAgICBSZWZQdHI8U3RydWN0dXJlSURDaGFpbj4g
bV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKICAgICB9OwogCi0gICAgY2xhc3MgUHJvcGVydHlOYW1l
QXJyYXkgeworICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5IDogcHVibGljIFdURjo6QWxsb2NC
YXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgUHJvcGVydHlOYW1lQXJyYXlEYXRh
Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKIApJbmRleDoga2pzL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDM3MDQ4KQorKysga2pzL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDcgKzc1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBTdHJpbmdQ
cm90b3R5cGU6OmluZm8gPSB7ICJTdHJpbmciLCAmU3RyaW5nT2JqZWN0OjppbmZvLCAwLCBFeGVj
U3RhdGU6OnN0cmluZ1RhYmxlIH07Citjb25zdCBDbGFzc0luZm8gU3RyaW5nUHJvdG90eXBlOjpp
bmZvKCJTdHJpbmciLCAmU3RyaW5nT2JqZWN0OjppbmZvLCAwLCBFeGVjU3RhdGU6OnN0cmluZ1Rh
YmxlKTsKIAogLyogU291cmNlIGZvciBTdHJpbmdQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBzdHJp
bmdUYWJsZSAyNgpAQCAtNDU1LDcgKzQ1NSw3IEBACiAgICAgUmVmUHRyPFJlZ0V4cD4gcmVnOwog
ICAgIGlmIChhMC0+aXNPYmplY3QoKSAmJiBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGEwKS0+aW5o
ZXJpdHMoJlJlZ0V4cE9iamVjdDo6aW5mbykpCiAgICAgICAgIHJlZyA9IHN0YXRpY19jYXN0PFJl
Z0V4cE9iamVjdCo+KGEwKS0+cmVnRXhwKCk7Ci0gICAgZWxzZSB7IAorICAgIGVsc2UgewogICAg
ICAgICAvKgogICAgICAgICAgKiAgRUNNQSAxNS41LjQuMTIgU3RyaW5nLnByb3RvdHlwZS5zZWFy
Y2ggKHJlZ2V4cCkKICAgICAgICAgICogIElmIHJlZ2V4cCBpcyBub3QgYW4gb2JqZWN0IHdob3Nl
IFtbQ2xhc3NdXSBwcm9wZXJ0eSBpcyAiUmVnRXhwIiwgaXQgaXMKSW5kZXg6IGtqcy9EZWJ1Z2dl
ckNhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZp
c2lvbiAzNzA0OCkKKysrIGtqcy9EZWJ1Z2dlckNhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSwxMiArMjUsMTQgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwot
IAorCiAjaWZuZGVmIERlYnVnZ2VyQ2FsbEZyYW1lX2gKICNkZWZpbmUgRGVidWdnZXJDYWxsRnJh
bWVfaAogCisjaW5jbHVkZSA8d3RmL05ldy5oPgorCiBuYW1lc3BhY2UgSlNDIHsKLSAgICAKKwog
ICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSlNH
bG9iYWxPYmplY3Q7CkBAIC00MCw4ICs0Miw4IEBACiAgICAgY2xhc3MgVVN0cmluZzsKICAgICBj
bGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKLSAgICAKLSAgICBjbGFz
cyBEZWJ1Z2dlckNhbGxGcmFtZSB7CisKKyAgICBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZSA6IHB1
YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5cGUgewog
ICAgICAgICAgICAgUHJvZ3JhbVR5cGUsCkluZGV4OiBranMvRGF0ZVByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2pzL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGtq
cy9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDM4ICsxNzYsMzggQEAK
ICNlbHNlCiAKIGVudW0gTG9jYWxlRGF0ZVRpbWVGb3JtYXQgeyBMb2NhbGVEYXRlQW5kVGltZSwg
TG9jYWxlRGF0ZSwgTG9jYWxlVGltZSB9OwotIAorCiBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2Nh
bGVEYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIGdkdCwgY29u
c3QgTG9jYWxlRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KQogewogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBmb3JtYXRTdHJpbmdzW10gPSB7IiUjYyIsICIlI3giLCAiJVgifTsKLSAKKwogICAgIC8vIE9m
ZnNldCB5ZWFyIGlmIG5lZWRlZAogICAgIHN0cnVjdCB0bSBsb2NhbFRNID0gZ2R0OwogICAgIGlu
dCB5ZWFyID0gZ2R0LnllYXIgKyAxOTAwOwogICAgIGJvb2wgeWVhck5lZWRzT2Zmc2V0ID0geWVh
ciA8IDE5MDAgfHwgeWVhciA+IDIwMzg7CiAgICAgaWYgKHllYXJOZWVkc09mZnNldCkKICAgICAg
ICAgbG9jYWxUTS50bV95ZWFyID0gZXF1aXZhbGVudFllYXJGb3JEU1QoeWVhcikgLSAxOTAwOwot
IAorCiAgICAgLy8gRG8gdGhlIGZvcm1hdHRpbmcKICAgICBjb25zdCBpbnQgYnVmc2l6ZSA9IDEy
ODsKICAgICBjaGFyIHRpbWVidWZmZXJbYnVmc2l6ZV07CiAgICAgc2l6ZV90IHJldCA9IHN0cmZ0
aW1lKHRpbWVidWZmZXIsIGJ1ZnNpemUsIGZvcm1hdFN0cmluZ3NbZm9ybWF0XSwgJmxvY2FsVE0p
OwotIAorCiAgICAgaWYgKHJldCA9PSAwKQogICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhl
eGVjKTsKLSAKKwogICAgIC8vIENvcHkgb3JpZ2luYWwgaW50byB0aGUgYnVmZmVyCiAgICAgaWYg
KHllYXJOZWVkc09mZnNldCAmJiBmb3JtYXQgIT0gTG9jYWxlVGltZSkgewogICAgICAgICBzdGF0
aWMgY29uc3QgaW50IHllYXJMZW4gPSA1OyAgIC8vIEZJWE1FIHdpbGwgYmUgYSBwcm9ibGVtIGlu
IHRoZSB5ZWFyIDEwLDAwMAogICAgICAgICBjaGFyIHllYXJTdHJpbmdbeWVhckxlbl07Ci0gCisK
ICAgICAgICAgc25wcmludGYoeWVhclN0cmluZywgeWVhckxlbiwgIiVkIiwgbG9jYWxUTS50bV95
ZWFyICsgMTkwMCk7CiAgICAgICAgIGNoYXIqIHllYXJMb2NhdGlvbiA9IHN0cnN0cih0aW1lYnVm
ZmVyLCB5ZWFyU3RyaW5nKTsKICAgICAgICAgc25wcmludGYoeWVhclN0cmluZywgeWVhckxlbiwg
IiVkIiwgeWVhcik7Ci0gCisKICAgICAgICAgc3RybmNweSh5ZWFyTG9jYXRpb24sIHllYXJTdHJp
bmcsIHllYXJMZW4gLSAxKTsKICAgICB9Ci0gCisKICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsIHRpbWVidWZmZXIpOwogfQogCkBAIC0yMjMsNyArMjIzLDcgQEAKICAgICBib29s
IG9rID0gdHJ1ZTsKICAgICBpbnQgaWR4ID0gMDsKICAgICBpbnQgbnVtQXJncyA9IGFyZ3Muc2l6
ZSgpOwotICAgIAorCiAgICAgLy8gSlMgYWxsb3dzIGV4dHJhIHRyYWlsaW5nIGFyZ3VtZW50cyAt
LSBpZ25vcmUgdGhlbQogICAgIGlmIChudW1BcmdzID4gbWF4QXJncykKICAgICAgICAgbnVtQXJn
cyA9IG1heEFyZ3M7CkBAIC0yMzksMTYgKzIzOSwxNiBAQAogICAgICAgICB0LT5taW51dGUgPSAw
OwogICAgICAgICBtaWxsaXNlY29uZHMgKz0gYXJncy5hdChleGVjLCBpZHgrKyktPnRvSW50MzIo
ZXhlYywgb2spICogbXNQZXJNaW51dGU7CiAgICAgfQotICAgIAorCiAgICAgLy8gc2Vjb25kcwog
ICAgIGlmIChtYXhBcmdzID49IDIgJiYgaWR4IDwgbnVtQXJncyAmJiBvaykgewogICAgICAgICB0
LT5zZWNvbmQgPSAwOwogICAgICAgICBtaWxsaXNlY29uZHMgKz0gYXJncy5hdChleGVjLCBpZHgr
KyktPnRvSW50MzIoZXhlYywgb2spICogbXNQZXJTZWNvbmQ7CiAgICAgfQotICAgIAorCiAgICAg
aWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKKwogICAgIC8vIG1pbGxp
c2Vjb25kcwogICAgIGlmIChpZHggPCBudW1BcmdzKSB7CiAgICAgICAgIGRvdWJsZSBtaWxsaXMg
PSBhcmdzLmF0KGV4ZWMsIGlkeCktPnRvTnVtYmVyKGV4ZWMpOwpAQCAtMjU2LDcgKzI1Niw3IEBA
CiAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBtaWxsaXM7CiAgICAgfSBlbHNlCiAgICAgICAgIG1p
bGxpc2Vjb25kcyArPSAqbXM7Ci0gICAgCisKICAgICAqbXMgPSBtaWxsaXNlY29uZHM7CiAgICAg
cmV0dXJuIG9rOwogfQpAQCAtMjcwLDI5ICsyNzAsMjkgQEAKICAgICBpbnQgaWR4ID0gMDsKICAg
ICBib29sIG9rID0gdHJ1ZTsKICAgICBpbnQgbnVtQXJncyA9IGFyZ3Muc2l6ZSgpOwotICAKKwog
ICAgIC8vIEpTIGFsbG93cyBleHRyYSB0cmFpbGluZyBhcmd1bWVudHMgLS0gaWdub3JlIHRoZW0K
ICAgICBpZiAobnVtQXJncyA+IG1heEFyZ3MpCiAgICAgICAgIG51bUFyZ3MgPSBtYXhBcmdzOwot
ICAKKwogICAgIC8vIHllYXJzCiAgICAgaWYgKG1heEFyZ3MgPj0gMyAmJiBpZHggPCBudW1Bcmdz
KQogICAgICAgICB0LT55ZWFyID0gYXJncy5hdChleGVjLCBpZHgrKyktPnRvSW50MzIoZXhlYywg
b2spIC0gMTkwMDsKLSAgICAKKwogICAgIC8vIG1vbnRocwotICAgIGlmIChtYXhBcmdzID49IDIg
JiYgaWR4IDwgbnVtQXJncyAmJiBvaykgICAKKyAgICBpZiAobWF4QXJncyA+PSAyICYmIGlkeCA8
IG51bUFyZ3MgJiYgb2spCiAgICAgICAgIHQtPm1vbnRoID0gYXJncy5hdChleGVjLCBpZHgrKykt
PnRvSW50MzIoZXhlYywgb2spOwotICAgIAorCiAgICAgLy8gZGF5cwotICAgIGlmIChpZHggPCBu
dW1BcmdzICYmIG9rKSB7ICAgCisgICAgaWYgKGlkeCA8IG51bUFyZ3MgJiYgb2spIHsKICAgICAg
ICAgdC0+bW9udGhEYXkgPSAwOwogICAgICAgICAqbXMgKz0gYXJncy5hdChleGVjLCBpZHgpLT50
b0ludDMyKGV4ZWMsIG9rKSAqIG1zUGVyRGF5OwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBv
azsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIERhdGVQcm90b3R5cGU6OmluZm8gPSB7IkRhdGUiLCAm
RGF0ZUluc3RhbmNlOjppbmZvLCAwLCBFeGVjU3RhdGU6OmRhdGVUYWJsZX07Citjb25zdCBDbGFz
c0luZm8gRGF0ZVByb3RvdHlwZTo6aW5mbygiRGF0ZSIsICZEYXRlSW5zdGFuY2U6OmluZm8sIDAs
IEV4ZWNTdGF0ZTo6ZGF0ZVRhYmxlKTsKIAogLyogU291cmNlIGZvciBEYXRlUHJvdG90eXBlLmx1
dC5oCiAgICBGSVhNRTogV2UgY291bGQgdXNlIHRlbXBsYXRlcyB0byBzaW1wbGlmeSB0aGUgVVRD
IHZhcmlhbnRzLgpJbmRleDoga2pzL25vZGVzMnN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pz
L25vZGVzMnN0cmluZy5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL25vZGVzMnN0cmluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdW5p
Y29kZS9Vbmljb2RlLmg+CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CkBAIC0zOSw3ICs0MCw3IEBACiBlbnVtIFVu
aW5kZW50VHlwZSB7IFVuaW5kZW50IH07CiBlbnVtIERvdEV4cHJUeXBlIHsgRG90RXhwciB9Owog
Ci1jbGFzcyBTb3VyY2VTdHJlYW0geworY2xhc3MgU291cmNlU3RyZWFtIDogcHVibGljIFdURjo6
QWxsb2NCYXNlIHsKIHB1YmxpYzoKICAgICBTb3VyY2VTdHJlYW0oKQogICAgICAgICA6IG1fbnVt
YmVyTmVlZHNQYXJlbnMoZmFsc2UpCkluZGV4OiBranMvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga2pzL0NsYXNzSW5mby5oCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9DbGFzc0luZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsMTMgKzI0LDE0IEBACiAjZGVmaW5lIENsYXNzSW5mb19oCiAK
ICNpbmNsdWRlICJFeGVjU3RhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV3Lmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgc3RydWN0IEhhc2hFbnRyeTsKICAgICBzdHJ1Y3QgSGFzaFRhYmxlOwog
Ci0gICAgc3RydWN0IENsYXNzSW5mbyB7CisgICAgc3RydWN0IENsYXNzSW5mbyA6IHB1YmxpYyBX
VEY6OkFsbG9jQmFzZSB7CiAgICAgICAgIC8qKgogICAgICAgICAgKiBBIHN0cmluZyBkZW5vdGlu
ZyB0aGUgY2xhc3MgbmFtZS4gRXhhbXBsZTogIldpbmRvdyIuCiAgICAgICAgICAqLwpAQCAtNTUs
NiArNTYsMjMgQEAKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBzdGF0aWNQcm9wSGFzaFRhYmxl
OwogICAgICAgICB0eXBlZGVmIGNvbnN0IEhhc2hUYWJsZSogKCpDbGFzc1Byb3BIYXNoVGFibGVH
ZXR0ZXJGdW5jdGlvbikoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IENsYXNzUHJvcEhhc2hU
YWJsZUdldHRlckZ1bmN0aW9uIGNsYXNzUHJvcEhhc2hUYWJsZUdldHRlckZ1bmN0aW9uOworCisg
ICAgICAgIENsYXNzSW5mbygpCisJCQk6IGNsYXNzTmFtZSgwKQorCQkJLCBwYXJlbnRDbGFzcygw
KQorCQkJLCBzdGF0aWNQcm9wSGFzaFRhYmxlKDApCisJCQksIGNsYXNzUHJvcEhhc2hUYWJsZUdl
dHRlckZ1bmN0aW9uKCkKKwkJeworCQl9CisKKyAgICAJQ2xhc3NJbmZvKGNvbnN0IGNoYXIqIF9j
bGFzc05hbWUsIGNvbnN0IENsYXNzSW5mbyogX3BhcmVudENsYXNzLAorICAgIAkJCSAgY29uc3Qg
SGFzaFRhYmxlKiBoYXNoVGFibGUsIGNvbnN0IENsYXNzUHJvcEhhc2hUYWJsZUdldHRlckZ1bmN0
aW9uIGdldHRlckZ1bmN0aW9uKQorCQkJOiBjbGFzc05hbWUoX2NsYXNzTmFtZSkKKwkJCSwgcGFy
ZW50Q2xhc3MoX3BhcmVudENsYXNzKQorCQkJLCBzdGF0aWNQcm9wSGFzaFRhYmxlKGhhc2hUYWJs
ZSkKKwkJCSwgY2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVyRnVuY3Rpb24oZ2V0dGVyRnVuY3Rpb24p
CisJCXsKKwkJfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDoga2pzL1Byb3Bl
cnR5TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL1Byb3BlcnR5TWFwLmgJKHJldmlzaW9uIDM3MDQ4
KQorKysga2pzL1Byb3BlcnR5TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiAjaWZuZGVm
IE5ERUJVRwogI2RlZmluZSBEVU1QX1BST1BFUlRZTUFQX1NUQVRTIDAKQEAgLTQwLDcgKzQxLDcg
QEAKIAogICAgIHR5cGVkZWYgSlNWYWx1ZSoqIFByb3BlcnR5U3RvcmFnZTsKIAotICAgIHN0cnVj
dCBQcm9wZXJ0eU1hcEVudHJ5IHsKKyAgICBzdHJ1Y3QgUHJvcGVydHlNYXBFbnRyeSA6IHB1Ymxp
YyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgICAgIFVTdHJpbmc6OlJlcCoga2V5OwogICAgICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICB1bnNpZ25lZCBpbmRleDsKQEAgLTU3LDcgKzU4
LDcgQEAKICAgICAvLyB3ZXJlIGluc2VydGVkIGludG8gdGhlIHByb3BlcnR5IG1hcC4gSXQncyBy
ZXF1aXJlZCB0aGF0IGdldEVudW1lcmFibGVQcm9wZXJ0eU5hbWVzCiAgICAgLy8gcmV0dXJuIHRo
ZSBwcm9wZXJ0aWVzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBvdGhlcgogICAgIC8vIGJyb3dzZXJzJyBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9u
cy4KLSAgICBzdHJ1Y3QgUHJvcGVydHlNYXBIYXNoVGFibGUgeworICAgIHN0cnVjdCBQcm9wZXJ0
eU1hcEhhc2hUYWJsZSA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgICAgIHVuc2lnbmVk
IHNpemVNYXNrOwogICAgICAgICB1bnNpZ25lZCBzaXplOwogICAgICAgICB1bnNpZ25lZCBrZXlD
b3VudDsKQEAgLTg1LDcgKzg2LDcgQEAKICAgICAgICAgfQogICAgIH07CiAKLSAgICBjbGFzcyBQ
cm9wZXJ0eU1hcCB7CisgICAgY2xhc3MgUHJvcGVydHlNYXAgOiBwdWJsaWMgV1RGOjpBbGxvY0Jh
c2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUHJvcGVydHlNYXAoKTsKICAgICAgICAgflByb3Bl
cnR5TWFwKCk7CkluZGV4OiBranMvTnVtYmVyQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGtqcy9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL051bWJl
ckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIE51bWJlckNvbnN0cnVjdG9yOjppbmZvID0g
eyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6aW5mbywgMCwgRXhlY1N0YXRlOjpudW1i
ZXJUYWJsZSB9OworY29uc3QgQ2xhc3NJbmZvIE51bWJlckNvbnN0cnVjdG9yOjppbmZvKCJGdW5j
dGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjppbmZvLCAwLCBFeGVjU3RhdGU6Om51bWJlclRhYmxl
KTsKIAogLyogU291cmNlIGZvciBOdW1iZXJDb25zdHJ1Y3Rvci5sdXQuaAogQGJlZ2luIG51bWJl
clRhYmxlCkluZGV4OiBranMvUmVnRXhwQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtq
cy9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL1JlZ0V4cENv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
InJlZ2V4cC5oIgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTYwLDcgKzYxLDcgQEAKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChSZWdFeHBDb25zdHJ1
Y3Rvcik7CiAKLWNvbnN0IENsYXNzSW5mbyBSZWdFeHBDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OmluZm8sIDAsIEV4ZWNTdGF0ZTo6cmVnRXhwQ29u
c3RydWN0b3JUYWJsZSB9OworY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cENvbnN0cnVjdG9yOjppbmZv
KCJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjppbmZvLCAwLCBFeGVjU3RhdGU6OnJlZ0V4
cENvbnN0cnVjdG9yVGFibGUpOwogCiAvKiBTb3VyY2UgZm9yIFJlZ0V4cENvbnN0cnVjdG9yLmx1
dC5oCiBAYmVnaW4gcmVnRXhwQ29uc3RydWN0b3JUYWJsZQpAQCAtODgsNyArODksNyBAQAogQGVu
ZAogKi8KIAotc3RydWN0IFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSB7CitzdHJ1Y3QgUmVnRXhw
Q29uc3RydWN0b3JQcml2YXRlIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAvLyBHbG9i
YWwgc2VhcmNoIGNhY2hlIC8gc2V0dGluZ3MKICAgICBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUo
KQogICAgICAgICA6IGxhc3ROdW1TdWJQYXR0ZXJucygwKQpAQCAtMTE0LDkgKzExNSw5IEBACiAg
ICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMs
IDIpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7CiB9CiAKLS8qIAorLyoKICAg
VG8gZmFjaWxpdGF0ZSByZXN1bHQgY2FjaGluZywgZXhlYygpLCB0ZXN0KCksIG1hdGNoKCksIHNl
YXJjaCgpLCBhbmQgcmVwbGFjZSgpIGRpcGF0Y2ggcmVndWxhcgotICBleHByZXNzaW9uIG1hdGNo
aW5nIHRocm91Z2ggdGhlIHBlcmZvcm1NYXRjaCBmdW5jdGlvbi4gV2UgdXNlIGNhY2hlZCByZXN1
bHRzIHRvIGNhbGN1bGF0ZSwgCisgIGV4cHJlc3Npb24gbWF0Y2hpbmcgdGhyb3VnaCB0aGUgcGVy
Zm9ybU1hdGNoIGZ1bmN0aW9uLiBXZSB1c2UgY2FjaGVkIHJlc3VsdHMgdG8gY2FsY3VsYXRlLAog
ICBlLmcuLCBSZWdFeHAubGFzdE1hdGNoIGFuZCBSZWdFeHAubGVmdFBhcmVuLgogKi8KIHZvaWQg
UmVnRXhwQ29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaChSZWdFeHAqIHIsIGNvbnN0IFVTdHJpbmcm
IHMsIGludCBzdGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgaW50JiBsZW5ndGgsIGludCoqIG92
ZWN0b3IpCkBAIC0yMjAsNyArMjIxLDcgQEAKICAgICAgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4
ZWMsIGQtPmxhc3RJbnB1dCwgZC0+bGFzdE92ZWN0b3JbMV0sIGQtPmxhc3RJbnB1dC5zaXplKCkg
LSBkLT5sYXN0T3ZlY3RvclsxXSk7CiAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CiB9
Ci0gICAgCisKIGJvb2wgUmVnRXhwQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8UmVnRXhwQ29uc3RydWN0
b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6cmVnRXhwQ29uc3RydWN0b3JU
YWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTMxNSw3ICszMTYsNyBA
QAogewogICAgIHN0YXRpY19jYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oYmFzZU9iamVjdCktPnNl
dE11bHRpbGluZSh2YWx1ZS0+dG9Cb29sZWFuKGV4ZWMpKTsKIH0KLSAgCisKIC8vIEVDTUEgMTUu
MTAuNAogSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCiB7CkluZGV4OiBranMvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL1Bh
cnNlci5oCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQAogICAgIGNsYXNzIFVTdHJpbmc7CiAKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLSAgICBzdHJ1Y3QgUGFyc2VyUmVmQ291bnRlZERhdGEgOiBQYXJzZXJSZWZDb3Vu
dGVkIHsKKyAgICBzdHJ1Y3QgUGFyc2VyUmVmQ291bnRlZERhdGEgOiBwdWJsaWMgUGFyc2VyUmVm
Q291bnRlZCB7CiAgICAgICAgIFBhcnNlclJlZkNvdW50ZWREYXRhKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKICAgICAgICAgICAgIDogUGFyc2VyUmVmQ291bnRlZChnbG9iYWxEYXRhKQogICAg
ICAgICB7CkBAIC00Niw3ICs0Niw3IEBACiAgICAgICAgIFQgZGF0YTsKICAgICB9OwogCi0gICAg
Y2xhc3MgUGFyc2VyIDogTm9uY29weWFibGUgeworICAgIGNsYXNzIFBhcnNlciA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2Vk
Tm9kZT4KICAgICAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIsIFBhc3NSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZSwKSW5kZXg6IGtqcy9Bcmd1bWVudHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtqcy9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9Bcmd1
bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIEFTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoQXJndW1lbnRzKTsKIAotY29uc3QgQ2xhc3NJbmZvIEFyZ3VtZW50czo6
aW5mbyA9IHsgIkFyZ3VtZW50cyIsIDAsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBBcmd1bWVu
dHM6OmluZm8oIkFyZ3VtZW50cyIsIDAsIDAsIDApOwogCiBzdHJ1Y3QgQXJndW1lbnRzRGF0YSA6
IE5vbmNvcHlhYmxlIHsKICAgICBBcmd1bWVudHNEYXRhKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlv
biwgdW5zaWduZWQgbnVtUGFyYW1ldGVycywgaW50IGZpcnN0UGFyYW1ldGVySW5kZXgsIHVuc2ln
bmVkIG51bUFyZ3VtZW50cywgSlNGdW5jdGlvbiogY2FsbGVlKQpJbmRleDoga2pzL1NoZWxsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBranMvU2hlbGwuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9T
aGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlIDxzdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJh
aXRzLmg+CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiAjaWYgIVBMQVRGT1JNKFdJTl9PUykKICNp
bmNsdWRlIDx1bmlzdGQuaD4KQEAgLTEwNSw3ICsxMDYsNyBAQAogc3RhdGljIGNvbnN0IGNoYXIg
aW50ZXJhY3RpdmVQcm9tcHRbXSA9ICI+ICI7CiBzdGF0aWMgY29uc3QgVVN0cmluZyBpbnRlcnBy
ZXRlck5hbWUoIkludGVycHJldGVyIik7CiAKLWNsYXNzIFN0b3BXYXRjaCB7CitjbGFzcyBTdG9w
V2F0Y2ggOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogcHVibGljOgogICAgIHZvaWQgc3RhcnQo
KTsKICAgICB2b2lkIHN0b3AoKTsKSW5kZXg6IGtqcy9NYXRoT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBranMvTWF0aE9iamVjdC5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL01hdGhPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBACiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBNYXRoT2JqZWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBNYXRoT2JqZWN0OjppbmZvID0geyAiTWF0aCIsIDAs
IDAsIEV4ZWNTdGF0ZTo6bWF0aFRhYmxlIH07Citjb25zdCBDbGFzc0luZm8gTWF0aE9iamVjdDo6
aW5mbygiTWF0aCIsIDAsIDAsIEV4ZWNTdGF0ZTo6bWF0aFRhYmxlKTsKIAogLyogU291cmNlIGZv
ciBNYXRoT2JqZWN0Lmx1dC5oCiBAYmVnaW4gbWF0aFRhYmxlCkBAIC03NSw3ICs3NSw3IEBACiAg
IG1heCAgICAgICAgICAgbWF0aFByb3RvRnVuY01heCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKICAgbWluICAgICAgICAgICBtYXRoUHJvdG9GdW5jTWluICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMgogICBwb3cgICAgICAgICAgIG1hdGhQcm90b0Z1bmNQb3cgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gIHJhbmRvbSAgICAgICAgbWF0aFByb3Rv
RnVuY1JhbmRvbSAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAgCisgIHJhbmRvbSAgICAg
ICAgbWF0aFByb3RvRnVuY1JhbmRvbSAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAg
cm91bmQgICAgICAgICBtYXRoUHJvdG9GdW5jUm91bmQgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQogICBzaW4gICAgICAgICAgIG1hdGhQcm90b0Z1bmNTaW4gICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCiAgIHNxcnQgICAgICAgICAgbWF0aFByb3RvRnVuY1NxcnQgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKSW5kZXg6IGtqcy9SZWdFeHBPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGtqcy9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysr
IGtqcy9SZWdFeHBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiAK
IEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoUmVnRXhwT2JqZWN0KTsKIAotY29uc3QgQ2xhc3NJ
bmZvIFJlZ0V4cE9iamVjdDo6aW5mbyA9IHsgIlJlZ0V4cCIsIDAsIDAsIEV4ZWNTdGF0ZTo6cmVn
RXhwVGFibGUgfTsKK2NvbnN0IENsYXNzSW5mbyBSZWdFeHBPYmplY3Q6OmluZm8oIlJlZ0V4cCIs
IDAsIDAsIEV4ZWNTdGF0ZTo6cmVnRXhwVGFibGUpOwogCiAvKiBTb3VyY2UgZm9yIFJlZ0V4cE9i
amVjdC5sdXQuaAogQGJlZ2luIHJlZ0V4cFRhYmxlCkluZGV4OiBranMvU291cmNlUmFuZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBranMvU291cmNlUmFuZ2UuaAkocmV2aXNpb24gMzcwNDgpCisrKyBranMv
U291cmNlUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDExIEBACiAKICNpbmNs
dWRlICJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvTmV3Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgU291cmNlUmFuZ2Ug
eworICAgIGNsYXNzIFNvdXJjZVJhbmdlIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFNvdXJjZVJhbmdlKFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHBy
b3ZpZGVyLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgICAgICAgICA6IG1fc291cmNlUHJvdmlk
ZXIocHJvdmlkZXIpCkluZGV4OiBranMvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
anMvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMzcwNDgpCisrKyBranMvSlNHbG9iYWxPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlN0cmluZ1By
b3RvdHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI1Myw3
ICsyNTQsNyBAQAogICAgICAgICBKU0dsb2JhbE9iamVjdERhdGEqIGQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxKU0dsb2JhbE9iamVjdERhdGEqPihKU1ZhcmlhYmxlT2JqZWN0OjpkKTsg
fQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdHJ1Y3QgR2xvYmFsUHJvcGVydHlJbmZvIHsK
KyAgICAgICAgc3RydWN0IEdsb2JhbFByb3BlcnR5SW5mbyA6IHB1YmxpYyBXVEY6OkFsbG9jQmFz
ZSB7CiAgICAgICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oY29uc3QgSWRlbnRpZmllciYgaSwg
SlNWYWx1ZSogdiwgdW5zaWduZWQgYSkKICAgICAgICAgICAgICAgICA6IGlkZW50aWZpZXIoaSkK
ICAgICAgICAgICAgICAgICAsIHZhbHVlKHYpCkluZGV4OiBranMvRXhlY1N0YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2pzL0V4ZWNTdGF0ZS5oCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9FeGVjU3Rh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogICAgIAogICAgIC8vIFJlcHJl
c2VudHMgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc2NyaXB0IGV4ZWN1dGlvbi4KICAgICAvLyBQYXNz
ZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIG1vc3QgZnVuY3Rpb25zLgotICAgIGNsYXNzIEV4
ZWNTdGF0ZSA6IE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBFeGVjU3RhdGUgOiBwdWJsaWMgTm9u
Y29weWFibGUgewogI2lmIEVOQUJMRShDVEkpCiAgICAgICAgIGZyaWVuZCBjbGFzcyBDVEk7CiAj
ZW5kaWYKSW5kZXg6IGtqcy91c3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL3VzdHJpbmcuaAko
cmV2aXNpb24gMzcwNDgpCisrKyBranMvdXN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CisjaW5jbHVkZSA8d3RmL05ldy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzksNyArNDAsNyBAQAogCiAgICAgY2xhc3MgSWRl
bnRpZmllclRhYmxlOwogICAKLSAgICBjbGFzcyBDU3RyaW5nIHsKKyAgICBjbGFzcyBDU3RyaW5n
IDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIENTdHJpbmco
KQogICAgICAgICAgICAgOiBtX2xlbmd0aCgwKQpAQCAtNzAsMTEgKzcxLDExIEBACiAKICAgICB0
eXBlZGVmIFZlY3RvcjxjaGFyLCAzMj4gQ1N0cmluZ0J1ZmZlcjsKIAotICAgIGNsYXNzIFVTdHJp
bmcgeworICAgIGNsYXNzIFVTdHJpbmcgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAg
ICBmcmllbmQgY2xhc3MgQ1RJOwogCiAgICAgcHVibGljOgotICAgICAgICBzdHJ1Y3QgUmVwIHsK
KyAgICAgICAgc3RydWN0IFJlcCA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgICAgICAg
ICBmcmllbmQgY2xhc3MgQ1RJOwogCiAgICAgICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXA+
IGNyZWF0ZShVQ2hhciosIGludCk7CkBAIC0xMjMsOCArMTI0LDIyIEBACiAgICAgICAgICAgICBp
bnQgdXNlZENhcGFjaXR5OwogICAgICAgICAgICAgaW50IGNhcGFjaXR5OwogICAgICAgICAgICAg
aW50IHVzZWRQcmVDYXBhY2l0eTsKLSAgICAgICAgICAgIGludCBwcmVDYXBhY2l0eTsKLQorICAg
ICAgICAgICAgaW50IHByZUNhcGFjaXR5OyAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVw
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgUmVwKGludCBfb2Zmc2V0LCBpbnQgX2xlbiwgaW50IF9yYywgdW5zaWduZWQgX19oYXNoLCBp
bnRwdHJfdCBpZGVudGlmaWVyVGFibGUsCisgICAgICAgICAgICAgICBVU3RyaW5nOjpSZXAqIF9i
YXNlU3RyaW5nLCBzaXplX3QgX3JlcG9ydGVkQ29zdCwgIFVDaGFyKiBfYnVmLCBpbnQgX3VzZWRD
YXBhY2l0eSwKKyAgICAgICAgICAgICAgIGludCBfY2FwYWNpdHksIGludCBfdXNlZFByZUNhcGFj
aXR5LCBpbnQgX3ByZUNhcGFjaXR5KSA6CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
IG9mZnNldChfb2Zmc2V0KSwgbGVuKF9sZW4pLCByYyhfcmMpLCBfaGFzaChfX2hhc2gpLCBtX2lk
ZW50aWZpZXJUYWJsZShpZGVudGlmaWVyVGFibGUpLAorICAgICAgICAgICAgICAgYmFzZVN0cmlu
ZyhfYmFzZVN0cmluZyksIHJlcG9ydGVkQ29zdChfcmVwb3J0ZWRDb3N0KSwgYnVmKF9idWYpLCB1
c2VkQ2FwYWNpdHkoX3VzZWRDYXBhY2l0eSksCisgICAgICAgICAgICAgICBjYXBhY2l0eShfY2Fw
YWNpdHkpLCB1c2VkUHJlQ2FwYWNpdHkoX3VzZWRQcmVDYXBhY2l0eSksIHByZUNhcGFjaXR5KF9w
cmVDYXBhY2l0eSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAog
ICAgICAgICAgICAgc3RhdGljIFJlcCBudWxsOwogICAgICAgICAgICAgc3RhdGljIFJlcCBlbXB0
eTsKICAgICAgICAgfTsKQEAgLTE1Nyw3ICsxNzIsNyBAQAogICAgICAgICBzdGF0aWMgVVN0cmlu
ZyBmcm9tKGxvbmcpOwogICAgICAgICBzdGF0aWMgVVN0cmluZyBmcm9tKGRvdWJsZSk7CiAKLSAg
ICAgICAgc3RydWN0IFJhbmdlIHsKKyAgICAgICAgc3RydWN0IFJhbmdlIDogcHVibGljIFdURjo6
QWxsb2NCYXNlIHsKICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgUmFuZ2UoaW50IHBvcywg
aW50IGxlbikKICAgICAgICAgICAgICAgICA6IHBvc2l0aW9uKHBvcykKQEAgLTM1Miw3ICszNjcs
NyBAQAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU3RySGFzaDsKIAotICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IFN0ckhhc2g8SlNDOjpVU3RyaW5nOjpSZXAqPiB7CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
U3RySGFzaDxKU0M6OlVTdHJpbmc6OlJlcCo+IDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAg
ICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgSlNDOjpVU3RyaW5nOjpSZXAqIGtleSkg
eyByZXR1cm4ga2V5LT5oYXNoKCk7IH0KICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
SlNDOjpVU3RyaW5nOjpSZXAqIGEsIGNvbnN0IEpTQzo6VVN0cmluZzo6UmVwKiBiKSB7IHJldHVy
biBKU0M6OmVxdWFsKGEsIGIpOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CkluZGV4OiBranMvTGFiZWxTdGFjay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtqcy9MYWJlbFN0YWNrLmgJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL0xh
YmVsU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotICAgIGNsYXNzIExhYmVsU3RhY2sgOiBOb25jb3B5YWJsZSB7CisgICAgY2xhc3Mg
TGFiZWxTdGFjayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBM
YWJlbFN0YWNrKCkKICAgICAgICAgICAgIDogbV90b3BPZlN0YWNrKDApCkluZGV4OiBranMvSlNW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9KU1ZhbHVlLmgJKHJldmlzaW9uIDM3MDQ4KQorKysg
a2pzL0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQAogICAgICAqIG9u
bHkgKGFsbCBvZiB3aGljaCBhcmUgcHJvdmlkZWQgaW50ZXJuYWxseSBieSBLSlMpLiBJbnN0ZWFk
LCBpbmhlcml0IGZyb20KICAgICAgKiBKU09iamVjdC4KICAgICAgKi8KLSAgICBjbGFzcyBKU1Zh
bHVlIDogTm9uY29weWFibGUgeworICAgIGNsYXNzIEpTVmFsdWUgOiBwdWJsaWMgTm9uY29weWFi
bGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSlNDZWxsOyAvLyBzbyBpdCBjYW4gZGVyaXZlIGZy
b20gdGhpcyBjbGFzcwogICAgIHByaXZhdGU6CiAgICAgICAgIEpTVmFsdWUoKTsKSW5kZXg6IGtq
cy9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9SZWdFeHBQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAKIC8vIEVDTUEgMTUuMTAuNQogCi1jb25zdCBDbGFz
c0luZm8gUmVnRXhwUHJvdG90eXBlOjppbmZvID0geyAiUmVnRXhwUHJvdG90eXBlIiwgMCwgMCwg
MCB9OworY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cFByb3RvdHlwZTo6aW5mbygiUmVnRXhwUHJvdG90
eXBlIiwgMCwgMCwgMCk7CiAKIFJlZ0V4cFByb3RvdHlwZTo6UmVnRXhwUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVJRD4gc3RydWN0dXJlLCBTdHJ1Y3R1cmVJ
RCogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUpCiAgICAgOiBKU09iamVjdChzdHJ1Y3R1cmUp
CkluZGV4OiBranMvZGVidWdnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvZGVidWdnZXIuaAkocmV2
aXNpb24gMzcwNDgpCisrKyBranMvZGVidWdnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiAr
MjMsNyBAQAogI2RlZmluZSBEZWJ1Z2dlcl9oCiAKICNpbmNsdWRlICJwcm90ZWN0LmgiCisjaW5j
bHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzIsNyArMzMsNyBAQAog
ICAgIGNsYXNzIFNvdXJjZVByb3ZpZGVyOwogICAgIGNsYXNzIFVTdHJpbmc7CiAKLSAgICBjbGFz
cyBEZWJ1Z2dlciB7CisgICAgY2xhc3MgRGVidWdnZXIgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2Ug
ewogICAgIHB1YmxpYzoKICAgICAgICAgRGVidWdnZXIoKTsKICAgICAgICAgdmlydHVhbCB+RGVi
dWdnZXIoKTsKSW5kZXg6IGtqcy91c3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvdXN0cmlu
Zy5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL3VzdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODYsOCArMTg2LDggQEAKIC8vIFRoZXNlIHN0YXRpYyBzdHJpbmdzIGFyZSBpbW11dGFi
bGUsIGV4Y2VwdCBmb3IgcmMsIHdob3NlIGluaXRpYWwgdmFsdWUgaXMgY2hvc2VuIHRvIAogLy8g
cmVkdWNlIHRoZSBwb3NzaWJpbGl0eSBvZiBpdCBiZWNvbWluZyB6ZXJvIGR1ZSB0byByZWYvZGVy
ZWYgbm90IGJlaW5nIHRocmVhZC1zYWZlLgogc3RhdGljIFVDaGFyIHNoYXJlZEVtcHR5Q2hhcjsK
LVVTdHJpbmc6OlJlcCBVU3RyaW5nOjpSZXA6Om51bGwgPSB7IDAsIDAsIElOVF9NQVggLyAyLCAw
LCAxLCAmVVN0cmluZzo6UmVwOjpudWxsLCAwLCAwLCAwLCAwLCAwLCAwIH07Ci1VU3RyaW5nOjpS
ZXAgVVN0cmluZzo6UmVwOjplbXB0eSA9IHsgMCwgMCwgSU5UX01BWCAvIDIsIDAsIDEsICZVU3Ry
aW5nOjpSZXA6OmVtcHR5LCAwLCAmc2hhcmVkRW1wdHlDaGFyLCAwLCAwLCAwLCAwIH07CitVU3Ry
aW5nOjpSZXAgVVN0cmluZzo6UmVwOjpudWxsKFVTdHJpbmc6OlJlcCgwLCAwLCBJTlRfTUFYIC8g
MiwgMCwgMSwgJlVTdHJpbmc6OlJlcDo6bnVsbCwgMCwgMCwgMCwgMCwgMCwgMCkpOworVVN0cmlu
Zzo6UmVwIFVTdHJpbmc6OlJlcDo6ZW1wdHkoVVN0cmluZzo6UmVwKDAsIDAsIElOVF9NQVggLyAy
LCAwLCAxLCAmVVN0cmluZzo6UmVwOjplbXB0eSwgMCwgJnNoYXJlZEVtcHR5Q2hhciwgMCwgMCwg
MCwgMCkpOwogCiBzdGF0aWMgY2hhciogc3RhdEJ1ZmZlciA9IDA7IC8vIE9ubHkgdXNlZCBmb3Ig
ZGVidWdnaW5nIHZpYSBVU3RyaW5nOjphc2NpaSgpLgogCkluZGV4OiBranMvU3RyaW5nT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBranMvU3RyaW5nT2JqZWN0LmNwcAkocmV2aXNpb24gMzcwNDgp
CisrKyBranMvU3RyaW5nT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBA
QAogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ09iamVjdCk7CiAKLWNvbnN0IENs
YXNzSW5mbyBTdHJpbmdPYmplY3Q6OmluZm8gPSB7ICJTdHJpbmciLCAwLCAwLCAwIH07Citjb25z
dCBDbGFzc0luZm8gU3RyaW5nT2JqZWN0OjppbmZvKCJTdHJpbmciLCAwLCAwLCAwKTsKIAogU3Ry
aW5nT2JqZWN0OjpTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPFN0cnVj
dHVyZUlEPiBzdHJ1Y3R1cmUpCiAgICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQpJbmRl
eDoga2pzL25vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL25vZGVzLmgJKHJldmlzaW9uIDM3MDQ4
KQorKysga2pzL25vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQAogICAg
ICAgICBQcmVjRXhwcmVzc2lvbgogICAgIH07CiAKLSAgICBzdHJ1Y3QgRGVjbGFyYXRpb25TdGFj
a3MgeworICAgIHN0cnVjdCBEZWNsYXJhdGlvblN0YWNrcyA6IHB1YmxpYyBXVEY6OkFsbG9jQmFz
ZSB7CiAgICAgICAgIHR5cGVkZWYgVmVjdG9yPE5vZGUqLCAxNj4gTm9kZVN0YWNrOwogICAgICAg
ICBlbnVtIHsgSXNDb25zdGFudCA9IDEsIEhhc0luaXRpYWxpemVyID0gMiB9IFZhckF0dHJzOwog
ICAgICAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8SWRlbnRpZmllciwgdW5zaWduZWQ+LCAx
Nj4gVmFyU3RhY2s7CkBAIC0xMjQsMTMgKzEyNCwyNSBAQAogICAgICAgICBGdW5jdGlvblN0YWNr
JiBmdW5jdGlvblN0YWNrOwogICAgIH07CiAKLSAgICBzdHJ1Y3QgU3dpdGNoSW5mbyB7CisgICAg
c3RydWN0IFN3aXRjaEluZm8gOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAgICBlbnVt
IFN3aXRjaFR5cGUgeyBTd2l0Y2hOb25lLCBTd2l0Y2hJbW1lZGlhdGUsIFN3aXRjaENoYXJhY3Rl
ciwgU3dpdGNoU3RyaW5nIH07CiAgICAgICAgIHVpbnQzMl90IG9wY29kZU9mZnNldDsKICAgICAg
ICAgU3dpdGNoVHlwZSBzd2l0Y2hUeXBlOworICAgICAgICAKKyAgICAgICAgU3dpdGNoSW5mbygp
CisgICAgICAgICAgICA6IG9wY29kZU9mZnNldCgwKQorICAgICAgICAgICAgLCBzd2l0Y2hUeXBl
KCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTd2l0Y2hJbmZvKHVp
bnQzMl90IF9vcGNvZGVPZmZzZXQsIFN3aXRjaFR5cGUgX3N3aXRjaHR5cGUpCisgICAgICAgICAg
ICA6IG9wY29kZU9mZnNldChfb3Bjb2RlT2Zmc2V0KQorICAgICAgICAgICAgLCBzd2l0Y2hUeXBl
KF9zd2l0Y2h0eXBlKQorICAgICAgICB7CisgICAgICAgIH0KICAgICB9OwogCi0gICAgY2xhc3Mg
UGFyc2VyUmVmQ291bnRlZCA6IE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBQYXJzZXJSZWZDb3Vu
dGVkIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFBhcnNl
clJlZkNvdW50ZWQoSlNHbG9iYWxEYXRhKikgSlNDX0ZBU1RfQ0FMTDsKIApJbmRleDoga2pzL051
bWJlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL051bWJlck9iamVjdC5jcHAJKHJldmlz
aW9uIDM3MDQ4KQorKysga2pzL051bWJlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDcgKzI5LDcgQEAKIAogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChOdW1iZXJPYmplY3QpOwog
Ci1jb25zdCBDbGFzc0luZm8gTnVtYmVyT2JqZWN0OjppbmZvID0geyAiTnVtYmVyIiwgMCwgMCwg
MCB9OworY29uc3QgQ2xhc3NJbmZvIE51bWJlck9iamVjdDo6aW5mbygiTnVtYmVyIiwgMCwgMCwg
MCk7CiAKIE51bWJlck9iamVjdDo6TnVtYmVyT2JqZWN0KFBhc3NSZWZQdHI8U3RydWN0dXJlSUQ+
IHN0cnVjdHVyZSkKICAgICA6IEpTV3JhcHBlck9iamVjdChzdHJ1Y3R1cmUpCkluZGV4OiBranMv
U2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9TY29wZUNoYWluLmgJKHJldmlzaW9uIDM3
MDQ4KQorKysga2pzL1Njb3BlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBA
QAogI2RlZmluZSBTY29wZUNoYWluX2gKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjksNyArMzAsNyBA
QAogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKICAg
ICAKLSAgICBjbGFzcyBTY29wZUNoYWluTm9kZSB7CisgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGUg
OiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgU2NvcGVDaGFp
bk5vZGUoU2NvcGVDaGFpbk5vZGUqIG4sIEpTT2JqZWN0KiBvLCBKU09iamVjdCogZ3QpCiAgICAg
ICAgICAgICA6IG5leHQobikKQEAgLTExNSw3ICsxMTYsNyBAQAogICAgICAgICB9IHdoaWxlIChu
ICYmIC0tbi0+cmVmQ291bnQgPT0gMCk7CiAgICAgfQogCi0gICAgY2xhc3MgU2NvcGVDaGFpbkl0
ZXJhdG9yIHsKKyAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3IgOiBwdWJsaWMgV1RGOjpBbGxv
Y0Jhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yKGNvbnN0IFNj
b3BlQ2hhaW5Ob2RlKiBub2RlKQogICAgICAgICAgICAgOiBtX25vZGUobm9kZSkKQEAgLTE0Niw5
ICsxNDcsOSBAQAogICAgICAgICByZXR1cm4gU2NvcGVDaGFpbkl0ZXJhdG9yKDApOyAKICAgICB9
CiAKLSAgICBjbGFzcyBOb1Njb3BlQ2hhaW4ge307CisgICAgY2xhc3MgTm9TY29wZUNoYWluIDog
cHVibGljIFdURjo6QWxsb2NCYXNlIHt9OwogCi0gICAgY2xhc3MgU2NvcGVDaGFpbiB7CisgICAg
Y2xhc3MgU2NvcGVDaGFpbiA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBTY29wZUNoYWluKE5vU2NvcGVDaGFpbikKICAgICAgICAgICAgIDogbV9ub2RlKDAp
CkluZGV4OiBranMvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0pTRnVuY3Rpb24u
Y3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNyBAQAogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTRnVuY3Rp
b24pOwogCi1jb25zdCBDbGFzc0luZm8gSlNGdW5jdGlvbjo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwg
MCwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTRnVuY3Rpb246OmluZm8oIkZ1bmN0aW9uIiwg
MCwgMCwgMCk7CiAKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbk5vZGUpCiAgICAgOiBCYXNlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgbmFtZSkKSW5kZXg6IGtqcy9TeW1ib2xUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtqcy9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAzNzA0OCkKKysr
IGtqcy9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJ1c3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0Fs
d2F5c0lubGluZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTQxLDcgKzQyLDcgQEAKICAgICAvLyByZWFzb25hYmx5IHNtYWxsIHBvc2l0aXZlIG9yIG5l
Z2F0aXZlIG51bWJlciwgYW5kIHRoZXJlZm9yZSBoYXMgaXRzIGhpZ2gKICAgICAvLyBmb3VyIGJp
dHMgYWxsIHNldCBvciBhbGwgdW5zZXQuCiAKLSAgICBzdHJ1Y3QgU3ltYm9sVGFibGVFbnRyeSB7
CisgICAgc3RydWN0IFN5bWJvbFRhYmxlRW50cnkgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2Ugewog
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5KCkKICAgICAgICAgICAgIDogbV9iaXRzKDApCiAgICAg
ICAgIHsKQEAgLTExMiw3ICsxMTMsNyBAQAogICAgICAgICBpbnQgbV9iaXRzOwogICAgIH07CiAK
LSAgICBzdHJ1Y3QgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHMgeworICAgIHN0cnVjdCBTeW1i
b2xUYWJsZUluZGV4SGFzaFRyYWl0cyA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgICAg
IHR5cGVkZWYgU3ltYm9sVGFibGVFbnRyeSBUcmFpdFR5cGU7CiAgICAgICAgIHN0YXRpYyBTeW1i
b2xUYWJsZUVudHJ5IGVtcHR5VmFsdWUoKSB7IHJldHVybiBTeW1ib2xUYWJsZUVudHJ5KCk7IH0K
ICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7CkluZGV4
OiBranMvUHV0UHJvcGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL1B1dFByb3BlcnR5U2xv
dC5oCShyZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9QdXRQcm9wZXJ0eVNsb3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTIgKzI4LDEzIEBACiAjZGVmaW5lIFB1dFByb3BlcnR5U2xvdF9oCiAKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgCi0gICAgY2xhc3MgUHV0
UHJvcGVydHlTbG90IHsKKyAgICBjbGFzcyBQdXRQcm9wZXJ0eVNsb3QgOiBwdWJsaWMgV1RGOjpB
bGxvY0Jhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBUeXBlIHsgSW52YWxpZCwgRXhp
c3RpbmdQcm9wZXJ0eSwgTmV3UHJvcGVydHkgfTsKIApJbmRleDoga2pzL2xleGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2pzL2xleGVyLmgJKHJldmlzaW9uIDM3MDQ4KQorKysga2pzL2xleGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBjbGFzcyBJZGVudGlmaWVyOwogICAg
IGNsYXNzIFJlZ0V4cDsKIAotICAgIGNsYXNzIExleGVyIDogTm9uY29weWFibGUgeworICAgIGNs
YXNzIExleGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZv
aWQgc2V0Q29kZShpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBQYXNzUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiBzb3VyY2UpOwogICAgICAgICBpbnQgbGV4KHZvaWQqIGx2YWxwLCB2b2lkKiBsbG9jcCk7
CkluZGV4OiBranMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2NvbGxlY3Rvci5oCShy
ZXZpc2lvbiAzNzA0OCkKKysrIGtqcy9jb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
NyArNTksNyBAQAogICAgICAgICBPcGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlvbkluUHJvZ3Jl
c3M7CiAgICAgfTsKIAotICAgIGNsYXNzIEhlYXAgOiBOb25jb3B5YWJsZSB7CisgICAgY2xhc3Mg
SGVhcCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBjbGFzcyBU
aHJlYWQ7CiAgICAgICAgIGVudW0gSGVhcFR5cGUgeyBQcmltYXJ5SGVhcCwgTnVtYmVySGVhcCB9
OwpJbmRleDoga2pzL2NyZWF0ZV9oYXNoX3RhYmxlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PUBAIC02MTQsNyArNjE0LDcgQEAKIHsKICAgICBKU1N0
cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS0+dG9UaGlzSlNTdHJpbmcoZXhlYyk7CiAgICAgY29uc3Qg
VVN0cmluZyYgcyA9IHNWYWwtPnZhbHVlKCk7Ci0gICAgCisKICAgICBpbnQgc3NpemUgPSBzLnNp
emUoKTsKICAgICBpZiAoIXNzaXplKQogICAgICAgICByZXR1cm4gc1ZhbDsKQEAgLTYzNiw3ICs2
MzYsNyBAQAogewogICAgIEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLT50b1RoaXNKU1N0cmlu
ZyhleGVjKTsKICAgICBjb25zdCBVU3RyaW5nJiBzID0gc1ZhbC0+dmFsdWUoKTsKLSAgICAKKwog
ICAgIGludCBzc2l6ZSA9IHMuc2l6ZSgpOwogICAgIGlmICghc3NpemUpCiAgICAgICAgIHJldHVy
biBzVmFsOwpAQCAtNjYwLDcgKzY2MCw3IEBACiAKICAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNW
YWx1ZS0+dG9UaGlzSlNTdHJpbmcoZXhlYyk7CiAgICAgY29uc3QgVVN0cmluZyYgcyA9IHNWYWwt
PnZhbHVlKCk7Ci0gICAgCisKICAgICBpbnQgc3NpemUgPSBzLnNpemUoKTsKICAgICBpZiAoIXNz
aXplKQogICAgICAgICByZXR1cm4gc1ZhbDsKQEAgLTY4Miw3ICs2ODIsNyBAQAogewogICAgIEpT
U3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLT50b1RoaXNKU1N0cmluZyhleGVjKTsKICAgICBjb25z
dCBVU3RyaW5nJiBzID0gc1ZhbC0+dmFsdWUoKTsKLSAgICAKKwogICAgIGludCBzc2l6ZSA9IHMu
c2l6ZSgpOwogICAgIGlmICghc3NpemUpCiAgICAgICAgIHJldHVybiBzVmFsOz09PT09PT09PT09
PT09PT0KLS0tIGtqcy9jcmVhdGVfaGFzaF90YWJsZQkocmV2aXNpb24gMzcwNDgpCisrKyBranMv
Y3JlYXRlX2hhc2hfdGFibGUJKHdvcmtpbmcgY29weSkKQEAgLTIzMSwxMiArMjMxLDEyIEBACiAg
ICAgICAgICAgICAkZmlyc3RWYWx1ZSA9ICR2YWx1ZXNbJGldeyJ2YWx1ZSJ9OwogICAgICAgICAg
ICAgJHNlY29uZFZhbHVlID0gIjAiOwogICAgICAgICB9Ci0gICAgICAgIHByaW50ICIgICB7IFwi
JGtleVwiLCAkYXR0cnNbJGldLCAoaW50cHRyX3QpJGZpcnN0VmFsdWUsIChpbnRwdHJfdCkkc2Vj
b25kVmFsdWUgfSxcbiI7CisgICAgICAgIHByaW50ICIgICBIYXNoVGFibGVWYWx1ZShcIiRrZXlc
IiwgJGF0dHJzWyRpXSwgKGludHB0cl90KSRmaXJzdFZhbHVlLCAoaW50cHRyX3QpJHNlY29uZFZh
bHVlKSxcbiI7CiAgICAgICAgICRpKys7CiAgICAgfQotICAgIHByaW50ICIgICB7IDAsIDAsIDAs
IDAgfVxuIjsKKyAgICBwcmludCAiICAgSGFzaFRhYmxlVmFsdWUoMCwgMCwgMCwgMClcbiI7CiAg
ICAgcHJpbnQgIn07XG5cbiI7Ci0gICAgcHJpbnQgImV4dGVybiBjb25zdCBzdHJ1Y3QgSGFzaFRh
YmxlICRuYW1lID0gIjsKLSAgICBwcmludCAiXHsgIiwgJHNpemUgLSAxLCAiLCAkbmFtZUVudHJp
ZXMsIDAgXH07XG5cbiI7CisgICAgcHJpbnQgImV4dGVybiBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxl
ICRuYW1lIjsKKyAgICBwcmludCAiXCgiLCAkc2l6ZSAtIDEsICIsICRuYW1lRW50cmllcywgMFwp
O1xuXG4iOwogICAgIHByaW50ICJ9IC8vIG5hbWVzcGFjZVxuIjsKIH0KSW5kZXg6IHd0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmgJKHJldmlzaW9uIDM3MDQ4KQorKysgd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMywxMCArMjMsMTEgQEAKICAKICNpbmNsdWRlICJBc3NlcnRpb25z
LmgiCiAjaW5jbHVkZSAiVGhyZWFkaW5nLmgiCisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKICAgICAKLSAgICBzdHJ1Y3QgUmVmQ291bnRlZExlYWtDb3VudGVyIHsKKyAg
ICBzdHJ1Y3QgUmVmQ291bnRlZExlYWtDb3VudGVyIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsK
ICAgICAgICAgc3RhdGljIHZvaWQgc3VwcHJlc3NNZXNzYWdlcyhjb25zdCBjaGFyKik7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIGNhbmNlbE1lc3NhZ2VTdXBwcmVzc2lvbihjb25zdCBjaGFyKik7CiAg
ICAgICAgIApAQCAtMzUsNiArMzYsNyBAQAogCiAgICAgICAgIHZvaWQgaW5jcmVtZW50KCk7CiAg
ICAgICAgIHZvaWQgZGVjcmVtZW50KCk7CisgICAgICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlcigp
IHt9CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgcHJpdmF0ZToKSW5kZXg6IHd0Zi9SZWZDb3VudGVk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gd3RmL1JlZkNvdW50ZWQuaAkocmV2aXNpb24gMzcwNDgpCisrKyB3
dGYvUmVmQ291bnRlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAvLyBUaGlz
IGJhc2UgY2xhc3MgaG9sZHMgdGhlIG5vbi10ZW1wbGF0ZSBtZXRob2RzIGFuZCBhdHRyaWJ1dGVz
LgogLy8gVGhlIFJlZkNvdW50ZWQgY2xhc3MgaW5oZXJpdHMgZnJvbSBpdCByZWR1Y2luZyB0aGUg
dGVtcGxhdGUgYmxvYXQKIC8vIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgKHRlY2huaXF1ZSBj
YWxsZWQgdGVtcGxhdGUgaG9pc3RpbmcpLgotY2xhc3MgUmVmQ291bnRlZEJhc2UgOiBOb25jb3B5
YWJsZSB7CitjbGFzcyBSZWZDb3VudGVkQmFzZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6CiAgICAgdm9pZCByZWYoKQogICAgIHsKSW5kZXg6IHd0Zi9IYXNoU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gd3RmL0hhc2hTZXQuaAkocmV2aXNpb24gMzcwNDgpCisrKyB3dGYvSGFzaFNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIFdURl9IYXNoU2V0X2gKIAog
I2luY2x1ZGUgIkhhc2hUYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNl
IFdURiB7CiAKQEAgLTMyLDcgKzMzLDcgQEAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgSWRlbnRpdHlFeHRyYWN0b3I7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywg
dHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFzaCwK
LSAgICAgICAgdHlwZW5hbWUgVHJhaXRzQXJnID0gSGFzaFRyYWl0czxWYWx1ZUFyZz4gPiBjbGFz
cyBIYXNoU2V0IHsKKyAgICAgICAgdHlwZW5hbWUgVHJhaXRzQXJnID0gSGFzaFRyYWl0czxWYWx1
ZUFyZz4gPiBjbGFzcyBIYXNoU2V0IDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBwcml2
YXRlOgogICAgICAgICB0eXBlZGVmIEhhc2hBcmcgSGFzaEZ1bmN0aW9uczsKICAgICAgICAgdHlw
ZWRlZiBUcmFpdHNBcmcgVmFsdWVUcmFpdHM7CkBAIC05NCwxOCArOTUsMjAgQEAKICAgICAgICAg
SGFzaFRhYmxlVHlwZSBtX2ltcGw7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBJZGVudGl0eUV4dHJhY3RvciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IElkZW50aXR5RXh0cmFjdG9yIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IFQmIGV4dHJhY3QoY29uc3QgVCYgdCkgeyByZXR1cm4gdDsgfQorICAgICAg
ICBJZGVudGl0eUV4dHJhY3RvcigpIHt9CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHMsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRy
YW5zbGF0b3I+Ci0gICAgc3RydWN0IEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlciB7CisgICAgc3Ry
dWN0IEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlciA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gVHJhbnNs
YXRvcjo6aGFzaChrZXkpOyB9CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFZhbHVl
VHlwZSYgYSwgY29uc3QgVCYgYikgeyByZXR1cm4gVHJhbnNsYXRvcjo6ZXF1YWwoYSwgYik7IH0K
ICAgICAgICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFZhbHVlVHlwZSYgbG9jYXRpb24sIGNvbnN0
IFQmIGtleSwgY29uc3QgVCYsIHVuc2lnbmVkIGhhc2hDb2RlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBUcmFuc2xhdG9yOjp0cmFuc2xhdGUobG9jYXRpb24sIGtleSwgaGFzaENvZGUpOwogICAg
ICAgICB9CisgICAgICAgIEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcigpIHt9CiAgICAgfTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CkluZGV4OiB3
dGYvRGVxdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvRGVxdWUuaAkocmV2aXNpb24gMzcwNDgpCisr
KyB3dGYvRGVxdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogLy8gRGVxdWUg
ZG9lc24ndCBhY3R1YWxseSB1c2UgVmVjdG9yLgogCiAjaW5jbHVkZSAiVmVjdG9yLmgiCisjaW5j
bHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDMsNyArNDQsNyBAQAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIERlcXVlQ29uc3RSZXZlcnNlSXRlcmF0b3I7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGNsYXNzIERlcXVlIHsKKyAgICBjbGFz
cyBEZXF1ZSA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICB0
eXBlZGVmIERlcXVlSXRlcmF0b3I8VD4gaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgRGVxdWVD
b25zdEl0ZXJhdG9yPFQ+IGNvbnN0X2l0ZXJhdG9yOwpAQCAtMTAxLDcgKzEwMiw3IEBACiAgICAg
fTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgY2xhc3MgRGVxdWVJdGVyYXRvckJh
c2UgeworICAgIGNsYXNzIERlcXVlSXRlcmF0b3JCYXNlIDogcHVibGljIFdURjo6QWxsb2NCYXNl
IHsKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIERlcXVlSXRlcmF0b3JCYXNlPFQ+IEJh
c2U7CiAKSW5kZXg6IHd0Zi9UaHJlYWRpbmdRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd3RmL1RocmVh
ZGluZ1F0LmNwcAkocmV2aXNpb24gMzcwNDgpCisrKyB3dGYvVGhyZWFkaW5nUXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSGFzaE1hcC5oIgogI2luY2x1
ZGUgIk1haW5UaHJlYWQuaCIKICNpbmNsdWRlICJNYXRoRXh0cmFzLmgiCisjaW5jbHVkZSA8d3Rm
L05ldy5oPgogCiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRTXV0ZXg+
CkBAIC00MCw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1jbGFzcyBUaHJlYWRQcml2
YXRlIDogcHVibGljIFFUaHJlYWQgeworY2xhc3MgVGhyZWFkUHJpdmF0ZSA6IHB1YmxpYyBRVGhy
ZWFkLCBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogcHVibGljOgogICAgIFRocmVhZFByaXZhdGUo
VGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSk7CiAgICAgdm9pZCBydW4oKTsK
SW5kZXg6IHd0Zi9UaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvVGhyZWFkaW5nLmgJKHJl
dmlzaW9uIDM3MDQ4KQorKysgd3RmL1RocmVhZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcs
NyArMTM3LDcgQEAKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1Db25kaXRpb247CiAjZW5kaWYKICAg
ICAKLWNsYXNzIE11dGV4IDogTm9uY29weWFibGUgeworY2xhc3MgTXV0ZXggOiBwdWJsaWMgTm9u
Y29weWFibGUgewogcHVibGljOgogICAgIE11dGV4KCk7CiAgICAgfk11dGV4KCk7CkBAIC0xNTQs
NyArMTU0LDcgQEAKIAogdHlwZWRlZiBMb2NrZXI8TXV0ZXg+IE11dGV4TG9ja2VyOwogCi1jbGFz
cyBUaHJlYWRDb25kaXRpb24gOiBOb25jb3B5YWJsZSB7CitjbGFzcyBUaHJlYWRDb25kaXRpb24g
OiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIFRocmVhZENvbmRpdGlvbigpOwog
ICAgIH5UaHJlYWRDb25kaXRpb24oKTsKQEAgLTE5NCw3ICsxOTQsNyBAQAogCiAjZW5kaWYKIAot
dGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgVGhyZWFkU2FmZVNoYXJlZCA6IE5vbmNvcHlhYmxlIHsK
K3RlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIFRocmVhZFNhZmVTaGFyZWQgOiBwdWJsaWMgTm9uY29w
eWFibGUgewogcHVibGljOgogICAgIFRocmVhZFNhZmVTaGFyZWQoaW50IGluaXRpYWxSZWZDb3Vu
dCA9IDEpCiAgICAgICAgIDogbV9yZWZDb3VudChpbml0aWFsUmVmQ291bnQpCkluZGV4OiB3dGYv
SGFzaEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHd0Zi9IYXNoRnVuY3Rpb25zLmgJKHJldmlz
aW9uIDM3MDQ4KQorKysgd3RmL0hhc2hGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NiArMjMsNyBAQAogCiAjaW5jbHVkZSAiUmVmUHRyLmgiCiAjaW5jbHVkZSA8c3RkaW50Lmg+Cisj
aW5jbHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtODYsMTMgKzg3LDEz
IEBACiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2V5KTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSW50SGFzaCB7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEludEhhc2ggOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAg
ICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChUIGtleSkgeyByZXR1cm4gaW50SGFzaChzdGF0aWNf
Y2FzdDx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoVCk+OjpVbnNpZ25lZFR5cGU+KGtleSkpOyB9
CiAgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKFQgYSwgVCBiKSB7IHJldHVybiBhID09IGI7IH0K
ICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSB0cnVlOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRmxvYXRI
YXNoIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRmxvYXRIYXNoIDogcHVibGlj
IFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goVCBrZXkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHVuaW9uIHsKQEAgLTEwOCw3ICsxMDksNyBAQAogCiAgICAg
Ly8gcG9pbnRlciBpZGVudGl0eSBoYXNoIGZ1bmN0aW9uCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgUHRySGFzaCB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFB0
ckhhc2ggOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChUIGtleSkKICAgICAgICAgewogI2lmIENPTVBJTEVSKE1TVkMpCkBAIC0xMzYsNyArMTM3
LDcgQEAKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBQYWlySGFzaCB7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IFBhaXJIYXNoIDogcHVi
bGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
c3RkOjpwYWlyPFQsIFU+JiBwKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gaW50SGFz
aCgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KERlZmF1bHRIYXNoPFQ+OjpIYXNoOjpoYXNoKHAuZmly
c3QpKSA8PCAzMiB8IERlZmF1bHRIYXNoPFU+OjpIYXNoOjpoYXNoKHAuc2Vjb25kKSkpOwpJbmRl
eDogd3RmL0hhc2hDb3VudGVkU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd3RmL0hhc2hDb3VudGVkU2V0
LmgJKHJldmlzaW9uIDM3MDQ4KQorKysgd3RmL0hhc2hDb3VudGVkU2V0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDExICsyNSwxMiBAQAogI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKICNpbmNsdWRl
ICJIYXNoTWFwLmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL05ldy5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWU+OjpIYXNoLAotICAg
ICAgICB0eXBlbmFtZSBUcmFpdHMgPSBIYXNoVHJhaXRzPFZhbHVlPiA+IGNsYXNzIEhhc2hDb3Vu
dGVkU2V0IHsKKyAgICAgICAgdHlwZW5hbWUgVHJhaXRzID0gSGFzaFRyYWl0czxWYWx1ZT4gPiBj
bGFzcyBIYXNoQ291bnRlZFNldCA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFZhbHVlLCB1bnNpZ25lZCwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzPiBJbXBsVHlwZTsKICAgICBwdWJsaWM6CkluZGV4OiB3dGYvT3duQXJyYXlQdHIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB3dGYvT3duQXJyYXlQdHIuaAkocmV2aXNpb24gMzcwNDgpCisrKyB3
dGYvT3duQXJyYXlQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBPd25BcnJheVB0
ciA6IE5vbmNvcHlhYmxlIHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgT3duQXJy
YXlQdHIgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGlj
aXQgT3duQXJyYXlQdHIoVCogcHRyID0gMCkgOiBtX3B0cihwdHIpIHsgfQogICAgICAgICB+T3du
QXJyYXlQdHIoKSB7IHNhZmVEZWxldGUoKTsgfQpJbmRleDogd3RmL1Bhc3NSZWZQdHIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB3dGYvUGFzc1JlZlB0ci5oCShyZXZpc2lvbiAzNzA0OCkKKysrIHd0Zi9QYXNz
UmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgV1RGX1Bh
c3NSZWZQdHJfaAogCiAjaW5jbHVkZSAiQWx3YXlzSW5saW5lLmgiCisjaW5jbHVkZSAiTmV3Lmgi
CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC0yOSw3ICszMCw3IEBACiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gUGFz
c1JlZlB0cjxUPiBhZG9wdFJlZihUKik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFz
cyBQYXNzUmVmUHRyIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRy
IDogcHVibGljIEFsbG9jQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBQYXNzUmVmUHRyKCkg
OiBtX3B0cigwKSB7fQogICAgICAgICBQYXNzUmVmUHRyKFQqIHB0cikgOiBtX3B0cihwdHIpIHsg
aWYgKHB0cikgcHRyLT5yZWYoKTsgfQpJbmRleDogd3RmL01lc3NhZ2VRdWV1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHd0Zi9NZXNzYWdlUXVldWUuaAkocmV2aXNpb24gMzcwNDgpCisrKyB3dGYvTWVzc2Fn
ZVF1ZXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXVEYg
ewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+Ci0gICAgY2xhc3MgTWVzc2FnZVF1
ZXVlIDogTm9uY29weWFibGUgeworICAgIGNsYXNzIE1lc3NhZ2VRdWV1ZSA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBNZXNzYWdlUXVldWUoKSA6IG1fa2lsbGVk
KGZhbHNlKSB7fQogICAgICAgICAKSW5kZXg6IHd0Zi9OZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYv
TmV3LmgJKHJldmlzaW9uIDApCisrKyB3dGYvTmV3LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzU0IEBACisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAwOCBQYXVsIFBlZHJpYW5hLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV1RGX05ld19oCisjZGVmaW5lIFdURl9OZXdfaAorCisvLyBQ
cm92aWRlcyBjdXN0b21pemFibGUgb3ZlcnJpZGVzIG9mIGZhc3RNYWxsb2MvZmFzdEZyZWUgYW5k
IG9wZXJhdG9yIG5ldy9kZWxldGUKKy8vCisvLyBQcm92aWRlZCBmdW5jdGlvbmFsaXR5OgorLy8g
ICAgbmFtZXNwYWNlIFdURiB7IAorLy8gICAgICAgIGNsYXNzIEFsbG9jQmFzZTsKKy8vCisvLyAg
ICAgICAgVCogICAgbmV3T2JqZWN0PFQ+KCk7CisvLyAgICAgICAgVCogICAgbmV3QXJyYXk8VD4o
Y291bnQpOworLy8gICAgICAgIHZvaWQgIGRlbGV0ZU9iamVjdChUKiBwKTsKKy8vICAgICAgICB2
b2lkICBkZWxldGVBcnJheShUKiBwKTsKKy8vICAgIH0KKy8vCisvLyBFeGFtcGxlIHVzYWdlOgor
Ly8gICAgY2xhc3MgV2lkZ2V0IDogcHVibGljIEFsbG9jQmFzZSB7IC4uLiB9OworLy8KKy8vICAg
IGNoYXIqIGNoYXJQdHIgPSBuZXdPYmplY3Q8Y2hhcj4oKTsKKy8vICAgIGRlbGV0ZU9iamVjdChj
aGFyUHRyKTsKKy8vCisvLyAgICBjaGFyKiBjaGFyQXJyYXlQdHIgPSBuZXdBcnJheTxjaGFyPigz
Nyk7CisvLyAgICBkZWxldGVBcnJheShjaGFyQXJyYXlQdHIpOworLy8KKy8vICAgIHZvaWQqKiB2
b2lkUHRyUHRyID0gbmV3T2JqZWN0PHZvaWQqPigpOworLy8gICAgZGVsZXRlT2JqZWN0KHZvaWRQ
dHJQdHIpOworLy8KKy8vICAgIHZvaWQqKiB2b2lkUHRyQXJyYXlQdHIgPSBuZXdBcnJheTx2b2lk
Kj4oMzcpOworLy8gICAgZGVsZXRlQXJyYXkodm9pZFB0ckFycmF5UHRyKTsKKy8vCisvLyAgICBQ
T0QqIHBvZFB0ciA9IG5ld09iamVjdDxQT0Q+KCk7CisvLyAgICBkZWxldGVPYmplY3QocG9kUHRy
KTsKKy8vCisvLyAgICBQT0QqIHBvZEFycmF5UHRyID0gbmV3QXJyYXk8UE9EPigzNyk7CisvLyAg
ICBkZWxldGVBcnJheShwb2RBcnJheVB0cik7CisvLworLy8gICAgT2JqZWN0KiBvYmplY3RQdHIg
PSBuZXdPYmplY3Q8T2JqZWN0PigpOworLy8gICAgZGVsZXRlT2JqZWN0KG9iamVjdFB0cik7Cisv
LworLy8gICAgT2JqZWN0KiBvYmplY3RBcnJheVB0ciA9IG5ld0FycmF5PE9iamVjdD4oMzcpOwor
Ly8gICAgZGVsZXRlQXJyYXkob2JqZWN0QXJyYXlQdHIpOworLy8KKworI2luY2x1ZGUgPG5ldz4K
KyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisKKy8vIERlZmluZSB0eXBlIHRyYWl0cyB0aGF0IGFsbG93IHVzIHRvIG9wdGltaXpl
IHRlbXBsYXRlZCBhcnJheSBuZXcvZGVsZXRlLgorLy8gVGhlc2UgY291bGQgcG9zc2libHkgZ28g
aW50byBhIHNlcGFyYXRlIGhlYWRlciBmaWxlIGlmIHVzZWZ1bC4KKy8vIFJlY2VudCB2ZXJzaW9u
cyBvZiBHQ0MncyBsaWJzdGRjKysgYW5kIFZDKysgaGF2ZSBzdXBwb3J0IGZvciB0eXBlIHRyYWl0
cy4KKy8vIFRvIGRvOiBJbmNsdWRlIG90aGVyIGNvbXBpbGVycy9saWJyYXJpZXMgdGhhdCBzdXBw
b3J0IHR5cGVfdHJhaXRzLgorLy8gVG8gY29uc2lkZXI6IFNob3VsZCB0aGlzIGdvIGludG8gYSBz
ZXBhcmF0ZSBoZWFkZXIgZmlsZT8KKyNpZiAoZGVmaW5lZChfX0dMSUJDWFhfXykgJiYgKF9fR0xJ
QkNYWF9fID49IDIwMDcwNzI0KSkgfHwgKGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+
PSAxNTAwKSkKKyAgICAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKyAgICBuYW1lc3BhY2UgV1RG
IHsKKyAgICAgICAgdXNpbmcgc3RkOjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjsKKyAgICAgICAg
dXNpbmcgc3RkOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOworICAgIH0KKworI2Vsc2UKKyAgICBu
YW1lc3BhY2UgV1RGIHsKKworICAgICAgICAvLyBUaGlzIGNvbXBpbGVyIGRvZXNuJ3QgcHJvdmlk
ZSB0eXBlIHRyYWl0cywgc28gd2UgcHJvdmlkZSBhIGJhc2ljIHNtYWxsIHNldC4KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIFQgdj4KKyAgICAgICAgc3RydWN0IGludGVncmFsX2NvbnN0
YW50IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUIHZhbHVlID0gdjsKKyAgICAgICAgICAg
IHR5cGVkZWYgVCB2YWx1ZV90eXBlOworICAgICAgICAgICAgdHlwZWRlZiBpbnRlZ3JhbF9jb25z
dGFudDxULCB2PiB0eXBlOworICAgICAgICB9OworCisgICAgICAgIHR5cGVkZWYgaW50ZWdyYWxf
Y29uc3RhbnQ8Ym9vbCwgdHJ1ZT4gIHRydWVfdHlwZTsKKyAgICAgICAgdHlwZWRlZiBpbnRlZ3Jh
bF9jb25zdGFudDxib29sLCBmYWxzZT4gZmFsc2VfdHlwZTsKKworCisgICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3IgOiBwdWJsaWMgZmFs
c2VfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGhhc190cml2
aWFsX2Rlc3RydWN0b3IgIDogcHVibGljIGZhbHNlX3R5cGV7fTsKKworICAgICAgICAvLyBBdCBs
ZWFzdCBoYW5kbGUgdGhlIGNhc2Ugb2Ygc2NhbGFyIHR5cGVzLgorICAgICAgICAvLyBJZGVhbGx5
IHRoaXMgd291bGQgaW5jbHVkZSB2b2xhdGlsZSB2YXJpYXRpb25zIGFzIHdlbGwuCisgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8VCo+
ICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQqPiAgIDogcHVibGljIHRydWVfdHlwZXt9Owor
CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxmbG9h
dD4gICAgICAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgZmxvYXQ+ICAgICAg
ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGRvdWJsZT4gICAgICAgICAgICAgICAgICAgOiBwdWJs
aWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3Rvcjxjb25zdCBkb3VibGU+ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9
OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8bG9u
ZyBkb3VibGU+ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IGxvbmcgZG91Ymxl
PiAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25lZCBjaGFyPiAgICAgICAgICAgIDogcHVi
bGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgY2hhcj4gICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7
fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHVu
c2lnbmVkIHNob3J0PiAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBz
aG9ydD4gICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dW5zaWduZWQgaW50PiAgICAgICAgICAgICA6IHB1
YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2NvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGludD4gICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBl
e307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1
bnNpZ25lZCBsb25nPiAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQg
bG9uZz4gICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gICAgICAgOiBw
dWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlh
bF9jb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlw
ZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8
c2lnbmVkIGNoYXI+ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAg
dGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBj
aGFyPiAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgc2hvcnQ+ICAgICAgICAgICAgIDog
cHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIHNob3J0PiAgICAgICA6IHB1YmxpYyB0cnVlX3R5
cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9y
PHNpZ25lZCBpbnQ+ICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQg
aW50PiAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8c2lnbmVkIGxvbmc+ICAgICAgICAgICAgICA6
IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2
aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nPiAgICAgICAgOiBwdWJsaWMgdHJ1ZV90
eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rv
cjxzaWduZWQgbG9uZyBsb25nPiAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgc2lnbmVk
IGxvbmcgbG9uZz4gICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGJvb2w+ICAgICAgICAgICAgICAgICAgICAg
OiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJp
dmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBib29sPiAgICAgICAgICAgICAgIDogcHVibGljIHRydWVf
dHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0
b3I8Y2hhcj4gICAgICAgICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IGNoYXI+
ICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgICNpZiAhZGVmaW5l
ZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKKyAgICAgICAg
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx3Y2hhcl90PiAg
ICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgICAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgd2NoYXJfdD4gICAgICAgIDog
cHVibGljIHRydWVfdHlwZXt9OworICAgICAgICAjZW5kaWYKKworICAgICAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxmbG9hdD4gICAgICAgICAgICAgICAgICAg
IDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3Ry
aXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCBmbG9hdD4gICAgICAgICAgICAgIDogcHVibGljIHRydWVf
dHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rv
cjxkb3VibGU+ICAgICAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCBkb3VibGU+
ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxsb25nIGRvdWJsZT4gICAgICAgICAgICAgIDog
cHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfZGVzdHJ1Y3Rvcjxjb25zdCBsb25nIGRvdWJsZT4gICAgICAgIDogcHVibGljIHRydWVfdHlw
ZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx1
bnNpZ25lZCBjaGFyPiAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBj
aGFyPiAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx1bnNpZ25lZCBzaG9ydD4gICAgICAgICAgIDogcHVi
bGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBzaG9ydD4gICAgIDogcHVibGljIHRydWVfdHlwZXt9
OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx1bnNp
Z25lZCBpbnQ+ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBpbnQ+
ICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx1bnNpZ25lZCBsb25nPiAgICAgICAgICAgIDogcHVibGlj
IHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nPiAgICAgIDogcHVibGljIHRydWVfdHlwZXt9Owor
ICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx1bnNpZ25l
ZCBsb25nIGxvbmc+ICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nIGxv
bmc+IDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfZGVzdHJ1Y3RvcjxzaWduZWQgY2hhcj4gICAgICAgICAgICAgIDogcHVibGljIHRy
dWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1
Y3Rvcjxjb25zdCBzaWduZWQgY2hhcj4gICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAg
ICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxzaWduZWQgc2hv
cnQ+ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQgc2hvcnQ+ICAgICAg
IDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3Ry
aXZpYWxfZGVzdHJ1Y3RvcjxzaWduZWQgaW50PiAgICAgICAgICAgICAgIDogcHVibGljIHRydWVf
dHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rv
cjxjb25zdCBzaWduZWQgaW50PiAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxzaWduZWQgbG9uZz4g
ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQgbG9uZz4gICAgICAgIDog
cHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfZGVzdHJ1Y3RvcjxzaWduZWQgbG9uZyBsb25nPiAgICAgICAgIDogcHVibGljIHRydWVfdHlw
ZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxj
b25zdCBzaWduZWQgbG9uZyBsb25nPiAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxib29sPiAgICAgICAgICAg
ICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCBib29sPiAgICAgICAgICAgICAgIDogcHVi
bGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3RvcjxjaGFyPiAgICAgICAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9
OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25z
dCBjaGFyPiAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICAjaWYg
IWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpCisg
ICAgICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx3Y2hh
cl90PiAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgICAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB3Y2hhcl90PiAgICAg
ICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgICNlbmRpZgorCisgICAgfSAvLyBuYW1l
c3BhY2UgV1RGCisKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworICAgIGNsYXNzIEFsbG9j
QmFzZSB7CisgICAgcHVibGljOgorICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNp
emUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYXN0TWFsbG9jKHNpemUpOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkKKyAgICAgICAg
eworICAgICAgICAgICAgZmFzdEZyZWUocCk7ICAvLyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGZv
ciBhIG51bGwgcG9pbnRlcjsgdGhlIGNvbXBpbGVyIGRvZXMgdGhpcy4KKyAgICAgICAgfQorCisg
ICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZmFzdE1hbGxvYyhzaXplKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkKKyAgICAgICAgeworICAgICAgICAgICAgZmFz
dEZyZWUocCk7ICAvLyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciBhIG51bGwgcG9pbnRlcjsg
dGhlIGNvbXBpbGVyIGRvZXMgdGhpcy4KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplLCB2b2lkKiBwKSB7IHNpemUgPSBzaXplOyByZXR1
cm4gcDsgfQorICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSwgdm9pZCog
cCkgeyBzaXplID0gc2l6ZTsgcmV0dXJuIHA7IH0KKyAgICAgICAgCisgICAgfTsKKworCisgICAg
Ly8gbmV3T2JqZWN0IC8gZGVsZXRlT2JqZWN0CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgICBpbmxpbmUgVCogbmV3T2JqZWN0KCkKKyAgICB7CisgICAgICAgIHZvaWQqIHAgPSBmYXN0
TWFsbG9jKHNpemVvZihUKSk7CisKKyAgICAgICAgaWYgKHApCisgICAgICAgICAgICByZXR1cm4g
OjpuZXcocCkgVDsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBuYW1lc3BhY2Ug
V1RGSW50ZXJuYWwgeworCisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZv
ciBuZXdBcnJheS4KKyAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlYnkgVCBo
YXMgYSB0cml2aWFsIGN0b3IgYW5kIGEgdHJpdmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgYm9vbCB0cml2aWFsQ3RvciwgYm9vbCB0cml2aWFsRHRvcj4KKyAgICAgICAg
c3RydWN0IE5ld0FycmF5SW1wbCB7CisgICAgICAgICAgICBzdGF0aWMgVCogbmV3QXJyYXkoc2l6
ZV90IGNvdW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUKj4oZmFzdE1hbGxvYyhzaXplb2YoVCkgKiBjb3VudCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBu
ZXdBcnJheS4KKyAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlYnkgVCBoYXMg
YSBub24tdHJpdmlhbCBjdG9yIGFuZCBhIHRyaXZpYWwgZHRvci4KKyAgICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgICAgICAgIHN0cnVjdCBOZXdBcnJheUltcGw8VCwgZmFsc2UsIHRydWU+
IHsKKyAgICAgICAgICAgIHN0YXRpYyBUKiBuZXdBcnJheShzaXplX3QgY291bnQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgVCogY29uc3QgcCA9IHN0YXRpY19jYXN0PFQqPihmYXN0
TWFsbG9jKHNpemVvZihUKSAqIGNvdW50KSk7CisKKyAgICAgICAgICAgICAgICBpZiAocCkgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKFQqIHBPYmplY3QgPSBwLCAqcE9iamVjdEVuZCA9IHBP
YmplY3QgKyBjb3VudDsgcE9iamVjdCAhPSBwT2JqZWN0RW5kOyArK3BPYmplY3QpCisgICAgICAg
ICAgICAgICAgICAgICAgICA6Om5ldyhwT2JqZWN0KSBUOyAvLyBUbyBjb25zaWRlcjogaGFuZGxl
IGN0b3IgZXhjZXB0aW9ucyBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJ5IHRoZSBjb21waWxl
ci4KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxUKj4ocCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgLy8g
VGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIG5ld0FycmF5LgorICAgICAgICAvLyBUaGlz
IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVieSBUIGhhcyBhIHRyaXZpYWwgY3RvciBhbmQgYSBub24t
dHJpdmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgc3Ry
dWN0IE5ld0FycmF5SW1wbDxULCB0cnVlLCBmYWxzZT4geworICAgICAgICAgICAgc3RhdGljIFQq
IG5ld0FycmF5KHNpemVfdCBjb3VudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1
aW50NjRfdCogcCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Kj4oZmFzdE1hbGxvYyhzaXplb2YodWlu
dDY0X3QpICsgKHNpemVvZihUKSAqIGNvdW50KSkpOworCisgICAgICAgICAgICAgICAgaWYgKHAp
IHsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihjb3Vu
dCk7CisgICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gY29uc3RydWN0IHRoZSBvYmpl
Y3RzIGluIHRoaXMgY2FzZS4KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4ocCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIG5ld0FycmF5Lgor
ICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVieSBUIGhhcyBhIG5vbi10cml2
aWFsIGN0b3IgYW5kIGEgbm9uLXRyaXZpYWwgZHRvci4KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgICAgIHN0cnVjdCBOZXdBcnJheUltcGw8VCwgZmFsc2UsIGZhbHNlPiB7Cisg
ICAgICAgICAgICBzdGF0aWMgVCogbmV3QXJyYXkoc2l6ZV90IGNvdW50KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHVpbnQ2NF90KiBwID0gc3RhdGljX2Nhc3Q8dWludDY0X3QqPihm
YXN0TWFsbG9jKHNpemVvZih1aW50NjRfdCkgKyAoc2l6ZW9mKFQpICogY291bnQpKSk7CisKKyAg
ICAgICAgICAgICAgICBpZiAocCkgeworICAgICAgICAgICAgICAgICAgICAqcCsrID0gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGNvdW50KTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKFQqIHBP
YmplY3QgPSByZWludGVycHJldF9jYXN0PFQqPihwKSwgKnBPYmplY3RFbmQgPSBwT2JqZWN0ICsg
Y291bnQ7IHBPYmplY3QgIT0gcE9iamVjdEVuZDsgKytwT2JqZWN0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgOjpuZXcocE9iamVjdCkgVDsgLy8gVG8gY29uc2lkZXI6IGhhbmRsZSBjdG9yIGV4
Y2VwdGlvbnMgaWYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBieSB0aGUgY29tcGlsZXIuCisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
VCo+KHApOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0gLy8gbmFtZXNwYWNlIFdU
RkludGVybmFsCisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBpbmxpbmUgVCogbmV3
QXJyYXkoc2l6ZV90IGNvdW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURkludGVybmFsOjpO
ZXdBcnJheUltcGw8VCwgV1RGOjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxUPjo6dmFsdWUsIFdU
Rjo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPjo6dmFsdWU+OjpuZXdBcnJheShjb3VudCk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgaW5saW5lIHZvaWQgZGVsZXRl
T2JqZWN0KFQqIHApCisgICAgeworICAgICAgICBpZiAocCkgeyAvLyBBcyBwZXIgdGhlIEMrKyBz
dGFuZGFyZCwgdGVzdCBmb3IgbnVsbCBwb2ludGVyLgorICAgICAgICAgICAgcC0+flQoKTsKKyAg
ICAgICAgICAgIGZhc3RGcmVlKHApOworICAgICAgICB9CisgICAgfQorCisKKyAgICBuYW1lc3Bh
Y2UgV1RGSW50ZXJuYWwgeworICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBm
b3IgZGVsZXRlQXJyYXkuCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWJ5
IFQgaGFzIGEgdHJpdmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9v
bCB0cml2aWFsRHRvcj4KKyAgICAgICAgc3RydWN0IERlbGV0ZUFycmF5SW1wbCB7CisgICAgICAg
ICAgICBzdGF0aWMgdm9pZCBkZWxldGVBcnJheSh2b2lkKiBwKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmIChwKSB7IC8vIEFzIHBlciB0aGUgQysrIHN0YW5kYXJkLCB0ZXN0IGZv
ciBudWxsIHBvaW50ZXIuCisgICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gZGVzdHJ1
Y3QgdGhlIG9iamVjdHMgaW4gdGhpcyBjYXNlLgorICAgICAgICAgICAgICAgICAgICBmYXN0RnJl
ZShwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAg
ICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIGRlbGV0ZUFycmF5LgorICAg
ICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVieSBUIGhhcyBhIG5vbi10cml2aWFs
IGR0b3IuCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBzdHJ1Y3QgRGVs
ZXRlQXJyYXlJbXBsPFQsIGZhbHNlPiB7CisgICAgICAgICAgICBzdGF0aWMgdm9pZCBkZWxldGVB
cnJheShUKiBwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChwKSB7IC8vIEFz
IHBlciB0aGUgQysrIHN0YW5kYXJkLCB0ZXN0IGZvciBudWxsIHBvaW50ZXIuCisgICAgICAgICAg
ICAgICAgICAgIFQqIHBFbmQgPSBwICsgKihyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4ocCkg
LSAxKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUocEVuZC0tICE9IHApCisgICAgICAgICAg
ICAgICAgICAgICAgICBwRW5kLT5+VCgpOworCisgICAgICAgICAgICAgICAgICAgIGZhc3RGcmVl
KChyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4ocCkgLSAxKSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgfSAvLyBuYW1lc3BhY2UgV1RGSW50
ZXJuYWwKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgZGVsZXRlQXJyYXko
VCogcCkKKyAgICB7CisgICAgICAgIFdURkludGVybmFsOjpEZWxldGVBcnJheUltcGw8VCwgV1RG
OjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ojp2YWx1ZT46OmRlbGV0ZUFycmF5KHApOworICAg
IH0KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfTmV3X2gKSW5kZXg6IHd0
Zi9BVkxUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gd3RmL0FWTFRyZWUuaAkocmV2aXNpb24gMzcwNDgp
CisrKyB3dGYvQVZMVHJlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjZGVm
aW5lIEtKU19BVkxfVFJFRV9IXwogCiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgorI2luY2x1ZGUg
PHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTYzLDcgKzY0LDcgQEAKIC8vICAg
fTsKIAogdGVtcGxhdGU8dW5zaWduZWQgbWF4RGVwdGg+Ci1jbGFzcyBBVkxUcmVlRGVmYXVsdEJT
ZXQgeworY2xhc3MgQVZMVHJlZURlZmF1bHRCU2V0IDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsK
IHB1YmxpYzoKICAgICBib29sJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgQVNTRVJUKGkgPCBt
YXhEZXB0aCk7IHJldHVybiBtX2RhdGFbaV07IH0KICAgICB2b2lkIHNldCgpIHsgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1heERlcHRoOyArK2kpIG1fZGF0YVtpXSA9IHRydWU7IH0KQEAgLTEy
NCw3ICsxMjUsNyBAQAogLy8gWW91IHBpY2sgMjggYmVjYXVzZSBNTigyOCkgaXMgODMyLDAzOSwg
d2hpY2ggaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDEsMDAwLDAwMCwgYW5kIE1OKDI5KSBpcyAx
LDM0NiwyNjgsIHdoaWNoIGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAxLDAwMCwwMDAuCiAKIHRl
bXBsYXRlIDxjbGFzcyBBYnN0cmFjdG9yLCB1bnNpZ25lZCBtYXhEZXB0aCA9IDMyLCBjbGFzcyBC
U2V0ID0gQVZMVHJlZURlZmF1bHRCU2V0PG1heERlcHRoPiA+Ci1jbGFzcyBBVkxUcmVlIHsKK2Ns
YXNzIEFWTFRyZWUgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogcHVibGljOgogCiAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBBYnN0cmFjdG9yOjprZXkga2V5OwpAQCAtMTU4LDcgKzE1OSw3IEBACiAK
ICAgICBBVkxUcmVlKCkgeyBhYnMucm9vdCA9IG51bGwoKTsgfQogCi0gICAgY2xhc3MgSXRlcmF0
b3IgeworICAgIGNsYXNzIEl0ZXJhdG9yIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBw
dWJsaWM6CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBkZXB0aCB0byBpbnZhbGlkIHZhbHVlLCB0
byBpbmRpY2F0ZSBpdGVyYXRvciBpcwpJbmRleDogd3RmL1JlZlB0ckhhc2hNYXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB3dGYvUmVmUHRySGFzaE1hcC5oCShyZXZpc2lvbiAzNzA0OCkKKysrIHd0Zi9SZWZQ
dHJIYXNoTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDggQEAKICAqCiAgKi8KIAor
I2luY2x1ZGUgPHd0Zi9OZXcuaD4KKwogbmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBUaGlzIHNw
ZWNpYWxpemF0aW9uIGlzIGEgZGlyZWN0IGNvcHkgb2YgSGFzaE1hcCwgd2l0aCBvdmVybG9hZGVk
IGZ1bmN0aW9ucwpAQCAtMjYsNyArMjgsNyBAQAogICAgIC8vIEZJWE1FOiBGaW5kIGEgYmV0dGVy
IHdheSB0aGF0IGRvZXNuJ3QgcmVxdWlyZSBhbiBlbnRpcmUgY29weSBvZiB0aGUgSGFzaE1hcCB0
ZW1wbGF0ZS4KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYXdLZXlUeXBlLCB0eXBlbmFt
ZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
PgotICAgIHN0cnVjdCBSZWZQdHJIYXNoTWFwUmF3S2V5VHJhbnNsYXRvciB7CisgICAgc3RydWN0
IFJlZlB0ckhhc2hNYXBSYXdLZXlUcmFuc2xhdG9yIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsK
ICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6OmZpcnN0X3R5cGUgS2V5VHlwZTsK
ICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVR5cGU6OnNlY29uZF90eXBlIE1hcHBlZFR5
cGU7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OkZpcnN0VHJhaXRzIEtl
eVRyYWl0czsKQEAgLTQyLDcgKzQ0LDcgQEAKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KLSAgICBjbGFzcyBIYXNoTWFwPFJl
ZlB0cjxUPiwgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0Fy
Zz4geworICAgIGNsYXNzIEhhc2hNYXA8UmVmUHRyPFQ+LCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPiA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOwogICAg
ICAgICB0eXBlZGVmIE1hcHBlZFRyYWl0c0FyZyBNYXBwZWRUcmFpdHM7CkluZGV4OiB3dGYvVGhy
ZWFkU3BlY2lmaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvVGhyZWFkU3BlY2lmaWMuaAkocmV2aXNp
b24gMzcwNDgpCisrKyB3dGYvVGhyZWFkU3BlY2lmaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NyArMzksNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xh
c3MgVGhyZWFkU3BlY2lmaWMgOiBOb25jb3B5YWJsZSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBUaHJlYWRTcGVjaWZpYyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAg
VGhyZWFkU3BlY2lmaWMoKTsKICAgICBUKiBvcGVyYXRvci0+KCk7CkBAIC01Myw3ICs1Myw3IEBA
CiAgICAgdm9pZCBzdGF0aWMgZGVzdHJveSh2b2lkKiBwdHIpOwogCiAjaWYgVVNFKFBUSFJFQURT
KSB8fCBQTEFURk9STShXSU4pCi0gICAgc3RydWN0IERhdGEgOiBOb25jb3B5YWJsZSB7CisgICAg
c3RydWN0IERhdGEgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgICAgICBEYXRhKFQqIHZhbHVl
LCBUaHJlYWRTcGVjaWZpYzxUPiogb3duZXIpIDogdmFsdWUodmFsdWUpLCBvd25lcihvd25lcikg
e30KIAogICAgICAgICBUKiB2YWx1ZTsKSW5kZXg6IHd0Zi9Mb2NrZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB3dGYvTG9ja2VyLmgJKHJldmlzaW9uIDM3MDQ4KQorKysgd3RmL0xvY2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgTG9ja2VyIDogTm9uY29weWFibGUgewordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIExvY2tlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAg
TG9ja2VyKFQmIGxvY2thYmxlKSA6IG1fbG9ja2FibGUobG9ja2FibGUpIHsgbV9sb2NrYWJsZS5s
b2NrKCk7IH0KICAgICB+TG9ja2VyKCkgeyBtX2xvY2thYmxlLnVubG9jaygpOyB9CkluZGV4OiB3
dGYvTGlzdEhhc2hTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvTGlzdEhhc2hTZXQuaAkocmV2aXNp
b24gMzcwNDgpCisrKyB3dGYvTGlzdEhhc2hTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiAr
MjQsNyBAQAogI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKICNpbmNsdWRlICJIYXNoU2V0LmgiCiAj
aW5jbHVkZSAiT3duUHRyLmgiCisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIApAQCAtNTEsNyArNTIsNyBAQAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnPiBz
dHJ1Y3QgTGlzdEhhc2hTZXROb2RlQWxsb2NhdG9yOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0
aW9uczsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJn
ID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNoPiBjbGFzcyBMaXN0SGFzaFNl
dCB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0
eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2g+IGNsYXNzIExpc3RIYXNoU2V0IDog
cHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIExp
c3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZz4gTm9kZTsKICAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNl
dE5vZGVBbGxvY2F0b3I8VmFsdWVBcmc+IE5vZGVBbGxvY2F0b3I7CkBAIC0xMTcsNyArMTE4LDcg
QEAKICAgICAgICAgT3duUHRyPE5vZGVBbGxvY2F0b3I+IG1fYWxsb2NhdG9yOwogICAgIH07CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZUFs
bG9jYXRvciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmc+IHN0cnVjdCBMaXN0SGFz
aFNldE5vZGVBbGxvY2F0b3IgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAgICB0eXBl
ZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZz4gTm9kZTsKICAgICAgICAgdHlwZWRlZiBMaXN0
SGFzaFNldE5vZGVBbGxvY2F0b3I8VmFsdWVBcmc+IE5vZGVBbGxvY2F0b3I7CiAKQEAgLTE4Niw3
ICsxODcsNyBAQAogICAgICAgICB9IG1fcG9vbDsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWVBcmc+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGUgeworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlQXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXROb2RlIDogcHVibGljIFdURjo6QWxs
b2NCYXNlIHsKICAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I8VmFsdWVB
cmc+IE5vZGVBbGxvY2F0b3I7CiAKICAgICAgICAgTGlzdEhhc2hTZXROb2RlKFZhbHVlQXJnIHZh
bHVlKQpAQCAtMjE4LDcgKzIxOSw3IEBACiAjZW5kaWYKICAgICB9OwogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmc+IHN0cnVjdCBMaXN0SGFzaFNldE5v
ZGVIYXNoRnVuY3Rpb25zIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5h
bWUgSGFzaEFyZz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZUhhc2hGdW5jdGlvbnMgOiBwdWJsaWMg
V1RGOjpBbGxvY0Jhc2UgewogICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFy
Zz4gTm9kZTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKE5vZGUqIGNv
bnN0JiBrZXkpIHsgcmV0dXJuIEhhc2hBcmc6Omhhc2goa2V5LT5tX3ZhbHVlKTsgfQpAQCAtMjI2
LDcgKzIyNyw3IEBACiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gZmFsc2U7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yIHsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZz4gY2xhc3MgTGlz
dEhhc2hTZXRJdGVyYXRvciA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSAgewogICAgIHByaXZhdGU6
CiAgICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmc+IExpc3RIYXNo
U2V0VHlwZTsKICAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBI
YXNoQXJnPiBpdGVyYXRvcjsKQEAgLTI2OSw3ICsyNzAsNyBAQAogICAgICAgICBjb25zdF9pdGVy
YXRvciBtX2l0ZXJhdG9yOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFy
ZywgdHlwZW5hbWUgSGFzaEFyZz4gY2xhc3MgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yIHsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZz4gY2xhc3MgTGlz
dEhhc2hTZXRDb25zdEl0ZXJhdG9yIDogcHVibGljIFdURjo6QWxsb2NCYXNlICB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZz4gTGlz
dEhhc2hTZXRUeXBlOwogICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVB
cmcsIEhhc2hBcmc+IGl0ZXJhdG9yOwpAQCAtMzQwLDcgKzM0MSw3IEBACiAKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4KLSAgICBzdHJ1
Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9yIHsKKyAgICBzdHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xh
dG9yIDogcHVibGljIFdURjo6QWxsb2NCYXNlICB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdHlw
ZWRlZiBMaXN0SGFzaFNldE5vZGU8VmFsdWVUeXBlPiBOb2RlOwogICAgICAgICB0eXBlZGVmIExp
c3RIYXNoU2V0Tm9kZUFsbG9jYXRvcjxWYWx1ZVR5cGU+IE5vZGVBbGxvY2F0b3I7CkluZGV4OiB3
dGYvSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd3RmL0hhc2hUYWJsZS5oCShyZXZpc2lvbiAz
NzA0OCkKKysrIHd0Zi9IYXNoVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBA
QAogI2luY2x1ZGUgIkZhc3RNYWxsb2MuaCIKICNpbmNsdWRlICJIYXNoVHJhaXRzLmgiCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTmV3Lmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewogCkBAIC00MCw3ICs0MSw3IEBACiAKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUwog
Ci0gICAgc3RydWN0IEhhc2hUYWJsZVN0YXRzIHsKKyAgICBzdHJ1Y3QgSGFzaFRhYmxlU3RhdHMg
OiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAgICB+SGFzaFRhYmxlU3RhdHMoKTsKICAg
ICAgICAgc3RhdGljIGludCBudW1BY2Nlc3NlczsKICAgICAgICAgc3RhdGljIGludCBudW1Db2xs
aXNpb25zOwpAQCAtODIsNyArODMsNyBAQAogICAgIHR5cGVkZWYgZW51bSB7IEhhc2hJdGVtS25v
d25Hb29kIH0gSGFzaEl0ZW1Lbm93bkdvb2RUYWc7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGNsYXNzIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3IgeworICAgIGNsYXNzIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3Ig
OiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz4gaXRlcmF0b3I7CkBAIC0yMDgsNyArMjA5LDcgQEAKICAgICB9OwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAg
ICBjbGFzcyBIYXNoVGFibGVJdGVyYXRvciB7CisgICAgY2xhc3MgSGFzaFRhYmxlSXRlcmF0b3Ig
OiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0
b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0
cz4gaXRlcmF0b3I7CkBAIC0yNjIsNyArMjYzLDcgQEAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgTW92ZXI8VCwgdHJ1ZT4geyBzdGF0aWMgdm9pZCBtb3ZlKFQmIGZyb20sIFQmIHRv
KSB7IHN3YXAoZnJvbSwgdG8pOyB9IH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IE1vdmVyPFQsIGZhbHNlPiB7IHN0YXRpYyB2b2lkIG1vdmUoVCYgZnJvbSwgVCYgdG8pIHsgdG8g
PSBmcm9tOyB9IH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zPiBjbGFzcyBJZGVudGl0eUhhc2hUcmFuc2xhdG9yIHsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zPiBjbGFzcyBJZGVudGl0eUhhc2hUcmFuc2xhdG9yIDogcHVibGljIFdURjo6QWxs
b2NCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IEtleSYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0KICAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpIHsgcmV0dXJuIEhh
c2hGdW5jdGlvbnM6OmVxdWFsKGEsIGIpOyB9CkBAIC0yNzAsNyArMjcxLDcgQEAKICAgICB9Owog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KLSAgICBjbGFzcyBIYXNoVGFibGUgeworICAgIGNsYXNzIEhhc2hUYWJsZSA6
IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEhh
c2hUYWJsZUl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+IGl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz4gY29uc3RfaXRlcmF0b3I7CkluZGV4OiB3dGYvdW5pY29kZS9Db2xsYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHd0Zi91bmljb2RlL0NvbGxhdG9yLmgJKHJldmlzaW9uIDM3MDQ4KQorKysg
d3RmL3VuaWNvZGUvQ29sbGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEyIEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgY2xhc3MgQ29sbGF0b3IgOiBOb25jb3B5YWJsZSB7
CisgICAgY2xhc3MgQ29sbGF0b3IgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgZW51bSBSZXN1bHQgeyBFcXVhbCA9IDAsIEdyZWF0ZXIgPSAxLCBMZXNzID0gLTEg
fTsKIAogICAgICAgICBDb2xsYXRvcihjb25zdCBjaGFyKiBsb2NhbGUpOyAvLyBQYXJzaW5nIGlz
IGxlbmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRpZmllcnMgKHN1Y2ggYXMgImVuLVVTIikgYXJl
IGFjY2VwdGVkLCB0b28uCi0gICAgICAgIH5Db2xsYXRvcigpOworICAgICAgICB2aXJ0dWFsIH5D
b2xsYXRvcigpOwogICAgICAgICB2b2lkIHNldE9yZGVyTG93ZXJGaXJzdChib29sKTsKIAogICAg
ICAgICBzdGF0aWMgc3RkOjphdXRvX3B0cjxDb2xsYXRvcj4gdXNlckRlZmF1bHQoKTsKSW5kZXg6
IHd0Zi91bmljb2RlL3F0NC9Vbmljb2RlUXQ0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd3RmL3VuaWNvZGUv
cXQ0L1VuaWNvZGVRdDQuaAkocmV2aXNpb24gMzcwNDgpCisrKyB3dGYvdW5pY29kZS9xdDQvVW5p
Y29kZVF0NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTIgQEAKICNpbmNsdWRlIDxj
b25maWcuaD4KIAogI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAog
I2lmIFFUX1ZFUlNJT04gPj0gMHgwNDAzMDAKIFFUX0JFR0lOX05BTUVTUEFDRQogbmFtZXNwYWNl
IFFVbmljb2RlVGFibGVzIHsKLSAgICBzdHJ1Y3QgUHJvcGVydGllcyB7CisgICAgc3RydWN0IFBy
b3BlcnRpZXMgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAgICB1c2hvcnQgY2F0ZWdv
cnkgOiA4OwogICAgICAgICB1c2hvcnQgbGluZV9icmVha19jbGFzcyA6IDg7CiAgICAgICAgIHVz
aG9ydCBkaXJlY3Rpb24gOiA4OwpJbmRleDogd3RmL1ZlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHd0
Zi9WZWN0b3IuaAkocmV2aXNpb24gMzcwNDgpCisrKyB3dGYvVmVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJp
bmcuaD4KICNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNw
YWNlIFdURiB7CiAKQEAgLTQ4LDkgKzQ5LDkgQEAKICAgICAjZW5kaWYKIAogICAgICNpZiBDT01Q
SUxFUihHQ0MpICYmICgoKF9fR05VQ19fICogMTAwKSArIF9fR05VQ19NSU5PUl9fKSA+PSAzMDMp
Ci0gICAgICAgIHR5cGVkZWYgY2hhciBfX2F0dHJpYnV0ZV9fKChfX21heV9hbGlhc19fKSkgQWxp
Z25lZEJ1ZmZlckNoYXI7IAorICAgICAgICB0eXBlZGVmIGNoYXIgX19hdHRyaWJ1dGVfXygoX19t
YXlfYWxpYXNfXykpIEFsaWduZWRCdWZmZXJDaGFyOwogICAgICNlbHNlCi0gICAgICAgIHR5cGVk
ZWYgY2hhciBBbGlnbmVkQnVmZmVyQ2hhcjsgCisgICAgICAgIHR5cGVkZWYgY2hhciBBbGlnbmVk
QnVmZmVyQ2hhcjsKICAgICAjZW5kaWYKIAogICAgIHRlbXBsYXRlIDxzaXplX3Qgc2l6ZSwgc2l6
ZV90IGFsaWdubWVudD4gc3RydWN0IEFsaWduZWRCdWZmZXI7CkBAIC03NCw3ICs3NSw3IEBACiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdHJ1Y3QgVmVjdG9yRGVzdHJ1Y3Rvcjx0cnVl
LCBUPgogICAgIHsKLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoVCogYmVnaW4sIFQqIGVu
ZCkgCisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KFQqIGJlZ2luLCBUKiBlbmQpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGZvciAoVCogY3VyID0gYmVnaW47IGN1ciAhPSBlbmQ7ICsrY3Vy
KQogICAgICAgICAgICAgICAgIGN1ci0+flQoKTsKQEAgLTkzLDcgKzk0LDcgQEAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCBmYWxz
ZSwgVD4KICAgICB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVCogYmVnaW4sIFQq
IGVuZCkgCisgICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkK
ICAgICAgICAgewogICAgICAgICAgICAgZm9yIChUKiBjdXIgPSBiZWdpbjsgY3VyICE9IGVuZDsg
KytjdXIpCiAgICAgICAgICAgICAgICAgbmV3IChjdXIpIFQ7CkBAIC0xMDMsNyArMTA0LDcgQEAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0
cnVlLCB0cnVlLCBUPgogICAgIHsKLSAgICAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShUKiBi
ZWdpbiwgVCogZW5kKSAKKyAgICAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShUKiBiZWdpbiwg
VCogZW5kKQogICAgICAgICB7CiAgICAgICAgICAgICBtZW1zZXQoYmVnaW4sIDAsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGVuZCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihiZWdpbikpOwog
ICAgICAgICB9CkBAIC0xNDMsMTEgKzE0NCwxMSBAQAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgc3RydWN0IFZlY3Rvck1vdmVyPHRydWUsIFQ+CiAgICAgewotICAgICAgICBzdGF0aWMg
dm9pZCBtb3ZlKGNvbnN0IFQqIHNyYywgY29uc3QgVCogc3JjRW5kLCBUKiBkc3QpIAorICAgICAg
ICBzdGF0aWMgdm9pZCBtb3ZlKGNvbnN0IFQqIHNyYywgY29uc3QgVCogc3JjRW5kLCBUKiBkc3Qp
CiAgICAgICAgIHsKICAgICAgICAgICAgIG1lbWNweShkc3QsIHNyYywgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oc3JjRW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNy
YykpOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIG1vdmVPdmVybGFwcGluZyhjb25z
dCBUKiBzcmMsIGNvbnN0IFQqIHNyY0VuZCwgVCogZHN0KSAKKyAgICAgICAgc3RhdGljIHZvaWQg
bW92ZU92ZXJsYXBwaW5nKGNvbnN0IFQqIHNyYywgY29uc3QgVCogc3JjRW5kLCBUKiBkc3QpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1lbW1vdmUoZHN0LCBzcmMsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KHNyY0VuZCkgLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzcmMp
KTsKICAgICAgICAgfQpAQCAtMTU5LDcgKzE2MCw3IEBACiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICBzdHJ1Y3QgVmVjdG9yQ29waWVyPGZhbHNlLCBUPgogICAgIHsKLSAgICAgICAgc3Rh
dGljIHZvaWQgdW5pbml0aWFsaXplZENvcHkoY29uc3QgVCogc3JjLCBjb25zdCBUKiBzcmNFbmQs
IFQqIGRzdCkgCisgICAgICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRDb3B5KGNvbnN0IFQq
IHNyYywgY29uc3QgVCogc3JjRW5kLCBUKiBkc3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIHdo
aWxlIChzcmMgIT0gc3JjRW5kKSB7CiAgICAgICAgICAgICAgICAgbmV3IChkc3QpIFQoKnNyYyk7
CkBAIC0xNzIsNyArMTczLDcgQEAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0cnVj
dCBWZWN0b3JDb3BpZXI8dHJ1ZSwgVD4KICAgICB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHVuaW5p
dGlhbGl6ZWRDb3B5KGNvbnN0IFQqIHNyYywgY29uc3QgVCogc3JjRW5kLCBUKiBkc3QpIAorICAg
ICAgICBzdGF0aWMgdm9pZCB1bmluaXRpYWxpemVkQ29weShjb25zdCBUKiBzcmMsIGNvbnN0IFQq
IHNyY0VuZCwgVCogZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBtZW1jcHkoZHN0LCBzcmMs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNyY0VuZCkgLSByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihzcmMpKTsKICAgICAgICAgfQpAQCAtMTg0LDcgKzE4NSw3IEBACiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdHJ1Y3QgVmVjdG9yRmlsbGVyPGZhbHNlLCBUPgog
ICAgIHsKLSAgICAgICAgc3RhdGljIHZvaWQgdW5pbml0aWFsaXplZEZpbGwoVCogZHN0LCBUKiBk
c3RFbmQsIGNvbnN0IFQmIHZhbCkgCisgICAgICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRG
aWxsKFQqIGRzdCwgVCogZHN0RW5kLCBjb25zdCBUJiB2YWwpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHdoaWxlIChkc3QgIT0gZHN0RW5kKSB7CiAgICAgICAgICAgICAgICAgbmV3IChkc3QpIFQo
dmFsKTsKQEAgLTE5NiwxNiArMTk3LDE2IEBACiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICBzdHJ1Y3QgVmVjdG9yRmlsbGVyPHRydWUsIFQ+CiAgICAgewotICAgICAgICBzdGF0aWMgdm9p
ZCB1bmluaXRpYWxpemVkRmlsbChUKiBkc3QsIFQqIGRzdEVuZCwgY29uc3QgVCYgdmFsKSAKKyAg
ICAgICAgc3RhdGljIHZvaWQgdW5pbml0aWFsaXplZEZpbGwoVCogZHN0LCBUKiBkc3RFbmQsIGNv
bnN0IFQmIHZhbCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHNpemVvZihUKSA9PSBz
aXplb2YoY2hhcikpOwogICAgICAgICAgICAgbWVtc2V0KGRzdCwgdmFsLCBkc3RFbmQgLSBkc3Qp
OwogICAgICAgICB9CiAgICAgfTsKLSAgICAKKwogICAgIHRlbXBsYXRlPGJvb2wgY2FuQ29tcGFy
ZVdpdGhNZW1jbXAsIHR5cGVuYW1lIFQ+CiAgICAgY2xhc3MgVmVjdG9yQ29tcGFyZXI7Ci0gICAg
CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0cnVjdCBWZWN0b3JDb21wYXJlcjxm
YWxzZSwgVD4KICAgICB7CkBAIC0yMjYsNyArMjI3LDcgQEAKICAgICAgICAgICAgIHJldHVybiBt
ZW1jbXAoYSwgYiwgc2l6ZW9mKFQpICogc2l6ZSkgPT0gMDsKICAgICAgICAgfQogICAgIH07Ci0g
ICAgCisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0cnVjdCBWZWN0b3JUeXBlT3Bl
cmF0aW9ucwogICAgIHsKQEAgLTI1OSw3ICsyNjAsNyBAQAogICAgICAgICB7CiAgICAgICAgICAg
ICBWZWN0b3JGaWxsZXI8VmVjdG9yVHJhaXRzPFQ+OjpjYW5GaWxsV2l0aE1lbXNldCwgVD46OnVu
aW5pdGlhbGl6ZWRGaWxsKGRzdCwgZHN0RW5kLCB2YWwpOwogICAgICAgICB9Ci0gICAgICAgIAor
CiAgICAgICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgVCogYSwgY29uc3QgVCogYiwgc2l6
ZV90IHNpemUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBWZWN0b3JDb21wYXJlcjxW
ZWN0b3JUcmFpdHM8VD46OmNhbkNvbXBhcmVXaXRoTWVtY21wLCBUPjo6Y29tcGFyZShhLCBiLCBz
aXplKTsKQEAgLTM0MCw3ICszNDEsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBkZWFsbG9j
YXRlQnVmZmVyKGJ1ZmZlcigpKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICB2b2lk
IHN3YXAoVmVjdG9yQnVmZmVyPFQsIDA+JiBvdGhlcikKICAgICAgICAgewogICAgICAgICAgICAg
c3RkOjpzd2FwKG1fYnVmZmVyLCBvdGhlci5tX2J1ZmZlcik7CkBAIC00MTYsNyArNDE3LDcgQEAK
ICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
ID0gMD4KLSAgICBjbGFzcyBWZWN0b3IgeworICAgIGNsYXNzIFZlY3RvciA6IHB1YmxpYyBXVEY6
OkFsbG9jQmFzZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdHlwZWRlZiBWZWN0b3JCdWZmZXI8
VCwgaW5saW5lQ2FwYWNpdHk+IEJ1ZmZlcjsKICAgICAgICAgdHlwZWRlZiBWZWN0b3JUeXBlT3Bl
cmF0aW9uczxUPiBUeXBlT3BlcmF0aW9uczsKQEAgLTQyNywxMiArNDI4LDEyIEBACiAgICAgICAg
IHR5cGVkZWYgVCogaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgY29uc3QgVCogY29uc3RfaXRl
cmF0b3I7CiAKLSAgICAgICAgVmVjdG9yKCkgCisgICAgICAgIFZlY3RvcigpCiAgICAgICAgICAg
ICA6IG1fc2l6ZSgwKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGV4
cGxpY2l0IFZlY3RvcihzaXplX3Qgc2l6ZSkgCisKKyAgICAgICAgZXhwbGljaXQgVmVjdG9yKHNp
emVfdCBzaXplKQogICAgICAgICAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAgICAgICAgICwgbV9i
dWZmZXIoc2l6ZSkKICAgICAgICAgewpAQCAtNDQ2LDI2ICs0NDcsMjYgQEAKICAgICAgICAgfQog
CiAgICAgICAgIFZlY3Rvcihjb25zdCBWZWN0b3ImKTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90
IG90aGVyQ2FwYWNpdHk+IAorICAgICAgICB0ZW1wbGF0ZTxzaXplX3Qgb3RoZXJDYXBhY2l0eT4K
ICAgICAgICAgVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwogCiAgICAg
ICAgIFZlY3RvciYgb3BlcmF0b3I9KGNvbnN0IFZlY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZTxz
aXplX3Qgb3RoZXJDYXBhY2l0eT4gCisgICAgICAgIHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFj
aXR5PgogICAgICAgICBWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBh
Y2l0eT4mKTsKIAogICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQogICAgICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jYXBh
Y2l0eSgpOyB9CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7
IH0KIAotICAgICAgICBUJiBhdChzaXplX3QgaSkgCi0gICAgICAgIHsgCisgICAgICAgIFQmIGF0
KHNpemVfdCBpKQorICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaSA8IHNpemUoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9idWZmZXIuYnVmZmVyKClbaV07IAorICAgICAgICAgICAgcmV0
dXJuIG1fYnVmZmVyLmJ1ZmZlcigpW2ldOwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0IFQmIGF0
KHNpemVfdCBpKSBjb25zdCAKKyAgICAgICAgY29uc3QgVCYgYXQoc2l6ZV90IGkpIGNvbnN0CiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpIDwgc2l6ZSgpKTsKLSAgICAgICAgICAgIHJl
dHVybiBtX2J1ZmZlci5idWZmZXIoKVtpXTsgCisgICAgICAgICAgICByZXR1cm4gbV9idWZmZXIu
YnVmZmVyKClbaV07CiAgICAgICAgIH0KIAogICAgICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBp
KSB7IHJldHVybiBhdChpKTsgfQpJbmRleDogd3RmL0hhc2hUcmFpdHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB3dGYvSGFzaFRyYWl0cy5oCShyZXZpc2lvbiAzNzA0OCkKKysrIHd0Zi9IYXNoVHJhaXRzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJIYXNoRnVuY3Rpb25z
LmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDxsaW1pdHM+Ci0KKyNpbmNsdWRlIDx3
dGYvTmV3Lmg+CiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHVzaW5nIHN0ZDo6cGFpcjsKQEAgLTc0
LDcgKzc0LDcgQEAKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRz
OwogCi0gICAgdGVtcGxhdGU8Ym9vbCBpc0ludGVnZXIsIHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5l
cmljSGFzaFRyYWl0c0Jhc2U7CisgICAgdGVtcGxhdGU8Ym9vbCBpc0ludGVnZXIsIHR5cGVuYW1l
IFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0c0Jhc2UgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2Ug
e307CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHNC
YXNlPGZhbHNlLCBUPiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1pl
cm8gPSBmYWxzZTsKQEAgLTgyLDMyICs4MiwzMiBAQAogICAgIH07CiAKICAgICAvLyBEZWZhdWx0
IGludGVnZXIgdHJhaXRzIGRpc2FsbG93IGJvdGggMCBhbmQgLTEgYXMga2V5cyAobWF4IHZhbHVl
IGluc3RlYWQgb2YgLTEgZm9yIHVuc2lnbmVkKS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHNCYXNlPHRydWUsIFQ+IHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHNCYXNlPHRydWUsIFQ+IDogcHVibGljIFdU
Rjo6QWxsb2NCYXNlIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVy
byA9IHRydWU7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBm
YWxzZTsKICAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFQmIHNsb3Qp
IHsgc2xvdCA9IHN0YXRpY19jYXN0PFQ+KC0xKTsgfQogICAgICAgICBzdGF0aWMgYm9vbCBpc0Rl
bGV0ZWRWYWx1ZShUIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBzdGF0aWNfY2FzdDxUPigtMSk7
IH0KICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEdlbmVyaWNIYXNo
VHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHNCYXNlPElzSW50ZWdlcjxUPjo6dmFsdWUsIFQ+IHsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBwdWJs
aWMgR2VuZXJpY0hhc2hUcmFpdHNCYXNlPElzSW50ZWdlcjxUPjo6dmFsdWUsIFQ+IHsKICAgICAg
ICAgdHlwZWRlZiBUIFRyYWl0VHlwZTsKICAgICAgICAgc3RhdGljIFQgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIFQoKTsgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPFQ+IHsgfTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0cyA6IHB1YmxpYyAgR2VuZXJpY0hhc2hUcmFpdHM8VD4g
eyB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEZsb2F0SGFzaFRyYWl0cyA6
IEdlbmVyaWNIYXNoVHJhaXRzPFQ+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RmxvYXRIYXNoVHJhaXRzIDogcHVibGljICBHZW5lcmljSGFzaFRyYWl0czxUPiB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKICAgICAgICAgc3Rh
dGljIFQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmlu
aXR5KCk7IH0KICAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFQmIHNs
b3QpIHsgc2xvdCA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpOyB9CiAgICAg
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09
IC1zdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpOyB9CiAgICAgfTsKIAotICAgIHRl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8ZmxvYXQ+IDogRmxvYXRIYXNoVHJhaXRzPGZsb2F0
PiB7IH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxkb3VibGU+IDogRmxvYXRI
YXNoVHJhaXRzPGRvdWJsZT4geyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
ZmxvYXQ+IDogcHVibGljIEZsb2F0SGFzaFRyYWl0czxmbG9hdD4geyB9OworICAgIHRlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8ZG91YmxlPiA6IHB1YmxpYyBGbG9hdEhhc2hUcmFpdHM8ZG91
YmxlPiB7IH07CiAKICAgICAvLyBEZWZhdWx0IHVuc2lnbmVkIHRyYWl0cyBkaXNhbGxvdyBib3Ro
IDAgYW5kIG1heCBhcyBrZXlzIC0tIHVzZSB0aGVzZSB0cmFpdHMgdG8gYWxsb3cgemVybyBhbmQg
ZGlzYWxsb3cgbWF4IC0gMS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzIDog
cHVibGljIEdlbmVyaWNIYXNoVHJhaXRzPFQ+IHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
ZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNlOwogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJl
dHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKTsgfQpAQCAtMTE1LDE0ICsxMTUsMTQg
QEAKICAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoVCB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgLSAxOyB9CiAgICAgfTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBIYXNoVHJhaXRzPFAqPiA6IEdlbmVyaWNI
YXNoVHJhaXRzPFAqPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFp
dHM8UCo+IDogcHVibGljIEdlbmVyaWNIYXNoVHJhaXRzPFAqPiB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwogICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShQKiYgc2xvdCkgeyBzbG90ID0gcmVpbnRlcnByZXRfY2FzdDxQKj4o
LTEpOyB9CiAgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFAqIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZSA9PSByZWludGVycHJldF9jYXN0PFAqPigtMSk7IH0KICAgICB9OwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8UmVmUHRyPFA+ID4gOiBHZW5l
cmljSGFzaFRyYWl0czxSZWZQdHI8UD4gPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3Ry
dWN0IEhhc2hUcmFpdHM8UmVmUHRyPFA+ID4gOiBwdWJsaWMgR2VuZXJpY0hhc2hUcmFpdHM8UmVm
UHRyPFA+ID4gewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0g
dHJ1ZTsKICAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFJlZlB0cjxQ
PiYgc2xvdCkgeyBuZXcgKCZzbG90KSBSZWZQdHI8UD4oSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsg
fQogICAgICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBSZWZQdHI8UD4mIHZh
bHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CkBAIC0xMzEs
NyArMTMxLDcgQEAKICAgICAvLyBzcGVjaWFsIHRyYWl0cyBmb3IgcGFpcnMsIGhlbHBmdWwgZm9y
IHRoZWlyIHVzZSBpbiBIYXNoTWFwIGltcGxlbWVudGF0aW9uCiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGaXJzdFRyYWl0c0FyZywgdHlwZW5hbWUgU2Vjb25kVHJhaXRzQXJnPgotICAgIHN0cnVj
dCBQYWlySGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPHBhaXI8dHlwZW5hbWUgRmlyc3RU
cmFpdHNBcmc6OlRyYWl0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHJhaXRzQXJnOjpUcmFpdFR5cGU+
ID4geworICAgIHN0cnVjdCBQYWlySGFzaFRyYWl0cyA6IHB1YmxpYyBHZW5lcmljSGFzaFRyYWl0
czxwYWlyPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnOjpUcmFpdFR5cGUsIHR5cGVuYW1lIFNlY29u
ZFRyYWl0c0FyZzo6VHJhaXRUeXBlPiA+IHsKICAgICAgICAgdHlwZWRlZiBGaXJzdFRyYWl0c0Fy
ZyBGaXJzdFRyYWl0czsKICAgICAgICAgdHlwZWRlZiBTZWNvbmRUcmFpdHNBcmcgU2Vjb25kVHJh
aXRzOwogICAgICAgICB0eXBlZGVmIHBhaXI8dHlwZW5hbWUgRmlyc3RUcmFpdHM6OlRyYWl0VHlw
ZSwgdHlwZW5hbWUgU2Vjb25kVHJhaXRzOjpUcmFpdFR5cGU+IFRyYWl0VHlwZTsKSW5kZXg6IHd0
Zi9Pd25QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvT3duUHRyLmgJKHJldmlzaW9uIDM3MDQ4KQor
Kysgd3RmL093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBACiAgICAgdm9p
ZCBkZWxldGVPd25lZFB0cihIUkdOKTsKICNlbmRpZgogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIE93blB0ciA6IE5vbmNvcHlhYmxlIHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY2xhc3MgT3duUHRyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgT3duUHRyUmVtb3ZlUG9pbnRlcjxUPjo6dHlwZSBWYWx1ZVR5
cGU7CiAgICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQdHJUeXBlOwpJbmRleDogd3RmL1JlZlB0
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHd0Zi9SZWZQdHIuaAkocmV2aXNpb24gMzcwNDgpCisrKyB3dGYv
UmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlICJBbHdheXNJbmxpbmUuaCIKKyNpbmNsdWRlIDx3dGYvTmV3Lmg+
CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC0zMiw3ICszMyw3IEBACiAKICAgICBlbnVtIEhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUgeyBIYXNoVGFibGVEZWxldGVkVmFsdWUgfTsKIAotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBSZWZQdHIgeworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBSZWZQdHIgOiBwdWJsaWMgQWxsb2NCYXNlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFJlZlB0cigpIDogbV9wdHIoMCkgeyB9CiAgICAgICAgIFJlZlB0cihUKiBwdHIpIDogbV9w
dHIocHRyKSB7IGlmIChwdHIpIHB0ci0+cmVmKCk7IH0KSW5kZXg6IHd0Zi9NYWluVGhyZWFkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB3dGYvTWFpblRocmVhZC5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysg
d3RmL01haW5UaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCi1zdHJ1Y3QgRnVuY3Rpb25XaXRoQ29udGV4dCB7CitzdHJ1Y3QgRnVu
Y3Rpb25XaXRoQ29udGV4dCA6IHB1YmxpYyBBbGxvY0Jhc2UgewogICAgIE1haW5UaHJlYWRGdW5j
dGlvbiogZnVuY3Rpb247CiAgICAgdm9pZCogY29udGV4dDsKICAgICBUaHJlYWRDb25kaXRpb24q
IHN5bmNGbGFnOwpJbmRleDogd3RmL05vbmNvcHlhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd3RmL05v
bmNvcHlhYmxlLmgJKHJldmlzaW9uIDM3MDQ4KQorKysgd3RmL05vbmNvcHlhYmxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDEzICsyMCwxNCBAQAogCiAjaWZuZGVmIFdURl9Ob25jb3B5YWJsZV9o
CiAjZGVmaW5lIFdURl9Ob25jb3B5YWJsZV9oCisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiAvLyBX
ZSBkb24ndCB3YW50IGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAgdG8gcHVsbCBpbiBldmVyeXRo
aW5nIGZyb20gdGhlIFdURgogLy8gbmFtZXNwYWNlIHdoZW4geW91IHVzZSBOb25jb3B5YWJsZSwg
c28gcHV0IGl0IGluIGl0cyBvd24gbmFtZXNwYWNlLgogCiBuYW1lc3BhY2UgV1RGTm9uY29weWFi
bGUgewogCi0gICAgY2xhc3MgTm9uY29weWFibGUgeworICAgIGNsYXNzIE5vbmNvcHlhYmxlIDog
cHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgTm9uY29weWFibGUoY29uc3QgTm9uY29w
eWFibGUmKTsKICAgICAgICAgTm9uY29weWFibGUmIG9wZXJhdG9yPShjb25zdCBOb25jb3B5YWJs
ZSYpOwogICAgIHByb3RlY3RlZDoKSW5kZXg6IHd0Zi9IYXNoSXRlcmF0b3JzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gd3RmL0hhc2hJdGVyYXRvcnMuaAkocmV2aXNpb24gMzcwNDgpCisrKyB3dGYvSGFzaEl0
ZXJhdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFdURl9I
YXNoSXRlcmF0b3JzX2gKICNkZWZpbmUgV1RGX0hhc2hJdGVyYXRvcnNfaAogCisjaW5jbHVkZSA8
d3RmL05ldy5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVj
dCBIYXNoVGFibGVDb25zdEtleXNJdGVyYXRvcjsKQEAgLTMzLDcgKzM1LDcgQEAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBN
YXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlS2V5c0l0ZXJhdG9yOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5
cGU+IHN0cnVjdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjsKIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+
IHN0cnVjdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBzdGQ6
OnBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4gPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0
IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIHN0ZDo6cGFpcjxL
ZXlUeXBlLCBNYXBwZWRUeXBlPiA+IDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBwcml2
YXRlOgogICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPiBWYWx1
ZVR5cGU7CiAgICAgcHVibGljOgpAQCAtNTUsNyArNTcsNyBAQAogICAgICAgICB0eXBlbmFtZSBI
YXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBtX2ltcGw7CiAgICAgfTsKIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1h
cHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwg
c3RkOjpwYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+ID4geworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0
cnVjdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgc3RkOjpwYWlyPEtl
eVR5cGUsIE1hcHBlZFR5cGU+ID4gOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgIHByaXZh
dGU6CiAgICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+IFZhbHVl
VHlwZTsKICAgICBwdWJsaWM6CkBAIC04Miw3ICs4NCw3IEBACiAgICAgICAgIHR5cGVuYW1lIEhh
c2hUYWJsZVR5cGU6Oml0ZXJhdG9yIG1faW1wbDsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlw
ZT4gc3RydWN0IEhhc2hUYWJsZUNvbnN0S2V5c0l0ZXJhdG9yIHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBl
PiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3IgOiBwdWJsaWMgV1RGOjpBbGxvY0Jh
c2UgewogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRv
ckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgc3RkOjpwYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+ID4g
Q29uc3RJdGVyYXRvcjsKIApAQCAtOTksNyArMTAxLDcgQEAKICAgICAgICAgQ29uc3RJdGVyYXRv
ciBtX2ltcGw7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUs
IHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVD
b25zdFZhbHVlc0l0ZXJhdG9yIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBl
LCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxl
Q29uc3RWYWx1ZXNJdGVyYXRvciA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFi
bGVUeXBlLCBzdGQ6OnBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4gPiBDb25zdEl0ZXJhdG9yOwog
CkBAIC0xMTYsNyArMTE4LDcgQEAKICAgICAgICAgQ29uc3RJdGVyYXRvciBtX2ltcGw7CiAgICAg
fTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5
cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVLZXlzSXRlcmF0b3Igewor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVLZXlzSXRlcmF0b3IgOiBwdWJsaWMg
V1RGOjpBbGxvY0Jhc2UgewogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxl
SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIHN0ZDo6cGFpcjxLZXlUeXBlLCBNYXBwZWRU
eXBlPiA+IEl0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JB
ZGFwdGVyPEhhc2hUYWJsZVR5cGUsIHN0ZDo6cGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPiA+IENv
bnN0SXRlcmF0b3I7CkBAIC0xMzksNyArMTQxLDcgQEAKICAgICAgICAgSXRlcmF0b3IgbV9pbXBs
OwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFt
ZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWVzSXRl
cmF0b3IgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtl
eVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRv
ciA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgc3RkOjpwYWlyPEtleVR5
cGUsIE1hcHBlZFR5cGU+ID4gSXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgc3RkOjpwYWlyPEtleVR5cGUsIE1hcHBl
ZFR5cGU+ID4gQ29uc3RJdGVyYXRvcjsKSW5kZXg6IHd0Zi9IYXNoTWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gd3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMzcwNDgpCisrKyB3dGYvSGFzaE1hcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIFdURl9IYXNoTWFwX2gKIAogI2lu
Y2x1ZGUgIkhhc2hUYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CiAKQEAgLTI5LDcgKzMwLDcgQEAKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywg
dHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhh
c2g8S2V5QXJnPjo6SGFzaCwKICAgICAgICAgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRy
YWl0czxLZXlBcmc+LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPE1hcHBl
ZEFyZz4gPgotICAgIGNsYXNzIEhhc2hNYXAgeworICAgIGNsYXNzIEhhc2hNYXAgOiBwdWJsaWMg
V1RGOjpBbGxvY0Jhc2UgewogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYgS2V5VHJhaXRz
QXJnIEtleVRyYWl0czsKICAgICAgICAgdHlwZWRlZiBNYXBwZWRUcmFpdHNBcmcgTWFwcGVkVHJh
aXRzOwpAQCAtODksMTIgKzkwLDEyIEBACiAgICAgICAgIEhhc2hUYWJsZVR5cGUgbV9pbXBsOwog
ICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYWlyVHlwZT4gc3RydWN0IFBhaXJGaXJz
dEV4dHJhY3RvciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUGFpclR5cGU+IHN0cnVjdCBQYWly
Rmlyc3RFeHRyYWN0b3IgOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAgICBzdGF0aWMg
Y29uc3QgdHlwZW5hbWUgUGFpclR5cGU6OmZpcnN0X3R5cGUmIGV4dHJhY3QoY29uc3QgUGFpclR5
cGUmIHApIHsgcmV0dXJuIHAuZmlyc3Q7IH0KICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBWYWx1ZVRyYWl0cywgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cz4KLSAgICBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3IgeworICAgIHN0cnVjdCBIYXNoTWFwVHJh
bnNsYXRvciA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgVmFsdWVUeXBlOjpmaXJzdF90eXBlIEtleVR5cGU7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5h
bWUgVmFsdWVUeXBlOjpzZWNvbmRfdHlwZSBNYXBwZWRUeXBlOwogCkluZGV4OiBBUEkvSlNDYWxs
YmFja0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBBUEkvSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMzcwNDgpCisrKyBBUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1jb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja0NvbnN0cnVjdG9yOjppbmZvID0geyAiQ2Fs
bGJhY2tDb25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNr
Q29uc3RydWN0b3I6OmluZm8oIkNhbGxiYWNrQ29uc3RydWN0b3IiLCAwLCAwLCAwKTsKIAogSlND
YWxsYmFja0NvbnN0cnVjdG9yOjpKU0NhbGxiYWNrQ29uc3RydWN0b3IoUGFzc1JlZlB0cjxTdHJ1
Y3R1cmVJRD4gc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIEpTT2JqZWN0Q2FsbEFzQ29u
c3RydWN0b3JDYWxsYmFjayBjYWxsYmFjaykKICAgICA6IEpTT2JqZWN0KHN0cnVjdHVyZSkKSW5k
ZXg6IEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEFQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIEFQSS9KU0NhbGxiYWNrRnVuY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTM4LDcgKzM4LDcgQEAKIAogQVNTRVJUX0NM
QVNTX0ZJVFNfSU5fQ0VMTChKU0NhbGxiYWNrRnVuY3Rpb24pOwogCi1jb25zdCBDbGFzc0luZm8g
SlNDYWxsYmFja0Z1bmN0aW9uOjppbmZvID0geyAiQ2FsbGJhY2tGdW5jdGlvbiIsICZJbnRlcm5h
bEZ1bmN0aW9uOjppbmZvLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja0Z1bmN0
aW9uOjppbmZvKCJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OmluZm8sIDAs
IDApOwogCiBKU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRl
bnRpZmllciYgbmFtZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24oZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCksIG5hbWUpCkluZGV4
OiBBUEkvSlNDbGFzc1JlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEFQSS9KU0NsYXNzUmVmLmgJKHJldmlz
aW9uIDM3MDQ4KQorKysgQVBJL0pTQ2xhc3NSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyAr
MjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIEpTQ2xhc3NSZWZfaApAQCAt
MzMsMTkgKzMzLDIwIEBACiAjaW5jbHVkZSA8a2pzL3VzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL05l
dy5oPgogCi1zdHJ1Y3QgU3RhdGljVmFsdWVFbnRyeSB7CitzdHJ1Y3QgU3RhdGljVmFsdWVFbnRy
eSA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgU3RhdGljVmFsdWVFbnRyeShKU09iamVj
dEdldFByb3BlcnR5Q2FsbGJhY2sgX2dldFByb3BlcnR5LCBKU09iamVjdFNldFByb3BlcnR5Q2Fs
bGJhY2sgX3NldFByb3BlcnR5LCBKU1Byb3BlcnR5QXR0cmlidXRlcyBfYXR0cmlidXRlcykKICAg
ICAgICAgOiBnZXRQcm9wZXJ0eShfZ2V0UHJvcGVydHkpLCBzZXRQcm9wZXJ0eShfc2V0UHJvcGVy
dHkpLCBhdHRyaWJ1dGVzKF9hdHRyaWJ1dGVzKQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBK
U09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHk7CiAgICAgSlNPYmplY3RTZXRQ
cm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5OwogICAgIEpTUHJvcGVydHlBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXM7CiB9OwogCi1zdHJ1Y3QgU3RhdGljRnVuY3Rpb25FbnRyeSB7CitzdHJ1Y3QgU3Rh
dGljRnVuY3Rpb25FbnRyeSA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgU3RhdGljRnVu
Y3Rpb25FbnRyeShKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgX2NhbGxBc0Z1bmN0aW9u
LCBKU1Byb3BlcnR5QXR0cmlidXRlcyBfYXR0cmlidXRlcykKICAgICAgICAgOiBjYWxsQXNGdW5j
dGlvbihfY2FsbEFzRnVuY3Rpb24pLCBhdHRyaWJ1dGVzKF9hdHRyaWJ1dGVzKQogICAgIHsKQEAg
LTYyLDcgKzYzLDcgQEAKIAogLy8gQW4gT3BhcXVlSlNDbGFzcyAoSlNDbGFzcykgaXMgY3JlYXRl
ZCB3aXRob3V0IGEgY29udGV4dCwgc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBhbnkgY29udGV4dCwg
ZXZlbiBhY3Jvc3MgY29udGV4dCBncm91cHMuCiAvLyBUaGlzIHN0cnVjdHVyZSBob2xkcyBkYXRh
IG1lbWJlcnMgdGhhdCB2YXJ5IGFjcm9zcyBjb250ZXh0IGdyb3Vwcy4KLXN0cnVjdCBPcGFxdWVK
U0NsYXNzQ29udGV4dERhdGEgOiBOb25jb3B5YWJsZSB7CitzdHJ1Y3QgT3BhcXVlSlNDbGFzc0Nv
bnRleHREYXRhIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBPcGFxdWVKU0NsYXNzQ29udGV4
dERhdGEoT3BhcXVlSlNDbGFzcyopOwogICAgIH5PcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoKTsK
IApJbmRleDogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBBUEkvSlNDYWxs
YmFja09iamVjdC5oCShyZXZpc2lvbiAzNzA0OCkKKysrIEFQSS9KU0NhbGxiYWNrT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAog
I2lmbmRlZiBKU0NhbGxiYWNrT2JqZWN0X2gKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJK
U09iamVjdFJlZi5oIgogI2luY2x1ZGUgIkpTVmFsdWVSZWYuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU4LDcg
KzU5LDcgQEAKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwot
ICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgSlNWYWx1ZSosIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgdmlydHVhbCBib29sIGRlbGV0
ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKQEAgLTc2LDMyICs3Nywz
MiBAQAogICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJl
dHVybiAmaW5mbzsgfQogCiAgICAgdm9pZCBpbml0KEV4ZWNTdGF0ZSopOwotIAorCiAgICAgc3Rh
dGljIEpTVmFsdWUqIGNhbGwoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGZ1bmN0aW9uT2JqZWN0LCBK
U1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICBzdGF0aWMgSlNPYmplY3Qq
IGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU09iamVjdCogY29uc3RydWN0b3IsIGNvbnN0IEFyZ0xp
c3QmKTsKLSAgIAorCiAgICAgc3RhdGljIEpTVmFsdWUqIGNhY2hlZFZhbHVlR2V0dGVyKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0
aWMgSlNWYWx1ZSogc3RhdGljVmFsdWVHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVlKiBzdGF0aWNGdW5j
dGlvbkdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIEpTVmFsdWUqIGNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgIHN0cnVjdCBKU0Nh
bGxiYWNrT2JqZWN0RGF0YSB7CisgICAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhICA6IHB1
YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgICAgIEpTQ2FsbGJhY2tPYmplY3REYXRhKHZvaWQq
IHByaXZhdGVEYXRhXywgSlNDbGFzc1JlZiBqc0NsYXNzXykKICAgICAgICAgICAgIDogcHJpdmF0
ZURhdGEocHJpdmF0ZURhdGFfKQogICAgICAgICAgICAgLCBqc0NsYXNzKGpzQ2xhc3NfKQogICAg
ICAgICB7CiAgICAgICAgICAgICBKU0NsYXNzUmV0YWluKGpzQ2xhc3MpOwogICAgICAgICB9Ci0g
ICAgICAgIAorCiAgICAgICAgIH5KU0NhbGxiYWNrT2JqZWN0RGF0YSgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEpTQ2xhc3NSZWxlYXNlKGpzQ2xhc3MpOwogICAgICAgICB9Ci0gICAgICAgIAor
CiAgICAgICAgIHZvaWQqIHByaXZhdGVEYXRhOwogICAgICAgICBKU0NsYXNzUmVmIGpzQ2xhc3M7
CiAgICAgfTsKLSAgICAKKwogICAgIE93blB0cjxKU0NhbGxiYWNrT2JqZWN0RGF0YT4gbV9jYWxs
YmFja09iamVjdERhdGE7CiB9OwogCkluZGV4OiBBUEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEFQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysgQVBJL0pTT2Jq
ZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVk
ZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCkBAIC01NSw3ICs1Niw3IEBACiAgICAgUmVmUHRyPE9wYXF1ZUpTQ2xhc3M+IGpz
Q2xhc3MgPSAoZGVmaW5pdGlvbi0+YXR0cmlidXRlcyAmIGtKU0NsYXNzQXR0cmlidXRlTm9BdXRv
bWF0aWNQcm90b3R5cGUpCiAgICAgICAgID8gT3BhcXVlSlNDbGFzczo6Y3JlYXRlTm9BdXRvbWF0
aWNQcm90b3R5cGUoZGVmaW5pdGlvbikKICAgICAgICAgOiBPcGFxdWVKU0NsYXNzOjpjcmVhdGUo
ZGVmaW5pdGlvbik7Ci0gICAgCisKICAgICByZXR1cm4ganNDbGFzcy5yZWxlYXNlKCkucmVsZWFz
ZVJlZigpOwogfQogCkBAIC05Myw3ICs5NCw3IEBACiAgICAgSlNMb2NrIGxvY2soZXhlYyk7CiAK
ICAgICBJZGVudGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKGV4ZWMpIDog
SWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIik7Ci0gICAgCisKICAgICByZXR1cm4gdG9SZWYo
bmV3IChleGVjKSBKU0NhbGxiYWNrRnVuY3Rpb24oZXhlYywgY2FsbEFzRnVuY3Rpb24sIG5hbWVJ
RCkpOwogfQogCkBAIC0xMDMsMTAgKzEwNCwxMCBAQAogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5o
ZWFwLT5yZWdpc3RlclRocmVhZCgpOwogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwogCi0gICAgSlNW
YWx1ZSoganNQcm90b3R5cGUgPSBqc0NsYXNzIAorICAgIEpTVmFsdWUqIGpzUHJvdG90eXBlID0g
anNDbGFzcwogICAgICAgICA/IGpzQ2xhc3MtPnByb3RvdHlwZShleGVjKQogICAgICAgICA6IGV4
ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCk7Ci0gICAgCisKICAg
ICBKU0NhbGxiYWNrQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBKU0NhbGxi
YWNrQ29uc3RydWN0b3IoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jYWxsYmFja0NvbnN0
cnVjdG9yU3RydWN0dXJlKCksIGpzQ2xhc3MsIGNhbGxBc0NvbnN0cnVjdG9yKTsKICAgICBjb25z
dHJ1Y3Rvci0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGpzUHJv
dG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcmV0dXJuIHRv
UmVmKGNvbnN0cnVjdG9yKTsKQEAgLTExOSw3ICsxMjAsNyBAQAogICAgIEpTTG9jayBsb2NrKGV4
ZWMpOwogCiAgICAgSWRlbnRpZmllciBuYW1lSUQgPSBuYW1lID8gbmFtZS0+aWRlbnRpZmllcihl
eGVjKSA6IElkZW50aWZpZXIoZXhlYywgImFub255bW91cyIpOwotICAgIAorCiAgICAgQXJnTGlz
dCBhcmdzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJDb3VudDsgaSsr
KQogICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBwYXJhbWV0ZXJOYW1lc1tpXS0+
dXN0cmluZygpKSk7CkBAIC0yNDUsNyArMjQ2LDcgQEAKICAgICBKU0xvY2sgbG9jayhleGVjKTsK
IAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKLSAgICAKKwogICAgIHJl
dHVybiBqc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLT5pZGVudGlmaWVy
KGV4ZWMpKTsKIH0KIApAQCAtMzE2LDcgKzMxNyw3IEBACiAKICAgICBKU09iamVjdCoganNPYmpl
Y3QgPSB0b0pTKG9iamVjdCk7CiAgICAgSlNWYWx1ZSoganNWYWx1ZSA9IHRvSlModmFsdWUpOwot
ICAgIAorCiAgICAganNPYmplY3QtPnB1dChleGVjLCBwcm9wZXJ0eUluZGV4LCBqc1ZhbHVlKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikK
QEAgLTM0NSwxOSArMzQ2LDE5IEBACiB2b2lkKiBKU09iamVjdEdldFByaXZhdGUoSlNPYmplY3RS
ZWYgb2JqZWN0KQogewogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKLSAg
ICAKKwogICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9i
YWxPYmplY3Q+OjppbmZvKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQ2FsbGJhY2tP
YmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlKCk7CiAgICAgZWxz
ZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0Pjo6aW5m
bykpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0
Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgpOwotICAgIAorCiAgICAgcmV0dXJuIDA7CiB9CiAK
IGJvb2wgSlNPYmplY3RTZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iamVjdCwgdm9pZCogZGF0YSkK
IHsKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7Ci0gICAgCisKICAgICBp
ZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6
aW5mbykpIHsKICAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9i
amVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMzY1LDcgKzM2Niw3IEBACiAgICAgICAgIHN0YXRpY19jYXN0PEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlKGRhdGEpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9Ci0gICAgICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00
MzksMTMgKzQ0MCwxMyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0cnVjdCBPcGFxdWVK
U1Byb3BlcnR5TmFtZUFycmF5IHsKK3N0cnVjdCBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5IDog
cHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICAgICAgOiByZWZDb3VudCgwKQogICAgICAgICAs
IGdsb2JhbERhdGEoZ2xvYmFsRGF0YSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgdW5zaWdu
ZWQgcmVmQ291bnQ7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhOwogICAgIFZlY3RvcjxK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gPiBhcnJheTsKQEAgLTQ2OCw3ICs0NjksNyBAQAogICAg
IHByb3BlcnR5TmFtZXMtPmFycmF5LnJlc2VydmVDYXBhY2l0eShzaXplKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy0+YXJyYXku
YXBwZW5kKEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZShhcnJheVtpXS51c3RyaW5nKCkpLnJlbGVhc2VSZWYoKSkpOwotICAgIAorCiAgICAgcmV0
dXJuIEpTUHJvcGVydHlOYW1lQXJyYXlSZXRhaW4ocHJvcGVydHlOYW1lcyk7CiB9CiAKSW5kZXg6
IEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBBUEkvSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDM3MDQ4KQorKysgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMyArMjAsMTQgQEAKICAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
ICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAogI2lmbmRlZiBKU0NhbGxiYWNrQ29uc3RydWN0b3JfaAogI2RlZmluZSBKU0NhbGxi
YWNrQ29uc3RydWN0b3JfaAogCiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKKyNpbmNsdWRlICJD
bGFzc0luZm8uaCIKICNpbmNsdWRlIDxranMvSlNPYmplY3QuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkluZGV4OiBBUEkvSlNSZXRhaW5QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBBUEkvSlNSZXRhaW5QdHIu
aAkocmV2aXNpb24gMzcwNDgpCisrKyBBUEkvSlNSZXRhaW5QdHIuaAkod29ya2luZyBjb3B5KQpA
QCAtNiwxMyArNiwxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
ICAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTMxLDQ0ICszMSw0NSBAQAogCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiBpbmxpbmUgdm9pZCBKU1JldGFpbihKU1N0cmlu
Z1JlZiBzdHJpbmcpIHsgSlNTdHJpbmdSZXRhaW4oc3RyaW5nKTsgfQogaW5saW5lIHZvaWQgSlNS
ZWxlYXNlKEpTU3RyaW5nUmVmIHN0cmluZykgeyBKU1N0cmluZ1JlbGVhc2Uoc3RyaW5nKTsgfQog
CiBlbnVtIEFkb3B0VGFnIHsgQWRvcHQgfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IEpTUmV0YWluUHRyIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBKU1JldGFpblB0ciA6
IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiBwdWJsaWM6CiAgICAgSlNSZXRhaW5QdHIoKSA6IG1f
cHRyKDApIHt9CiAgICAgSlNSZXRhaW5QdHIoVCBwdHIpIDogbV9wdHIocHRyKSB7IGlmIChwdHIp
IEpTUmV0YWluKHB0cik7IH0KIAogICAgIEpTUmV0YWluUHRyKEFkb3B0VGFnLCBUIHB0cikgOiBt
X3B0cihwdHIpIHsgfQotICAgIAorCiAgICAgSlNSZXRhaW5QdHIoY29uc3QgSlNSZXRhaW5QdHIm
IG8pIDogbV9wdHIoby5tX3B0cikgeyBpZiAoVCBwdHIgPSBtX3B0cikgSlNSZXRhaW4ocHRyKTsg
fQogCiAgICAgfkpTUmV0YWluUHRyKCkgeyBpZiAoVCBwdHIgPSBtX3B0cikgSlNSZWxlYXNlKHB0
cik7IH0KLSAgICAKKwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBKU1JldGFpblB0cihjb25z
dCBKU1JldGFpblB0cjxVPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IGlmIChUIHB0ciA9IG1fcHRy
KSBKU1JldGFpbihwdHIpOyB9Ci0gICAgCisKICAgICBUIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHRyOyB9Ci0gICAgCisKICAgICBUIHJlbGVhc2VSZWYoKSB7IFQgdG1wID0gbV9wdHI7IG1fcHRy
ID0gMDsgcmV0dXJuIHRtcDsgfQotICAgIAorCiAgICAgVCBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gbV9wdHI7IH0KLSAgICAKKwogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1
cm4gIW1fcHRyOyB9CiAKICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGlt
cGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMu
CiAgICAgdHlwZWRlZiBUIEpTUmV0YWluUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZTsKICAgICBv
cGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmSlNS
ZXRhaW5QdHI6Om1fcHRyIDogMDsgfQotICAgIAorCiAgICAgSlNSZXRhaW5QdHImIG9wZXJhdG9y
PShjb25zdCBKU1JldGFpblB0ciYpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBKU1JldGFp
blB0ciYgb3BlcmF0b3I9KGNvbnN0IEpTUmV0YWluUHRyPFU+Jik7CiAgICAgSlNSZXRhaW5QdHIm
IG9wZXJhdG9yPShUKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gSlNSZXRhaW5QdHImIG9w
ZXJhdG9yPShVKik7CiAKICAgICB2b2lkIGFkb3B0KFQpOwotICAgIAorCiAgICAgdm9pZCBzd2Fw
KEpTUmV0YWluUHRyJik7CiAKIHByaXZhdGU6CkluZGV4OiBBUEkvSlNDYWxsYmFja09iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCShyZXZpc2lvbiAzNzA0
OCkKKysrIEFQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyAr
MjEsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0z
NSw3ICszNSw3IEBACiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTQ2FsbGJhY2tPYmplY3Q8
SlNHbG9iYWxPYmplY3Q+KTsKIAogLy8gRGVmaW5lIHRoZSB0d28gdHlwZXMgb2YgSlNDYWxsYmFj
a09iamVjdHMgd2Ugc3VwcG9ydC4KLXRlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxi
YWNrT2JqZWN0PEpTT2JqZWN0Pjo6aW5mbyA9IHsgIkNhbGxiYWNrT2JqZWN0IiwgMCwgMCwgMCB9
OwotdGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxP
YmplY3Q+OjppbmZvID0geyAiQ2FsbGJhY2tHbG9iYWxPYmplY3QiLCAwLCAwLCAwIH07Cit0ZW1w
bGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU09iamVjdD46OmluZm8o
IkNhbGxiYWNrT2JqZWN0IiwgMCwgMCwgMCk7Cit0ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8g
SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmluZm8oIkNhbGxiYWNrR2xvYmFsT2Jq
ZWN0IiwgMCwgMCwgMCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogVk0vTGFiZWxJRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFZNL0xhYmVsSUQuaAkocmV2aXNpb24gMzcwNDgpCisrKyBWTS9MYWJl
bElELmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPGxpbWl0cy5o
PgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBM
YWJlbElEIHsKKyAgICBjbGFzcyBMYWJlbElEIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IExhYmVsSUQoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAgICAgICAgICAgICA6IG1fcmVmQ291bnQoMCkKSW5kZXg6IFZNL1JlZ2lzdGVySUQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBWTS9SZWdpc3RlcklELmgJKHJldmlzaW9uIDM3MDQ4KQorKysgVk0vUmVnaXN0
ZXJJRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi0gICAgY2xhc3MgUmVnaXN0ZXJJRCA6IE5vbmNvcHlhYmxlIHsKKyAgICBjbGFzcyBSZWdp
c3RlcklEIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlZ2lz
dGVySUQoKQogICAgICAgICAgICAgOiBtX3JlZkNvdW50KDApCkluZGV4OiBWTS9NYWNoaW5lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVk0vTWFjaGluZS5oCShyZXZpc2lvbiAzNzA0OCkKKysrIFZNL01hY2hp
bmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk9wY29kZS5o
IgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL05ldy5oPgogCiAjaWYgRU5BQkxFKENUSSkKICNpbmNsdWRlICJDVEkuaCIK
QEAgLTY2LDcgKzY3LDcgQEAKIAogICAgIGVudW0geyBNYXhSZWVudHJ5RGVwdGggPSAxMjggfTsK
IAotICAgIGNsYXNzIE1hY2hpbmUgeworICAgIGNsYXNzIE1hY2hpbmUgOiBwdWJsaWMgV1RGOjpB
bGxvY0Jhc2UgewogICAgICAgICBmcmllbmQgY2xhc3MgQ1RJOwogICAgIHB1YmxpYzoKICAgICAg
ICAgTWFjaGluZSgpOwpJbmRleDogVk0vU2FtcGxpbmdUb29sLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0v
U2FtcGxpbmdUb29sLmgJKHJldmlzaW9uIDM3MDQ4KQorKysgVk0vU2FtcGxpbmdUb29sLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDExIEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvTmV3Lmg+CiAKICNpbmNsdWRlIDxub2Rlcy5oPgogI2luY2x1ZGUgPE9w
Y29kZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ4
LDEzICs1MCwxMyBAQAogICAgIGV4dGVybiB1bnNpZ25lZCBpbkNhbGxlZENvZGU7CiAjZW5kaWYK
IAotICAgIHN0cnVjdCBTY29wZVNhbXBsZVJlY29yZCB7CisgICAgc3RydWN0IFNjb3BlU2FtcGxl
UmVjb3JkIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgUmVmUHRyPFNjb3BlTm9k
ZT4gbV9zY29wZTsKICAgICAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICAgICAgaW50
IG1fdG90YWxDb3VudDsKICAgICAgICAgaW50KiBtX3ZwY0NvdW50czsKICAgICAgICAgdW5zaWdu
ZWQgbV9zaXplOwotICAgICAgICAKKwogICAgICAgICBTY29wZVNhbXBsZVJlY29yZChTY29wZU5v
ZGUqIHNjb3BlKQogICAgICAgICAgICAgOiBtX3Njb3BlKHNjb3BlKQogICAgICAgICAgICAgLCBt
X2NvZGVCbG9jaygwKQpAQCAtNjMsMTkgKzY1LDE5IEBACiAgICAgICAgICAgICAsIG1fc2l6ZSgw
KQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgflNjb3BlU2FtcGxl
UmVjb3JkKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fdnBjQ291bnRzKQogICAgICAg
ICAgICAgICAgIGZyZWUobV92cGNDb3VudHMpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIHZvaWQgc2FtcGxlKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDKTsK
ICAgICB9OwogCiAgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8U2NvcGVOb2RlKiwgU2NvcGVTYW1w
bGVSZWNvcmQqPiBTY29wZVNhbXBsZVJlY29yZE1hcDsKIAotICAgIGNsYXNzIFNhbXBsaW5nVG9v
bCB7CisgICAgY2xhc3MgU2FtcGxpbmdUb29sIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFNhbXBsaW5nVG9vbCgpCiAgICAgICAgICAgICA6IG1fcnVubmlu
ZyhmYWxzZSkKQEAgLTEwOCw3ICsxMTAsNyBAQAogICAgICAgICAgICAgbV9yZWNvcmRlZENvZGVC
bG9jayA9IDA7CiAgICAgICAgICAgICBtX3JlY29yZGVkVlBDID0gMDsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICB2b2lkIGNhbGxpbmdIb3N0RnVuY3Rpb24oKQogICAgICAgICB7CiAg
ICAgICAgICAgICBtX3JlY29yZGVkQ29kZUJsb2NrID0gMDsKQEAgLTEyMSw3ICsxMjMsNyBAQAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyB2b2lkKiB0aHJlYWRTdGFydEZ1bmModm9pZCop
OwogICAgICAgICB2b2lkIHJ1bigpOwotICAgICAgICAKKwogICAgICAgICAvLyBTYW1wbGluZyB0
aHJlYWQgc3RhdGUuCiAgICAgICAgIGJvb2wgbV9ydW5uaW5nOwogICAgICAgICB1bnNpZ25lZCBt
X2hlcnR6OwpJbmRleDogVk0vQ29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysgVk0vQ29kZUdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxNyw3ICszMTcsNyBAQAogICAgIG1fdGhpc1JlZ2lzdGVyLnNl
dEluZGV4KG1fbmV4dFBhcmFtZXRlcik7CiAgICAgKyttX25leHRQYXJhbWV0ZXI7CiAgICAgKytt
X2NvZGVCbG9jay0+bnVtUGFyYW1ldGVyczsKLSAgICAKKwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKICAgICAgICAgYWRkUGFyYW1ldGVyKHBhcmFt
ZXRlcnNbaV0pOwogCkBAIC0zOTcsNyArMzk3LDcgQEAKIHsKICAgICBpZiAoaWRlbnQgPT0gcHJv
cGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAK
KwogICAgIHJldHVybiBzaG91bGRPcHRpbWl6ZUxvY2FscygpICYmIHN5bWJvbFRhYmxlKCkuY29u
dGFpbnMoaWRlbnQudXN0cmluZygpLnJlcCgpKTsKIH0KIApAQCAtNDQ2LDEwICs0NDYsMTAgQEAK
IFBhc3NSZWZQdHI8TGFiZWxJRD4gQ29kZUdlbmVyYXRvcjo6ZW1pdExhYmVsKExhYmVsSUQqIGww
KQogewogICAgIGwwLT5zZXRMb2NhdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotICAgIAor
CiAgICAgLy8gVGhpcyBkaXNhYmxlcyBwZWVwaG9sZSBvcHRpbWl6YXRpb25zIHdoZW4gYW4gaW5z
dHJ1Y3Rpb24gaXMgYSBqdW1wIHRhcmdldAogICAgIG1fbGFzdE9wY29kZUlEID0gb3BfZW5kOwot
ICAgIAorCiAgICAgcmV0dXJuIGwwOwogfQogCkBAIC01NjYsNyArNTY2LDcgQEAKICAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNJbmRleCk7CiAgICAgICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5vZmZzZXRGcm9tKGluc3RydWN0aW9ucygpLnNpemUoKSkp
OwogICAgICAgICAgICAgcmV0dXJuIHRhcmdldDsKLSAgICAgICAgfSAgICAgICAgCisgICAgICAg
IH0KICAgICB9CiAKICAgICBlbWl0T3Bjb2RlKG9wX2pmYWxzZSk7CkBAIC04MjEsNyArODIxLDcg
QEAKICAgICB9CiAKICAgICBzaXplX3QgZGVwdGggPSAwOwotICAgIAorCiAgICAgU2NvcGVDaGFp
bkl0ZXJhdG9yIGl0ZXIgPSBtX3Njb3BlQ2hhaW4tPmJlZ2luKCk7CiAgICAgU2NvcGVDaGFpbkl0
ZXJhdG9yIGVuZCA9IG1fc2NvcGVDaGFpbi0+ZW5kKCk7CiAgICAgZm9yICg7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIsICsrZGVwdGgpIHsKQEAgLTg2MCw3ICs4NjAsNyBAQAogfQogCiBSZWdpc3RlcklE
KiBDb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFuY2VPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHZhbHVlLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBiYXNlUHJvdG90eXBlKQot
eyAKK3sKICAgICBlbWl0T3Bjb2RlKG9wX2luc3RhbmNlb2YpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+
aW5kZXgoKSk7CkBAIC0xMjI4LDcgKzEyMjgsNyBAQAogewogICAgIENvbnRyb2xGbG93Q29udGV4
dCBzY29wZTsKICAgICBzY29wZS5pc0ZpbmFsbHlCbG9jayA9IHRydWU7Ci0gICAgRmluYWxseUNv
bnRleHQgY29udGV4dCA9IHsgdGFyZ2V0LCByZXRBZGRyRHN0IH07CisgICAgRmluYWxseUNvbnRl
eHQgY29udGV4dCAodGFyZ2V0LCByZXRBZGRyRHN0KTsKICAgICBzY29wZS5maW5hbGx5Q29udGV4
dCA9IGNvbnRleHQ7CiAgICAgbV9zY29wZUNvbnRleHRTdGFjay5hcHBlbmQoc2NvcGUpOwogICAg
IG1fZmluYWxseURlcHRoKys7CkBAIC0xMjQ1LDcgKzEyNDUsNyBAQAogCiB2b2lkIENvZGVHZW5l
cmF0b3I6OnB1c2hKdW1wQ29udGV4dChMYWJlbFN0YWNrKiBsYWJlbHMsIExhYmVsSUQqIGNvbnRp
bnVlVGFyZ2V0LCBMYWJlbElEKiBicmVha1RhcmdldCwgYm9vbCBpc1ZhbGlkVW5sYWJlbGVkQnJl
YWtUYXJnZXQpCiB7Ci0gICAgSnVtcENvbnRleHQgY29udGV4dCA9IHsgbGFiZWxzLCBjb250aW51
ZVRhcmdldCwgYnJlYWtUYXJnZXQsIHNjb3BlRGVwdGgoKSwgaXNWYWxpZFVubGFiZWxlZEJyZWFr
VGFyZ2V0IH07CisgICAgSnVtcENvbnRleHQgY29udGV4dCAobGFiZWxzLCBjb250aW51ZVRhcmdl
dCwgYnJlYWtUYXJnZXQsIHNjb3BlRGVwdGgoKSwgaXNWYWxpZFVubGFiZWxlZEJyZWFrVGFyZ2V0
KTsKICAgICBtX2p1bXBDb250ZXh0U3RhY2suYXBwZW5kKGNvbnRleHQpOwogICAgIGlmIChjb250
aW51ZVRhcmdldCkKICAgICAgICAgbV9jb250aW51ZURlcHRoKys7CkBAIC0xMzc4LDcgKzEzNzgs
NyBAQAogCiBSZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0ZXJJRCog
dGFyZ2V0UmVnaXN0ZXIsIExhYmVsSUQqIHN0YXJ0LCBMYWJlbElEKiBlbmQpCiB7Ci0gICAgSGFu
ZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPm9mZnNldEZyb20oMCksIGVuZC0+b2Zmc2V0RnJvbSgw
KSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoLCAwIH07CisgICAg
SGFuZGxlckluZm8gaW5mbyAoIHN0YXJ0LT5vZmZzZXRGcm9tKDApLCBlbmQtPm9mZnNldEZyb20o
MCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCwgMCApOwogICAg
IGV4Y2VwdGlvbkhhbmRsZXJzKCkuYXBwZW5kKGluZm8pOwogICAgIGVtaXRPcGNvZGUob3BfY2F0
Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXRSZWdpc3Rlci0+aW5kZXgoKSk7
CkBAIC0xNDE1LDcgKzE0MTUsNyBAQAogICAgIGNvbnRleHQuaXNGaW5hbGx5QmxvY2sgPSBmYWxz
ZTsKICAgICBtX3Njb3BlQ29udGV4dFN0YWNrLmFwcGVuZChjb250ZXh0KTsKICAgICBtX2R5bmFt
aWNTY29wZURlcHRoKys7Ci0gICAgCisKICAgICBlbWl0T3Bjb2RlKG9wX3B1c2hfbmV3X3Njb3Bl
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0MjQsNyArMTQyNCw3
IEBACiAKIHZvaWQgQ29kZUdlbmVyYXRvcjo6YmVnaW5Td2l0Y2goUmVnaXN0ZXJJRCogc2NydXRp
bmVlUmVnaXN0ZXIsIFN3aXRjaEluZm86OlN3aXRjaFR5cGUgdHlwZSkKIHsKLSAgICBTd2l0Y2hJ
bmZvIGluZm8gPSB7IGluc3RydWN0aW9ucygpLnNpemUoKSwgdHlwZSB9OworICAgIFN3aXRjaElu
Zm8gaW5mbyAoIGluc3RydWN0aW9ucygpLnNpemUoKSwgdHlwZSApOwogICAgIHN3aXRjaCAodHlw
ZSkgewogICAgICAgICBjYXNlIFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZToKICAgICAgICAg
ICAgIGVtaXRPcGNvZGUob3Bfc3dpdGNoX2ltbSk7CkluZGV4OiBWTS9JbnN0cnVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFZNL0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDM3MDQ4KQorKysgVk0vSW5z
dHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAi
T3Bjb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM4LDcgKzM5LDcgQEAKICAgICBjbGFzcyBT
dHJ1Y3R1cmVJRDsKICAgICBjbGFzcyBTdHJ1Y3R1cmVJRENoYWluOwogCi0gICAgc3RydWN0IElu
c3RydWN0aW9uIHsKKyAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJsaWMgV1RGOjpBbGxvY0Jh
c2UgewogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bjb2RlKSB7IHUub3Bjb2RlID0gb3Bj
b2RlOyB9CiAgICAgICAgIEluc3RydWN0aW9uKGludCBvcGVyYW5kKQogICAgICAgICB7CkluZGV4
OiBWTS9Db2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ29kZUdlbmVyYXRvci5oCShy
ZXZpc2lvbiAzNzA0OCkKKysrIFZNL0NvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIm5vZGVzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtNTAsMjUgKzUxLDY3IEBACiAgICAgY2xhc3MgU2NvcGVOb2Rl
OwogCiAgICAgLy8gSnVtcENvbnRleHRzIGFyZSB1c2VkIHRvIHRyYWNrIGVudHJ5IGFuZCBleGl0
IHBvaW50cyBmb3IgamF2YXNjcmlwdCBsb29wcyBhbmQgc3dpdGNoIHN0YXRlbWVudHMKLSAgICBz
dHJ1Y3QgSnVtcENvbnRleHQgeworICAgIHN0cnVjdCBKdW1wQ29udGV4dCA6IHB1YmxpYyBXVEY6
OkFsbG9jQmFzZSB7CiAgICAgICAgIExhYmVsU3RhY2sqIGxhYmVsczsKICAgICAgICAgTGFiZWxJ
RCogY29udGludWVUYXJnZXQ7CiAgICAgICAgIExhYmVsSUQqIGJyZWFrVGFyZ2V0OwogICAgICAg
ICBpbnQgc2NvcGVEZXB0aDsKICAgICAgICAgYm9vbCBpc1ZhbGlkVW5sYWJlbGVkQnJlYWtUYXJn
ZXQ7CisgICAgICAgIAorICAgICAgICBKdW1wQ29udGV4dCgpCisgICAgICAgICAgICA6IGxhYmVs
cygpCisgICAgICAgICAgICAsIGNvbnRpbnVlVGFyZ2V0KCkKKyAgICAgICAgICAgICwgYnJlYWtU
YXJnZXQoKQorICAgICAgICAgICAgLCBzY29wZURlcHRoKDApCisgICAgICAgICAgICAsIGlzVmFs
aWRVbmxhYmVsZWRCcmVha1RhcmdldCgwKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBKdW1wQ29udGV4dChMYWJlbFN0YWNrKiBfbGFiZWxzLCBMYWJlbElEKiBfY29udGludWVUYXJn
ZXQsIExhYmVsSUQqIF9icmVha1RhcmdldCwgaW50IF9zY29wZURlcHRoLCBib29sIF9pc1ZhbGlk
VW5sYWJlbGVkQnJlYWtUYXJnZXQpCisgICAgICAgICAgICA6IGxhYmVscyhfbGFiZWxzKQorICAg
ICAgICAgICAgLCBjb250aW51ZVRhcmdldChfY29udGludWVUYXJnZXQpCisgICAgICAgICAgICAs
IGJyZWFrVGFyZ2V0KF9icmVha1RhcmdldCkKKyAgICAgICAgICAgICwgc2NvcGVEZXB0aChfc2Nv
cGVEZXB0aCkKKyAgICAgICAgICAgICwgaXNWYWxpZFVubGFiZWxlZEJyZWFrVGFyZ2V0KF9pc1Zh
bGlkVW5sYWJlbGVkQnJlYWtUYXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgfQogICAgIH07CiAK
LSAgICBzdHJ1Y3QgRmluYWxseUNvbnRleHQgeworICAgIHN0cnVjdCBGaW5hbGx5Q29udGV4dCA6
IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgICAgIExhYmVsSUQqIGZpbmFsbHlBZGRyOwog
ICAgICAgICBSZWdpc3RlcklEKiByZXRBZGRyRHN0OworICAgICAgICAKKyAgICAgICAgRmluYWxs
eUNvbnRleHQoKQorICAgICAgICAgICAgOiBmaW5hbGx5QWRkcigwKQorICAgICAgICAgICAgLCBy
ZXRBZGRyRHN0KDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIEZpbmFsbHlDb250
ZXh0KExhYmVsSUQqIF9maW5hbGx5QWRkciwgUmVnaXN0ZXJJRCogX3JldEFkZHJEc3QpCisgICAg
ICAgICAgICA6IGZpbmFsbHlBZGRyKF9maW5hbGx5QWRkcikKKyAgICAgICAgICAgICwgcmV0QWRk
ckRzdChfcmV0QWRkckRzdCkKKyAgICAgICAgeworICAgICAgICB9CiAgICAgfTsKIAotICAgIHN0
cnVjdCBDb250cm9sRmxvd0NvbnRleHQgeworICAgIHN0cnVjdCBDb250cm9sRmxvd0NvbnRleHQg
OiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAgICBib29sIGlzRmluYWxseUJsb2NrOwog
ICAgICAgICBGaW5hbGx5Q29udGV4dCBmaW5hbGx5Q29udGV4dDsKKworICAgICAgICBDb250cm9s
Rmxvd0NvbnRleHQoKQorCQkJOiBpc0ZpbmFsbHlCbG9jayhmYWxzZSkKKwkJCSwgZmluYWxseUNv
bnRleHQoKQorCQl7CisJCX0KKworICAgICAgICBDb250cm9sRmxvd0NvbnRleHQoYm9vbCBfaXNG
aW5hbGx5QmxvY2ssIEZpbmFsbHlDb250ZXh0IF9maW5hbGx5Q29udGV4dCkKKwkJCTogaXNGaW5h
bGx5QmxvY2soX2lzRmluYWxseUJsb2NrKQorCQkJLCBmaW5hbGx5Q29udGV4dChfZmluYWxseUNv
bnRleHQpCisJCXsKKwkJfQogICAgIH07CiAKLSAgICBjbGFzcyBDb2RlR2VuZXJhdG9yIHsKKyAg
ICBjbGFzcyBDb2RlR2VuZXJhdG9yIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZhclN0YWNr
OwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0
aW9uU3RhY2s7CkBAIC0xNjksNyArMjEyLDcgQEAKICAgICAgICAgICAgIC8vIE5vZGU6OmVtaXRD
b2RlIGFzc3VtZXMgdGhhdCBkc3QsIGlmIHByb3ZpZGVkLCBpcyBlaXRoZXIgYSBsb2NhbCBvciBh
IHJlZmVyZW5jZWQgdGVtcG9yYXJ5LgogICAgICAgICAgICAgQVNTRVJUKCFkc3QgfHwgZHN0ID09
IGlnbm9yZWRSZXN1bHQoKSB8fCAhZHN0LT5pc1RlbXBvcmFyeSgpIHx8IGRzdC0+cmVmQ291bnQo
KSk7CiAgICAgICAgICAgICBpZiAoIW1fY29kZUJsb2NrLT5saW5lSW5mby5zaXplKCkgfHwgbV9j
b2RlQmxvY2stPmxpbmVJbmZvLmxhc3QoKS5saW5lTnVtYmVyICE9IG4tPmxpbmVObygpKSB7Ci0g
ICAgICAgICAgICAgICAgTGluZUluZm8gaW5mbyA9IHsgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBu
LT5saW5lTm8oKSB9OworICAgICAgICAgICAgICAgIExpbmVJbmZvIGluZm8gKCBpbnN0cnVjdGlv
bnMoKS5zaXplKCksIG4tPmxpbmVObygpICk7CiAgICAgICAgICAgICAgICAgbV9jb2RlQmxvY2st
PmxpbmVJbmZvLmFwcGVuZChpbmZvKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy
biBuLT5lbWl0Q29kZSgqdGhpcywgZHN0KTsKQEAgLTE4MSw3ICsyMjQsNyBAQAogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCBlbWl0RXhwcmVzc2lvbkluZm8odW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIHsgCisgICAgICAg
IHsKICAgICAgICAgICAgIGRpdm90IC09IG1fY29kZUJsb2NrLT5zb3VyY2VPZmZzZXQ7CiAgICAg
ICAgICAgICBpZiAoZGl2b3QgPiBFeHByZXNzaW9uUmFuZ2VJbmZvOjpNYXhEaXZvdCkgewogICAg
ICAgICAgICAgICAgIC8vIE92ZXJmbG93IGhhcyBvY2N1cnJlZCwgd2UgY2FuIG9ubHkgZ2l2ZSBs
aW5lIG51bWJlciBpbmZvIGZvciBlcnJvcnMgZm9yIHRoaXMgcmVnaW9uCkBAIC0yMDAsNyArMjQz
LDcgQEAKICAgICAgICAgICAgICAgICAvLyBkcm9wcGluZyB0aGUgcmVzdCBvZiB0aGUgcmFuZ2Uu
CiAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICBFeHByZXNzaW9uUmFuZ2VJbmZvIGluZm87CiAgICAgICAgICAg
ICBpbmZvLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgICAg
ICAgICAgaW5mby5kaXZvdFBvaW50ID0gZGl2b3Q7CkBAIC0yMDgsNyArMjUxLDcgQEAKICAgICAg
ICAgICAgIGluZm8uZW5kT2Zmc2V0ID0gZW5kT2Zmc2V0OwogICAgICAgICAgICAgbV9jb2RlQmxv
Y2stPmV4cHJlc3Npb25JbmZvLmFwcGVuZChpbmZvKTsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGVmdEhhbmRTaWRlTmVlZHNDb3B5KGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodElzUHVyZSkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIChtX2NvZGVUeXBlICE9IEZ1bmN0aW9uQ29kZSB8fCBtX2NvZGVCbG9jay0+bmVl
ZHNGdWxsU2NvcGVDaGFpbiB8fCByaWdodEhhc0Fzc2lnbm1lbnRzKSAmJiAhcmlnaHRJc1B1cmU7
CkBAIC0yNzcsNyArMzIwLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiBiYXNlLCBBcmd1bWVudHNO
b2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbEV2YWwoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiBiYXNlLCBBcmd1bWVudHNOb2RlKiwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwog
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVy
biBlbWl0VW5hcnlOb0RzdE9wKG9wX3JldCwgc3JjKTsgfSAKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRVbmFyeU5vRHN0T3Aob3Bf
cmV0LCBzcmMpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRFbmQoUmVnaXN0ZXJJRCogc3Jj
KSB7IHJldHVybiBlbWl0VW5hcnlOb0RzdE9wKG9wX2VuZCwgc3JjKTsgfQogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRDb25zdHJ1Y3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5j
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOwpAQCAtMzM3LDcgKzM4MCw3IEBACiAKICAgICAgICAgdHlwZWRl
ZiBIYXNoTWFwPEpTVmFsdWUqLCB1bnNpZ25lZCwgRGVmYXVsdEhhc2g8SlNWYWx1ZSo+OjpIYXNo
LCBKU1ZhbHVlSGFzaFRyYWl0cz4gSlNWYWx1ZU1hcDsKIAotICAgICAgICBzdHJ1Y3QgSWRlbnRp
Zmllck1hcEluZGV4SGFzaFRyYWl0cyB7CisgICAgICAgIHN0cnVjdCBJZGVudGlmaWVyTWFwSW5k
ZXhIYXNoVHJhaXRzIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgICAgIHR5cGVk
ZWYgaW50IFRyYWl0VHlwZTsKICAgICAgICAgICAgIHR5cGVkZWYgSWRlbnRpZmllck1hcEluZGV4
SGFzaFRyYWl0cyBTdG9yYWdlVHJhaXRzOwogICAgICAgICAgICAgc3RhdGljIGludCBlbXB0eVZh
bHVlKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsgfQpJbmRleDog
Vk0vUmVnaXN0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBWTS9SZWdpc3Rlci5oCShyZXZpc2lvbiAzNzA0
OCkKKysrIFZNL1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+CisjaW5j
bHVkZSA8d3RmL05ldy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDMsNyArNDQsNyBAQAog
ICAgIAogICAgIHN0YXRpYyBKU1ZhbHVlKiBjb25zdCBudWxsSlNWYWx1ZSA9IDA7CiAKLSAgICBj
bGFzcyBSZWdpc3RlciB7CisgICAgY2xhc3MgUmVnaXN0ZXIgOiBwdWJsaWMgV1RGOjpBbGxvY0Jh
c2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVnaXN0ZXIoKTsKICAgICAgICAgUmVnaXN0ZXIo
SlNWYWx1ZSopOwpJbmRleDogVk0vUmVnaXN0ZXJGaWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vUmVn
aXN0ZXJGaWxlLmgJKHJldmlzaW9uIDM3MDQ4KQorKysgVk0vUmVnaXN0ZXJGaWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owog
Ci0gICAgY2xhc3MgUmVnaXN0ZXJGaWxlIDogTm9uY29weWFibGUgeworICAgIGNsYXNzIFJlZ2lz
dGVyRmlsZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVt
IENhbGxGcmFtZUhlYWRlckVudHJ5IHsKICAgICAgICAgICAgIENhbGxGcmFtZUhlYWRlclNpemUg
PSA4LApJbmRleDogVk0vQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ29kZUJsb2NrLmgJ
KHJldmlzaW9uIDM3MDQ4KQorKysgVk0vQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJ1c3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvTmV3Lmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC00NSwxNyArNDYsMzUgQEAKIAogICAgIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIGludCBtaXNzaW5nVGhpc09iamVjdE1hcmtlcigpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCk7IH0KIAotICAgIHN0cnVjdCBIYW5kbGVySW5mbyB7CisgICAgc3Ry
dWN0IEhhbmRsZXJJbmZvIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgdWludDMy
X3Qgc3RhcnQ7CiAgICAgICAgIHVpbnQzMl90IGVuZDsKICAgICAgICAgdWludDMyX3QgdGFyZ2V0
OwogICAgICAgICB1aW50MzJfdCBzY29wZURlcHRoOwogICAgICAgICB2b2lkKiBuYXRpdmVDb2Rl
OworCisgICAgICAgIEhhbmRsZXJJbmZvKCkKKyAgICAgICAgICAgIDogc3RhcnQoMCkKKyAgICAg
ICAgICAgICwgZW5kKDApCisgICAgICAgICAgICAsIHRhcmdldCgwKQorICAgICAgICAgICAgLCBz
Y29wZURlcHRoKDApCisgICAgICAgICAgICAsIG5hdGl2ZUNvZGUoMCkKKyAgICAgICAgeworICAg
ICAgICB9CisKKyAgICAgICAgSGFuZGxlckluZm8odWludDMyX3QgX3N0YXJ0LCB1aW50MzJfdCBf
ZW5kLCB1aW50MzJfdCBfdGFyZ2V0LCB1aW50MzJfdCBfc2NvcGVEZXB0aCwgdm9pZCogX25hdGl2
ZUNvZGUpCisgICAgICAgICAgICA6IHN0YXJ0KF9zdGFydCkKKyAgICAgICAgICAgICwgZW5kKF9l
bmQpCisgICAgICAgICAgICAsIHRhcmdldChfdGFyZ2V0KQorICAgICAgICAgICAgLCBzY29wZURl
cHRoKF9zY29wZURlcHRoKQorICAgICAgICAgICAgLCBuYXRpdmVDb2RlKF9uYXRpdmVDb2RlKQor
ICAgICAgICB7CisgICAgICAgIH0KICAgICB9OwogCi0gICAgc3RydWN0IEV4cHJlc3Npb25SYW5n
ZUluZm8geworICAgIHN0cnVjdCBFeHByZXNzaW9uUmFuZ2VJbmZvIDogcHVibGljIFdURjo6QWxs
b2NCYXNlIHsKICAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBNYXhPZmZzZXQgPSAoMSA8PCA3
KSAtIDEsIAorICAgICAgICAgICAgTWF4T2Zmc2V0ID0gKDEgPDwgNykgLSAxLAogICAgICAgICAg
ICAgTWF4RGl2b3QgPSAoMSA8PCAyNSkgLSAxCiAgICAgICAgIH07CiAgICAgICAgIHVpbnQzMl90
IGluc3RydWN0aW9uT2Zmc2V0IDogMjU7CkBAIC02NCwxOSArODMsMzEgQEAKICAgICAgICAgdWlu
dDMyX3QgZW5kT2Zmc2V0IDogNzsKICAgICB9OwogCi0gICAgc3RydWN0IExpbmVJbmZvIHsKKyAg
ICBzdHJ1Y3QgTGluZUluZm8gOiBwdWJsaWMgV1RGOjpBbGxvY0Jhc2UgewogICAgICAgICB1aW50
MzJfdCBpbnN0cnVjdGlvbk9mZnNldDsKICAgICAgICAgaW50MzJfdCBsaW5lTnVtYmVyOworCisg
ICAgICAgIExpbmVJbmZvKCkKKyAgICAgICAgICAgIDogaW5zdHJ1Y3Rpb25PZmZzZXQoMCkKKyAg
ICAgICAgICAgICwgbGluZU51bWJlcigwKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBMaW5lSW5mbyh1aW50MzJfdCBfaW5zdHJ1Y3Rpb25PZmZzZXQsIGludDMyX3QgX2xpbmVOdW1i
ZXIpCisgICAgICAgICAgICA6IGluc3RydWN0aW9uT2Zmc2V0KF9pbnN0cnVjdGlvbk9mZnNldCkK
KyAgICAgICAgICAgICwgbGluZU51bWJlcihfbGluZU51bWJlcikKKyAgICAgICAgeworICAgICAg
ICB9CiAgICAgfTsKIAotICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7CisgICAgc3RydWN0IE9m
ZnNldExvY2F0aW9uIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgaW50MzJfdCBi
cmFuY2hPZmZzZXQ7CiAjaWYgRU5BQkxFKENUSSkKICAgICAgICAgdm9pZCogY3RpT2Zmc2V0Owog
I2VuZGlmCiAgICAgfTsKIAotICAgIHN0cnVjdCBTdHJ1Y3R1cmVTdHViSW5mbyB7CisgICAgc3Ry
dWN0IFN0cnVjdHVyZVN0dWJJbmZvIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAg
U3RydWN0dXJlU3R1YkluZm8odW5zaWduZWQgb3Bjb2RlSW5kZXgpCiAgICAgICAgICAgICA6IG9w
Y29kZUluZGV4KG9wY29kZUluZGV4KQogICAgICAgICAgICAgLCBzdHViUm91dGluZSgwKQpAQCAt
ODQsMTQgKzExNSwxNCBAQAogICAgICAgICAgICAgLCBob3RQYXRoQmVnaW4oMCkKICAgICAgICAg
ewogICAgICAgICB9Ci0gICAgCisKICAgICAgICAgdW5zaWduZWQgb3Bjb2RlSW5kZXg7CiAgICAg
ICAgIHZvaWQqIHN0dWJSb3V0aW5lOwogICAgICAgICB2b2lkKiBjYWxsUmV0dXJuTG9jYXRpb247
CiAgICAgICAgIHZvaWQqIGhvdFBhdGhCZWdpbjsKICAgICB9OwogCi0gICAgc3RydWN0IFN0cmlu
Z0p1bXBUYWJsZSB7CisgICAgc3RydWN0IFN0cmluZ0p1bXBUYWJsZSA6IHB1YmxpYyBXVEY6OkFs
bG9jQmFzZSB7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwg
T2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOwogICAgICAgICBTdHJpbmdPZmZzZXRU
YWJsZSBvZmZzZXRUYWJsZTsKICNpZiBFTkFCTEUoQ1RJKQpAQCAtMTE5LDcgKzE1MCw3IEBACiAj
ZW5kaWYKICAgICB9OwogCi0gICAgc3RydWN0IFNpbXBsZUp1bXBUYWJsZSB7CisgICAgc3RydWN0
IFNpbXBsZUp1bXBUYWJsZSA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBUaGUgdHdvIFZlY3RvcnMgY2FuIGJlIGNvbWJpbmQgaW50byBvbmUgVmVjdG9yPE9mZnNl
dExvY2F0aW9uPgogICAgICAgICBWZWN0b3I8aW50MzJfdD4gYnJhbmNoT2Zmc2V0czsKICAgICAg
ICAgaW50MzJfdCBtaW47CkBAIC0xNDUsNyArMTc2LDcgQEAKICNlbmRpZgogICAgIH07CiAKLSAg
ICBjbGFzcyBFdmFsQ29kZUNhY2hlIHsKKyAgICBjbGFzcyBFdmFsQ29kZUNhY2hlIDogcHVibGlj
IFdURjo6QWxsb2NCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFBhc3NSZWZQdHI8RXZhbE5v
ZGU+IGdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3Bl
Q2hhaW5Ob2RlKiBzY29wZUNoYWluLCBKU1ZhbHVlKiYgZXhjZXB0aW9uVmFsdWUpCiAgICAgICAg
IHsKQEAgLTE1OCw3ICsxODksNyBAQAogICAgICAgICAgICAgICAgIGludCBzb3VyY2VJZDsKICAg
ICAgICAgICAgICAgICBpbnQgZXJyTGluZTsKICAgICAgICAgICAgICAgICBVU3RyaW5nIGVyck1z
ZzsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGV2YWxOb2RlID0gZXhlYy0+
cGFyc2VyKCktPnBhcnNlPEV2YWxOb2RlPihleGVjLCBVU3RyaW5nKCksIDEsIFVTdHJpbmdTb3Vy
Y2VQcm92aWRlcjo6Y3JlYXRlKGV2YWxTb3VyY2UpLCAmc291cmNlSWQsICZlcnJMaW5lLCAmZXJy
TXNnKTsKICAgICAgICAgICAgICAgICBpZiAoZXZhbE5vZGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGV2YWxTb3VyY2Uuc2l6ZSgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgq
c2NvcGVDaGFpbi0+YmVnaW4oKSktPmlzVmFyaWFibGVPYmplY3QoKSAmJiBjYWNoZU1hcC5zaXpl
KCkgPCBtYXhDYWNoZUVudHJpZXMpCkBAIC0xNzksNyArMjEwLDcgQEAKICAgICAgICAgSGFzaE1h
cDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgUmVmUHRyPEV2YWxOb2RlPiA+IGNhY2hlTWFwOwogICAg
IH07CiAKLSAgICBzdHJ1Y3QgQ29kZUJsb2NrIHsKKyAgICBzdHJ1Y3QgQ29kZUJsb2NrIDogcHVi
bGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgQ29kZUJsb2NrKFNjb3BlTm9kZSogb3duZXJO
b2RlXywgQ29kZVR5cGUgY29kZVR5cGVfLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3Vy
Y2VfLCB1bnNpZ25lZCBzb3VyY2VPZmZzZXRfKQogICAgICAgICAgICAgOiBvd25lck5vZGUob3du
ZXJOb2RlXykKICAgICAgICAgICAgICwgZ2xvYmFsRGF0YSgwKQpAQCAtMjYyLDcgKzI5Myw3IEBA
CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IGltbWVkaWF0ZVN3aXRjaEp1bXBUYWJs
ZXM7CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IGNoYXJhY3RlclN3aXRjaEp1bXBU
YWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+IHN0cmluZ1N3aXRjaEp1bXBU
YWJsZXM7Ci0gICAgICAgIAorCiAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIERlZmF1bHRIYXNo
PHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4gPiBsYWJlbHM7CiAKICNpZiBFTkFCTEUoQ1RJKQpJbmRleDogcGNyZS9wY3JlX2NvbXBp
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHBjcmUvcGNyZV9jb21waWxlLmNwcAkocmV2aXNpb24gMzcw
NDgpCisrKyBwY3JlL3BjcmVfY29tcGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4
LDcgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwogCkBAIC0xMzMsNyArMTM0LDcgQEAKIC8qIFN0cnVjdHVyZSBmb3Ig
cGFzc2luZyAic3RhdGljIiBpbmZvcm1hdGlvbiBhcm91bmQgYmV0d2VlbiB0aGUgZnVuY3Rpb25z
CiBkb2luZyB0aGUgY29tcGlsaW5nLiAqLwogCi1zdHJ1Y3QgQ29tcGlsZURhdGEgeworc3RydWN0
IENvbXBpbGVEYXRhIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBDb21waWxlRGF0YSgp
IHsKICAgICAgICAgdG9wQmFja3JlZiA9IDA7CiAgICAgICAgIGJhY2tyZWZNYXAgPSAwOwpJbmRl
eDogcGNyZS9wY3JlX2ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGNyZS9wY3JlX2ludGVybmFs
LmgJKHJldmlzaW9uIDM3MDQ4KQorKysgcGNyZS9wY3JlX2ludGVybmFsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDYgKzczLDcgQEAKICNkZWZpbmUgUkVHRVhQX0hJU1RPR1JBTSAwCiAKICNpbmNs
dWRlICJBc3NlcnRpb25zLmgiCisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiAjaWYgQ09NUElMRVIo
TVNWQykKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MjMyKQpAQCAtMzIwLDEyICszMjEsMTIg
QEAKIAogLyogVGhlIGNvZGUgdmVjdG9yIHJ1bnMgb24gYXMgbG9uZyBhcyBuZWNlc3NhcnkgYWZ0
ZXIgdGhlIGVuZC4gKi8KIAotc3RydWN0IEpTUmVnRXhwIHsKK3N0cnVjdCBKU1JlZ0V4cCA6IHB1
YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgdW5zaWduZWQgb3B0aW9uczsKIAogICAgIHVuc2ln
bmVkIHNob3J0IHRvcEJyYWNrZXQ7CiAgICAgdW5zaWduZWQgc2hvcnQgdG9wQmFja3JlZjsKLSAg
ICAKKwogICAgIHVuc2lnbmVkIHNob3J0IGZpcnN0Qnl0ZTsKICAgICB1bnNpZ25lZCBzaG9ydCBy
ZXFCeXRlOwogCkluZGV4OiBwY3JlL3BjcmVfZXhlYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGNyZS9w
Y3JlX2V4ZWMuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIHBjcmUvcGNyZV9leGVjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1
ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi9OZXcuaD4KIAogI2lmIFJFR0VYUF9ISVNUT0dSQU0KICNpbmNsdWRlIDxranMvRGF0ZU1h
dGguaD4KQEAgLTgyLDcgKzgzLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotY2xhc3Mg
SGlzdG9ncmFtIHsKK2NsYXNzIEhpc3RvZ3JhbSA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiBw
dWJsaWM6CiAgICAgfkhpc3RvZ3JhbSgpOwogICAgIHZvaWQgYWRkKGNvbnN0IEpTUmVnRXhwKiwg
ZG91YmxlKTsKQEAgLTEwNiwxNiArMTA3LDE2IEBACiAKIC8qIFN0cnVjdHVyZSBmb3IgYnVpbGRp
bmcgYSBjaGFpbiBvZiBkYXRhIGZvciBob2xkaW5nIHRoZSB2YWx1ZXMgb2YKIHRoZSBzdWJqZWN0
IHBvaW50ZXIgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggYnJhY2tldCwgdXNlZCB0byBkZXRlY3Qgd2hl
bgotYW4gZW1wdHkgc3RyaW5nIGhhcyBiZWVuIG1hdGNoZWQgYnkgYSBicmFja2V0IHRvIGJyZWFr
IGluZmluaXRlIGxvb3BzLiAqLyAKLXN0cnVjdCBCcmFja2V0Q2hhaW5Ob2RlIHsKK2FuIGVtcHR5
IHN0cmluZyBoYXMgYmVlbiBtYXRjaGVkIGJ5IGEgYnJhY2tldCB0byBicmVhayBpbmZpbml0ZSBs
b29wcy4gKi8KK3N0cnVjdCBCcmFja2V0Q2hhaW5Ob2RlIDogcHVibGljIFdURjo6QWxsb2NCYXNl
IHsKICAgICBCcmFja2V0Q2hhaW5Ob2RlKiBwcmV2aW91c0JyYWNrZXQ7CiAgICAgY29uc3QgVUNo
YXIqIGJyYWNrZXRTdGFydDsKIH07CiAKLXN0cnVjdCBNYXRjaEZyYW1lIHsKK3N0cnVjdCBNYXRj
aEZyYW1lIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBSZXR1cm5Mb2NhdGlvbiByZXR1
cm5Mb2NhdGlvbjsKICAgICBzdHJ1Y3QgTWF0Y2hGcmFtZSogcHJldmlvdXNGcmFtZTsKLSAgICAK
KwogICAgIC8qIEZ1bmN0aW9uIGFyZ3VtZW50cyB0aGF0IG1heSBjaGFuZ2UgKi8KICAgICBzdHJ1
Y3QgewogICAgICAgICBjb25zdCBVQ2hhciogc3ViamVjdFB0cjsKQEAgLTEyMyw4ICsxMjQsOCBA
QAogICAgICAgICBpbnQgb2Zmc2V0VG9wOwogICAgICAgICBCcmFja2V0Q2hhaW5Ob2RlKiBicmFj
a2V0Q2hhaW47CiAgICAgfSBhcmdzOwotICAgIAotICAgIAorCisKICAgICAvKiBQQ1JFIHVzZXMg
ImZha2UiIHJlY3Vyc2lvbiBidWlsdCBvZmYgb2YgZ290b3MsIHRodXMKICAgICAgc3RhY2stYmFz
ZWQgbG9jYWwgdmFyaWFibGVzIGFyZSBub3Qgc2FmZSB0byB1c2UuICBJbnN0ZWFkIHdlIGhhdmUg
dG8KICAgICAgc3RvcmUgbG9jYWwgdmFyaWFibGVzIG9uIHRoZSBjdXJyZW50IE1hdGNoRnJhbWUu
ICovCkBAIC0xMzMsOSArMTM0LDkgQEAKICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogc3Rh
cnRPZlJlcGVhdGluZ0JyYWNrZXQ7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBzdWJqZWN0UHRyQXRT
dGFydE9mSW5zdHJ1Y3Rpb247IC8vIFNldmVyYWwgaW5zdHJ1dGlvbnMgc3Rhc2ggYXdheSBhIHN1
YmplY3RQdHIgaGVyZSBmb3IgbGF0ZXIgY29tcGFyZQogICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBpbnN0cnVjdGlvblB0ckF0U3RhcnRPZk9uY2U7Ci0gICAgICAgIAorCiAgICAgICAgIGlu
dCByZXBlYXRPdGhlcmNhc2U7Ci0gICAgICAgIAorCiAgICAgICAgIGludCBjdHlwZTsKICAgICAg
ICAgaW50IGZjOwogICAgICAgICBpbnQgZmk7CkBAIC0xNDYsNyArMTQ3LDcgQEAKICAgICAgICAg
aW50IHNhdmVPZmZzZXQxOwogICAgICAgICBpbnQgc2F2ZU9mZnNldDI7CiAgICAgICAgIGludCBz
YXZlT2Zmc2V0MzsKLSAgICAgICAgCisKICAgICAgICAgQnJhY2tldENoYWluTm9kZSBicmFja2V0
Q2hhaW5Ob2RlOwogICAgIH0gbG9jYWxzOwogfTsKQEAgLTE1NCw3ICsxNTUsNyBAQAogLyogU3Ry
dWN0dXJlIGZvciBwYXNzaW5nICJzdGF0aWMiIGluZm9ybWF0aW9uIGFyb3VuZCBiZXR3ZWVuIHRo
ZSBmdW5jdGlvbnMKIGRvaW5nIHRyYWRpdGlvbmFsIE5GQSBtYXRjaGluZywgc28gdGhhdCB0aGV5
IGFyZSB0aHJlYWQtc2FmZS4gKi8KIAotc3RydWN0IE1hdGNoRGF0YSB7CitzdHJ1Y3QgTWF0Y2hE
YXRhIDogcHVibGljIFdURjo6QWxsb2NCYXNlICB7CiAgIGludCogICBvZmZzZXRWZWN0b3I7ICAg
ICAgICAgLyogT2Zmc2V0IHZlY3RvciAqLwogICBpbnQgICAgb2Zmc2V0RW5kOyAgICAgICAgICAg
IC8qIE9uZSBwYXN0IHRoZSBlbmQgKi8KICAgaW50ICAgIG9mZnNldE1heDsgICAgICAgICAgICAv
KiBUaGUgbWF4aW11bSB1c2FibGUgZm9yIHJldHVybiBkYXRhICovCkBAIC0yMjcsNyArMjI4LDcg
QEAKIHN0YXRpYyBib29sIG1hdGNoUmVmKGludCBvZmZzZXQsIGNvbnN0IFVDaGFyKiBzdWJqZWN0
UHRyLCBpbnQgbGVuZ3RoLCBjb25zdCBNYXRjaERhdGEmIG1kKQogewogICAgIGNvbnN0IFVDaGFy
KiBwID0gbWQuc3RhcnRTdWJqZWN0ICsgbWQub2Zmc2V0VmVjdG9yW29mZnNldF07Ci0gICAgCisK
ICNpZmRlZiBERUJVRwogICAgIGlmIChzdWJqZWN0UHRyID49IG1kLmVuZFN1YmplY3QpCiAgICAg
ICAgIHByaW50ZigibWF0Y2hpbmcgc3ViamVjdCA8bnVsbD4iKTsKQEAgLTIzOSwxNCArMjQwLDE0
IEBACiAgICAgcGNoYXJzKHAsIGxlbmd0aCwgZmFsc2UsIG1kKTsKICAgICBwcmludGYoIlxuIik7
CiAjZW5kaWYKLSAgICAKKwogICAgIC8qIEFsd2F5cyBmYWlsIGlmIG5vdCBlbm91Z2ggY2hhcmFj
dGVycyBsZWZ0ICovCi0gICAgCisKICAgICBpZiAobGVuZ3RoID4gbWQuZW5kU3ViamVjdCAtIHN1
YmplY3RQdHIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8qIFNlcGFyYXRl
IHRoZSBjYXNlbGVzc3MgY2FzZSBmb3Igc3BlZWQgKi8KLSAgICAKKwogICAgIGlmIChtZC5pZ25v
cmVDYXNlKSB7CiAgICAgICAgIHdoaWxlIChsZW5ndGgtLSA+IDApIHsKICAgICAgICAgICAgIFVD
aGFyIGMgPSAqcCsrOwpAQCAtMjYxLDcgKzI2Miw3IEBACiAgICAgICAgICAgICBpZiAoKnArKyAh
PSAqc3ViamVjdFB0cisrKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzMzLDcgKzMzNCw3IEBACiAKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBudW1GcmFtZXNPblN0YWNrID0gMTY7CiAKLXN0cnVjdCBNYXRjaFN0
YWNrIHsKK3N0cnVjdCBNYXRjaFN0YWNrIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICBN
YXRjaFN0YWNrKCkKICAgICAgICAgOiBmcmFtZXNFbmQoZnJhbWVzICsgbnVtRnJhbWVzT25TdGFj
aykKICAgICAgICAgLCBjdXJyZW50RnJhbWUoZnJhbWVzKQ==
</data>
<flag name="review"
          id="10828"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23972</attachid>
            <date>2008-10-01 02:28:09 -0700</date>
            <delta_ts>2008-10-01 09:44:49 -0700</delta_ts>
            <desc>proposed patch for WebCore</desc>
            <filename>nd1.webcore.patch</filename>
            <type>text/plain</type>
            <size>12633</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1vdmllV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRNb3ZpZVdpbi5jcHAJKHJldmlzaW9uIDM3MDQ4KQor
KysgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUTW92aWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Niw3ICs3Niw3IEBACiAgICAgc2V0U2hhcmVkVGltZXJGaXJlRGVsYXkoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGludGVydmFsSW5NUykgLyAxMDAwKTsKIH0KIAotY2xhc3MgUVRNb3ZpZVdpblByaXZh
dGUgOiBOb25jb3B5YWJsZSB7CitjbGFzcyBRVE1vdmllV2luUHJpdmF0ZSA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgUVRNb3ZpZVdpblByaXZhdGUoKTsKICAgICB+UVRNb3Zp
ZVdpblByaXZhdGUoKTsKSW5kZXg6IGJpbmRpbmdzL2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFw
cGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3Jh
cHBlci5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysgYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9i
amVjdFdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIpCiAKLWNvbnN0
IENsYXNzSW5mbyBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6c19pbmZvID0geyAiSlNRdWFy
YW50aW5lZE9iamVjdFdyYXBwZXIiLCAwLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNRdWFy
YW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbygiSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIi
LCAwLCAwLCAwKTsKIAogSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIqIEpTUXVhcmFudGluZWRP
YmplY3RXcmFwcGVyOjphc1dyYXBwZXIoSlNWYWx1ZSogdmFsdWUpCiB7CkluZGV4OiBiaW5kaW5n
cy9qcy9KU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysr
IGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNyBAQAogICAgIHJldHVybiBtYXA7CiB9CiAKLWNvbnN0IENsYXNzSW5m
byBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlcjo6c19pbmZvID0geyAiSlNJbnNwZWN0b3JDYWxs
YmFja1dyYXBwZXIiLCAmSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbywgMCwgMCB9
OworY29uc3QgQ2xhc3NJbmZvIEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyOjpzX2luZm8oIkpT
SW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyIiwgJkpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyOjpz
X2luZm8sIDAsIDApOwogCiBKU1ZhbHVlKiBKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlcjo6d3Jh
cChFeGVjU3RhdGUqIHVud3JhcHBlZEV4ZWMsIEpTVmFsdWUqIHVud3JhcHBlZFZhbHVlKQogewpJ
bmRleDogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAzNzA0OCkKKysrIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IpCiAKLWNvbnN0IENsYXNzSW5mbyBK
U1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlhNTEh0dHBSZXF1ZXN0Q29u
c3RydWN0b3IiLCAwLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNYTUxIdHRwUmVxdWVzdENv
bnN0cnVjdG9yOjpzX2luZm8oIlhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IiLCAwLCAwLCAwKTsK
IAogSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yOjpKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBET01PYmplY3Qo
SlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmVJRChleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSkKSW5kZXg6IGJpbmRpbmdzL2pz
L0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMvSlNJbWFn
ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzcwNDgpCisrKyBiaW5kaW5ncy9qcy9KU0ltYWdl
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoSlNJbWFnZUNvbnN0cnVjdG9yKQogCi1jb25zdCBDbGFzc0lu
Zm8gSlNJbWFnZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJJbWFnZUNvbnN0cnVjdG9yIiwgMCwg
MCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6c19pbmZvKCJJbWFn
ZUNvbnN0cnVjdG9yIiwgMCwgMCwgMCk7CiAKIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6SlNJbWFnZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogRE9N
T2JqZWN0KEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlSUQoZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkpCkluZGV4OiBiaW5kaW5ncy9qcy9K
U05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU05h
bWVkTm9kZXNDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMzcwNDgpCisrKyBiaW5kaW5ncy9qcy9K
U05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QAogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTTmFtZWROb2Rlc0NvbGxlY3Rpb24pCiAK
LWNvbnN0IENsYXNzSW5mbyBKU05hbWVkTm9kZXNDb2xsZWN0aW9uOjpzX2luZm8gPSB7ICJDb2xs
ZWN0aW9uIiwgMCwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTTmFtZWROb2Rlc0NvbGxlY3Rp
b246OnNfaW5mbygiQ29sbGVjdGlvbiIsIDAsIDAsIDApOwogCiAvLyBTdWNoIGEgY29sbGVjdGlv
biBpcyB1c3VhbGx5IHZlcnkgc2hvcnQtbGl2ZWQsIGl0IG9ubHkgZXhpc3RzCiAvLyBmb3IgY29u
c3RydWN0cyBsaWtlIGRvY3VtZW50LmZvcm1zLjxuYW1lPlsxXSwKSW5kZXg6IGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcAkocmV2aXNpb24gMzcwNDgpCisrKyBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcgQEAKIAogLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLyBKU0RPTVdpbmRvd0Jhc2UgT2JqZWN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwogCi1jb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ci
LCAwLCAmSlNET01XaW5kb3dCYXNlVGFibGUsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0RPTVdp
bmRvd0Jhc2U6OnNfaW5mbygiV2luZG93IiwgMCwgJkpTRE9NV2luZG93QmFzZVRhYmxlLCAwKTsK
IAogLyoKIEBiZWdpbiBKU0RPTVdpbmRvd0Jhc2VUYWJsZQpJbmRleDogYmluZGluZ3MvanMvSlNJ
bnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU0lu
c3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGJpbmRpbmdzL2pz
L0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQz
LDcgQEAKICAgICByZXR1cm4gbWFwOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNJbnNwZWN0ZWRP
YmplY3RXcmFwcGVyOjpzX2luZm8gPSB7ICJKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIiLCAmSlNR
dWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbywgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZv
IEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6c19pbmZvKCJKU0luc3BlY3RlZE9iamVjdFdyYXBw
ZXIiLCAmSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNfaW5mbywgMCwgMCk7CiAKIEpTVmFs
dWUqIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6d3JhcChFeGVjU3RhdGUqIHVud3JhcHBlZEV4
ZWMsIEpTVmFsdWUqIHVud3JhcHBlZFZhbHVlKQogewpJbmRleDogYmluZGluZ3MvanMvSlNBdWRp
b0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGJpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jb25zdCBDbGFzc0luZm8gSlNBdWRpb0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJBdWRpb0NvbnN0cnVjdG9yIiwgMCwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTQXVkaW9D
b25zdHJ1Y3Rvcjo6c19pbmZvKCJBdWRpb0NvbnN0cnVjdG9yIiwgMCwgMCwgMCk7CiAKIEpTQXVk
aW9Db25zdHJ1Y3Rvcjo6SlNBdWRpb0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIDogRE9NT2JqZWN0KEpTQXVkaW9Db25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlSUQoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUo
KSkpCkluZGV4OiBiaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysgYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uRWxlbWVu
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBBU1NF
UlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3RvcikKIAot
Y29uc3QgQ2xhc3NJbmZvIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiT3B0aW9uQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNIVE1M
T3B0aW9uRWxlbWVudENvbnN0cnVjdG9yOjpzX2luZm8oIk9wdGlvbkNvbnN0cnVjdG9yIiwgMCwg
MCwgMCk7CiAKIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcjo6SlNIVE1MT3B0aW9uRWxl
bWVudENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IDogRE9NT2JqZWN0KEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlSUQoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkpCklu
ZGV4OiBiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAzNzA0OCkKKysrIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yKQogCi1jb25zdCBDbGFzc0luZm8gSlNYU0xU
UHJvY2Vzc29yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlhTTFRQcm9jZXNzb3JDb25zcnVjdG9y
IiwgMCwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9y
OjpzX2luZm8oIlhTTFRQcm9jZXNzb3JDb25zcnVjdG9yIiwgMCwgMCwgMCk7CiAKIEpTWFNMVFBy
b2Nlc3NvckNvbnN0cnVjdG9yOjpKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgOiBET01PYmplY3QoSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZUlEKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBl
KCkpKQpJbmRleDogYmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmlu
ZGluZ3MvanMvSlNSR0JDb2xvci5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysgYmluZGluZ3MvanMv
SlNSR0JDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1JHQkNvbG9yKQogCi1jb25zdCBDbGFzc0luZm8gSlNSR0JD
b2xvcjo6c19pbmZvID0geyAiUkdCQ29sb3IiLCAwLCAmSlNSR0JDb2xvclRhYmxlLCAwIH07Citj
b25zdCBDbGFzc0luZm8gSlNSR0JDb2xvcjo6c19pbmZvKCJSR0JDb2xvciIsIDAsICZKU1JHQkNv
bG9yVGFibGUsIDApOwogCiAvKgogQGJlZ2luIEpTUkdCQ29sb3JUYWJsZQpJbmRleDogYmluZGlu
Z3MvanMvSlNFdmVudFRhcmdldE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXROb2RlLmNwcAkocmV2aXNpb24gMzcwNDgpCisrKyBiaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU0V2ZW50VGFyZ2V0Tm9kZTo6
c19pbmZvID0geyAiRXZlbnRUYXJnZXROb2RlIiwgJkpTTm9kZTo6c19pbmZvLCAmSlNFdmVudFRh
cmdldE5vZGVUYWJsZSwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTRXZlbnRUYXJnZXROb2RlOjpz
X2luZm8oIkV2ZW50VGFyZ2V0Tm9kZSIsICZKU05vZGU6OnNfaW5mbywgJkpTRXZlbnRUYXJnZXRO
b2RlVGFibGUsIDApOwogCiBKU0V2ZW50VGFyZ2V0Tm9kZTo6SlNFdmVudFRhcmdldE5vZGUoUGFz
c1JlZlB0cjxTdHJ1Y3R1cmVJRD4gc3RydWN0dXJlLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0Tm9k
ZT4gbm9kZSkKICAgICA6IEpTTm9kZShzdHJ1Y3R1cmUsIG5vZGUpCkluZGV4OiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmNwcAkocmV2aXNpb24gMzcwNDgpCisrKyBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogCiBBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEpTRE9NV2luZG93U2hlbGwpCiAKLWNvbnN0IENsYXNzSW5mbyBKU0RP
TVdpbmRvd1NoZWxsOjpzX2luZm8gPSB7ICJKU0RPTVdpbmRvd1NoZWxsIiwgMCwgMCwgMCB9Owor
Y29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93U2hlbGw6OnNfaW5mbygiSlNET01XaW5kb3dTaGVs
bCIsIDAsIDAsIDApOwogCiBKU0RPTVdpbmRvd1NoZWxsOjpKU0RPTVdpbmRvd1NoZWxsKFBhc3NS
ZWZQdHI8RE9NV2luZG93PiB3aW5kb3cpCiAgICAgOiBCYXNlKEpTRE9NV2luZG93U2hlbGw6OmNy
ZWF0ZVN0cnVjdHVyZUlEKGpzTnVsbCgpKSkKSW5kZXg6IGh0bWwvSFRNTFBhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gaHRtbC9IVE1MUGFyc2VyLmNwcAkocmV2aXNpb24gMzcwNDgpCisrKyBodG1s
L0hUTUxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBACiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgY01heFJlZHVuZGFudFRhZ0RlcHRoID0gMjA7CiBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY1Jlc2lkdWFsU3R5bGVNYXhEZXB0aCA9IDIwMDsKIAotc3RydWN0IEhUTUxTdGFj
a0VsZW0gOiBOb25jb3B5YWJsZSB7CitzdHJ1Y3QgSFRNTFN0YWNrRWxlbSA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CiAgICAgSFRNTFN0YWNrRWxlbShjb25zdCBBdG9taWNTdHJpbmcmIHQsIGludCBs
dmwsIE5vZGUqIG4sIGJvb2wgciwgSFRNTFN0YWNrRWxlbSogbngpCiAgICAgICAgIDogdGFnTmFt
ZSh0KQogICAgICAgICAsIGxldmVsKGx2bCkKSW5kZXg6IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBACiAKIC8vIC0tLSBSZXBsYWNl
bWVudEZyYWdtZW50IGhlbHBlciBjbGFzcwogCi1jbGFzcyBSZXBsYWNlbWVudEZyYWdtZW50IDog
Tm9uY29weWFibGUgeworY2xhc3MgUmVwbGFjZW1lbnRGcmFnbWVudCA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CiBwdWJsaWM6CiAgICAgUmVwbGFjZW1lbnRGcmFnbWVudChEb2N1bWVudCosIERvY3Vt
ZW50RnJhZ21lbnQqLCBib29sIG1hdGNoU3R5bGUsIGNvbnN0IFNlbGVjdGlvbiYpOwogCkluZGV4
OiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQAogCiAvLyBCdWZmZXIgdGhhdCBrbm93cyBo
b3cgdG8gY29tcGFyZSB3aXRoIGEgc2VhcmNoIHRhcmdldC4KIC8vIEtlZXBzIGVub3VnaCBvZiB0
aGUgcHJldmlvdXMgdGV4dCB0byBiZSBhYmxlIHRvIHNlYXJjaCBpbiB0aGUgZnV0dXJlLCBidXQg
bm8gbW9yZS4KLWNsYXNzIENpcmN1bGFyU2VhcmNoQnVmZmVyIDogTm9uY29weWFibGUgeworY2xh
c3MgQ2lyY3VsYXJTZWFyY2hCdWZmZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgog
ICAgIENpcmN1bGFyU2VhcmNoQnVmZmVyKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBib29sIGlzQ2Fz
ZVNlbnNpdGl2ZSk7CiAKSW5kZXg6IGJyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBicmlkZ2UvcXQvcXRfcnVudGltZS5jcHAJKHJldmlzaW9uIDM3MDQ4KQorKysgYnJpZGdl
L3F0L3F0X3J1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTUsNyArODU1LDcgQEAKICNk
ZWZpbmUgUVdfRChDbGFzcykgQ2xhc3MjI0RhdGEqIGQgPSBkX2Z1bmMoKQogI2RlZmluZSBRV19E
UyhDbGFzcyxJbnN0YW5jZSkgQ2xhc3MjI0RhdGEqIGQgPSBJbnN0YW5jZS0+ZF9mdW5jKCkKIAot
Y29uc3QgQ2xhc3NJbmZvIFF0UnVudGltZU1ldGhvZDo6c19pbmZvID0geyAiUXRSdW50aW1lTWV0
aG9kIiwgMCwgMCwgMCB9OworY29uc3QgQ2xhc3NJbmZvIFF0UnVudGltZU1ldGhvZDo6c19pbmZv
KCJRdFJ1bnRpbWVNZXRob2QiLCAwLCAwLCAwKTsKIAogUXRSdW50aW1lTWV0aG9kOjpRdFJ1bnRp
bWVNZXRob2QoUXRSdW50aW1lTWV0aG9kRGF0YSogZGQsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIFBhc3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdCkKICAgICA6IElu
dGVybmFsRnVuY3Rpb24oZXhlYywgZ2V0RE9NU3RydWN0dXJlPFF0UnVudGltZU1ldGhvZD4oZXhl
YyksIGlkZW50KQpJbmRleDogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGJyaWRnZS9y
dW50aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKIAogdXNp
bmcgbmFtZXNwYWNlIEJpbmRpbmdzOwogCi1jb25zdCBDbGFzc0luZm8gUnVudGltZU9iamVjdElt
cDo6c19pbmZvID0geyAiUnVudGltZU9iamVjdCIsIDAsIDAsIDAgfTsKK2NvbnN0IENsYXNzSW5m
byBSdW50aW1lT2JqZWN0SW1wOjpzX2luZm8oIlJ1bnRpbWVPYmplY3QiLCAwLCAwLCAwKTsKIAog
UnVudGltZU9iamVjdEltcDo6UnVudGltZU9iamVjdEltcChFeGVjU3RhdGUqIGV4ZWMsIFBhc3NS
ZWZQdHI8SW5zdGFuY2U+IGkpCiAgICAgOiBKU09iamVjdChnZXRET01TdHJ1Y3R1cmU8UnVudGlt
ZU9iamVjdEltcD4oZXhlYykpCkluZGV4OiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGJy
aWRnZS9ydW50aW1lX2FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVBcnJheTo6c19pbmZv
ID0geyAiUnVudGltZUFycmF5IiwgJkpTQXJyYXk6OmluZm8sIDAsIDAgfTsKK2NvbnN0IENsYXNz
SW5mbyBSdW50aW1lQXJyYXk6OnNfaW5mbygiUnVudGltZUFycmF5IiwgJkpTQXJyYXk6OmluZm8s
IDAsIDApOwogCiBSdW50aW1lQXJyYXk6OlJ1bnRpbWVBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEJp
bmRpbmdzOjpBcnJheSogYSkKICAgICA6IEpTT2JqZWN0KGdldERPTVN0cnVjdHVyZTxSdW50aW1l
QXJyYXk+KGV4ZWMpKQpJbmRleDogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCShyZXZpc2lvbiAzNzA0OCkKKysrIGJyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIAog
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChSdW50aW1lTWV0aG9kKTsKIAotY29uc3QgQ2xhc3NJ
bmZvIFJ1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIlJ1bnRpbWVNZXRob2QiLCAwLCAwLCAwIH07
Citjb25zdCBDbGFzc0luZm8gUnVudGltZU1ldGhvZDo6c19pbmZvKCJSdW50aW1lTWV0aG9kIiwg
MCwgMCwgMCk7CiAKIFJ1bnRpbWVNZXRob2Q6OlJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG0pIAogICAg
IDogSW50ZXJuYWxGdW5jdGlvbihleGVjLCBnZXRET01TdHJ1Y3R1cmU8UnVudGltZU1ldGhvZD4o
ZXhlYyksIGlkZW50KQpJbmRleDogcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2Uv
Q2hyb21lLmNwcAkocmV2aXNpb24gMzcwNDgpCisrKyBwYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDcgKzUzLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCi1jbGFzcyBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgOiBOb25jb3B5
YWJsZSB7CitjbGFzcyBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgOiBwdWJsaWMgTm9uY29weWFibGUg
ewogcHVibGljOgogICAgIFBhZ2VHcm91cExvYWREZWZlcnJlcihQYWdlKiwgYm9vbCBkZWZlclNl
bGYpOwogICAgIH5QYWdlR3JvdXBMb2FkRGVmZXJyZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24113</attachid>
            <date>2008-10-06 04:20:36 -0700</date>
            <delta_ts>2008-10-07 09:55:50 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>JSCoreND.patch</filename>
            <type>text/plain</type>
            <size>42233</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3MjQ4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMDgtMTAtMDMgIEJhbMOhenMg
S2VsZW1lbiAgPEtlbGVtZW4uQmFsYXpzLjNAc3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5j
cHA6CisgICAgICAgIEluaGVyaXQgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJheSBmcm9tIEFsbG9j
QmFzZSwgd2hpY2ggaXMgUGF1bCBQZWRyaWFuYSdzIGJhc2UgY2xhc3MgZm9yIG92ZXJyaWRpbmcg
b3BlcmF0b3IKKyAgICAgICAgbmV3L2RlbGV0ZSAoc2VlOmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDQyMiksIHRvIHVzZSBjdXN0b20gYWxsb2NhdG9ycyAoZS5nIGZh
c3RNYWxsb2MpIGluCisgICAgICAgIHBvcnRzIChlLmcuIFF0KSB3aGVyZSBvdmVycmlkaW5nIGds
b2JhbCBvcGVyYXRvciBuZXcvZGVsZXRlIGNhbm5vdCBiZSB1c2VkLgorICAgICAgICAqIFZNL1Jl
Z2lzdGVyLmg6CisgICAgICAgIEluaGVyaXQgVk06OlJlZ2lzdGVyIGZyb20gQWxsb2NCYXNlLgor
ICAgICAgICAqIGtqcy9MYWJlbFN0YWNrLmg6CisgICAgICAgIEluaGVyaXQgS0pTOjpTdGFja0Vs
ZW0gZnJvbSBBbGxvY0Jhc2UuCisgICAgICAgICoga2pzL2lkZW50aWZpZXIuaDoKKyAgICAgICAg
SW5oZXJpdCBLSlM6OklkZW50aWZpZXIgZnJvbSBBbGxvY0Jhc2UuCisgICAgICAgICoga2pzL2xv
b2t1cC5oOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6Okhhc2hFbnRyeSk6CisgICAgICAgIElu
aGVyaXQgSlNDOjpIYXNoRW50cnkgZnJvbSBBbGxvY0Jhc2UuCisgICAgICAgIEkgc2hvdWxkIHdy
aXRlIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBiZWNhdXNlIGl0IGlzIGFsbG9jYXRlZCBpbiBhbiBh
cnJheSBhdCBzb21lIHBhcnRzIG9mIHRoZSBjb2RlLgorICAgICAgICAqIGtqcy9ub2Rlcy5oOgor
ICAgICAgICBJbmhlcml0IEtKUzo6RXhwcmVzc2lvbk5vZGUgZnJvbSBBbGxvY0Jhc2UuCisgICAg
ICAgICogd3RmL0hhc2hDb3VudGVkU2V0Lmg6CisgICAgICAgIEluaGVyaXQgV1RGOjpIYXNoQ291
bnRlZFNldCBmcm9tIEFsbG9jQmFzZS4KKyAgICAgICAgKiB3dGYvTmV3Lmg6IEFkZGVkLgorICAg
ICAgICBUaGlzIGZpbGUgY29udGFpbnMgUGF1bCdzIGltcGxlbWVudGF0aW9uIG9mIG92ZXJyaWRp
bmcgb3BlcmF0b3IgbmV3L2RlbGV0ZSBmcm9tIGEgYmFzZSBjbGFzcy4KKyAgICAgICAgSSBzdXBw
bGVtZW50ZWQgaXQgd2l0aCB0aGUgMiBvdGhlciBjYXNlcyB3aGVuIG9ubHkgY29uc3RydWN0b3Ig
aXMgY2FsbGVkOgorICAgICAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplLCB2
b2lkKiBwKSB7IHJldHVybiBwOyB9CisgICAgICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSwgdm9pZCogcCkgeyByZXR1cm4gcDsgfQorICAgICAgICAoV1RGOjopOgorICAg
ICAgICAoV1RGOjpBbGxvY0Jhc2U6Om9wZXJhdG9yIG5ldyk6CisgICAgICAgIChXVEY6OkFsbG9j
QmFzZTo6b3BlcmF0b3IgZGVsZXRlKToKKyAgICAgICAgKFdURjo6QWxsb2NCYXNlOjpvcGVyYXRv
ciBuZXdbXSk6CisgICAgICAgIChXVEY6OkFsbG9jQmFzZTo6b3BlcmF0b3IgZGVsZXRlW10pOgor
ICAgICAgICAoV1RGOjpuZXdPYmplY3QpOgorICAgICAgICAoV1RGOjpXVEZJbnRlcm5hbDo6TmV3
QXJyYXlJbXBsOjpuZXdBcnJheSk6CisgICAgICAgIChXVEY6OldURkludGVybmFsOjopOgorICAg
ICAgICAoV1RGOjpuZXdBcnJheSk6CisgICAgICAgIChXVEY6OmRlbGV0ZU9iamVjdCk6CisgICAg
ICAgIChXVEY6OldURkludGVybmFsOjpEZWxldGVBcnJheUltcGw6OmRlbGV0ZUFycmF5KToKKyAg
ICAgICAgKFdURjo6ZGVsZXRlQXJyYXkpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdRdC5jcHA6
CisgICAgICAgIEluaGVyaXQgV1RGOjpUaHJlYWRQcml2YXRlIGZvcm0gQWxsb2NCYXNlLgorICAg
ICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgSW5oZXJpdCBXVEY6OlZlY3RvciBmcm9tIEFs
bG9jQmFzZS4KKyAgICAgICAgKiB3dGYvcXQvTWFpblRocmVhZFF0LmNwcDoKKyAgICAgICAgSW5o
ZXJpdCBNYWluVGhyZWFkSW52b2tlciBmcm9tIEFsbG9jQmFzZS4KKwogMjAwOC0xMC0wMyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkg
QWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAko
cmV2aXNpb24gMzcyNDgpCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC00Mzks
NyArNDQwLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihKUwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXN0cnVjdCBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5IHsK
K3N0cnVjdCBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5IDogcHVibGljIFdURjo6QWxsb2NCYXNl
IHsKICAgICBPcGFxdWVKU1Byb3BlcnR5TmFtZUFycmF5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSkKICAgICAgICAgOiByZWZDb3VudCgwKQogICAgICAgICAsIGdsb2JhbERhdGEoZ2xvYmFsRGF0
YSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL1JlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvVk0vUmVnaXN0ZXIuaAkocmV2aXNpb24gMzcyNDgpCisrKyBKYXZhU2NyaXB0
Q29yZS9WTS9SZWdpc3Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNp
bmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgorI2luY2x1
ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQzLDcgKzQ0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgc3RhdGljIEpTVmFsdWUqIGNvbnN0IG51bGxKU1ZhbHVl
ID0gMDsKIAotICAgIGNsYXNzIFJlZ2lzdGVyIHsKKyAgICBjbGFzcyBSZWdpc3RlciA6IHB1Ymxp
YyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBSZWdpc3RlcigpOwogICAg
ICAgICBSZWdpc3RlcihKU1ZhbHVlKik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvTGFiZWxT
dGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9MYWJlbFN0YWNrLmgJKHJl
dmlzaW9uIDM3MjQ4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0xhYmVsU3RhY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsOCArMjQsMTAgQEAKICNkZWZpbmUgTGFiZWxTdGFja19oCiAKICNpbmNs
dWRlICJpZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL05ldy5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCisKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTGFiZWxTdGFj
ayA6IE5vbmNvcHlhYmxlIHsKQEAgLTQxLDcgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgcG9wKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdHJ1Y3QgU3RhY2tFbGVt
IHsKKyAgICAgICAgc3RydWN0IFN0YWNrRWxlbSA6IHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAg
ICAgICAgICAgICBJZGVudGlmaWVyIGlkOwogICAgICAgICAgICAgU3RhY2tFbGVtKiBwcmV2Owog
ICAgICAgICB9OwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZpZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmllci5oCShyZXZpc2lvbiAzNzI0OCkK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9pZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDEyICsyMywxMyBAQAogCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAidXN0
cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBFeGVjU3RhdGU7CiAKLSAgICBjbGFzcyBJZGVudGlmaWVyIHsKKyAgICBjbGFzcyBJZGVu
dGlmaWVyIDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIFBy
b3BlcnR5TWFwOwogICAgIHB1YmxpYzoKICAgICAgICAgSWRlbnRpZmllcigpIHsgfQpJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9sb29rdXAuaAkocmV2aXNpb24gMzcyNDgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbG9v
a3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJpZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9OZXcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ1LDcgKzQ2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
YyBHZXRGdW5jdGlvbjsKICAgICB0eXBlZGVmIHZvaWQgKCpQdXRGdW5jdGlvbikoRXhlY1N0YXRl
KiwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFsdWUqIHZhbHVlKTsKIAotICAgIGNsYXNzIEhh
c2hFbnRyeSB7CisgICAgY2xhc3MgSGFzaEVudHJ5IDogcHVibGljIFdURjo6QWxsb2NCYXNlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShVU3RyaW5nOjpSZXAqIGtleSwg
dW5zaWduZWQgY2hhciBhdHRyaWJ1dGVzLCBpbnRwdHJfdCB2MSwgaW50cHRyX3QgdjIpCiAgICAg
ICAgIHsKQEAgLTU1LDYgKzU2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV91
LnN0b3JlLnZhbHVlMiA9IHYyOwogICAgICAgICB9CiAKKyAgICAgICAgSGFzaEVudHJ5KCkKKwkJ
eworCQkJaW5pdGlhbGl6ZSgwLCAwLCAwLCAwKTsKKwkJfQorCiAgICAgICAgIHZvaWQgc2V0S2V5
KFVTdHJpbmc6OlJlcCoga2V5KSB7IG1fa2V5ID0ga2V5OyB9CiAgICAgICAgIFVTdHJpbmc6OlJl
cCoga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL25vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJKHJl
dmlzaW9uIDM3MjQ4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJyZWdleHAuaCIKICNpbmNsdWRlIDx3dGYv
TGlzdFJlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L05ldy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFy
YW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xOTcsNyArMTk4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGludCBtX2xpbmU7CiAgICAgfTsKIAotICAgIGNsYXNzIEV4cHJl
c3Npb25Ob2RlIDogcHVibGljIE5vZGUgeworICAgIGNsYXNzIEV4cHJlc3Npb25Ob2RlIDogcHVi
bGljIE5vZGUsIHB1YmxpYyBXVEY6OkFsbG9jQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBF
eHByZXNzaW9uTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFJlc3VsdFR5cGUgcmVzdWx0
RGVzYyA9IFJlc3VsdFR5cGU6OnVua25vd24oKSkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAg
OiBOb2RlKGdsb2JhbERhdGEpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgJKHJldmlzaW9uIDM3MjQ4
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXcu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNoQ291
bnRlZFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNoQ291bnRlZFNl
dC5oCShyZXZpc2lvbiAzNzI0OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNoQ291bnRlZFNl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTIgQEAKICNpbmNsdWRlICJBc3NlcnRp
b25zLmgiCiAjaW5jbHVkZSAiSGFzaE1hcC5oIgogI2luY2x1ZGUgIlZlY3Rvci5oIgorI2luY2x1
ZGUgIk5ldy5oIgogCiBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWU+
OjpIYXNoLAotICAgICAgICB0eXBlbmFtZSBUcmFpdHMgPSBIYXNoVHJhaXRzPFZhbHVlPiA+IGNs
YXNzIEhhc2hDb3VudGVkU2V0IHsKKyAgICAgICAgdHlwZW5hbWUgVHJhaXRzID0gSGFzaFRyYWl0
czxWYWx1ZT4gPiBjbGFzcyBIYXNoQ291bnRlZFNldCA6IHB1YmxpYyBBbGxvY0Jhc2UgewogICAg
IHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxWYWx1ZSwgdW5zaWduZWQsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cz4gSW1wbFR5cGU7CiAgICAgcHVibGljOgpJbmRleDogSmF2YVNjcmlw
dENvcmUvd3RmL05ldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9OZXcuaAko
cmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9OZXcuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3MDggQEAKKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4IFBhdWwgUGVkcmlhbmEu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXVEZfTmV3X2gKKyNkZWZpbmUgV1RGX05ld19o
CisKKy8vIFByb3ZpZGVzIGN1c3RvbWl6YWJsZSBvdmVycmlkZXMgb2YgZmFzdE1hbGxvYy9mYXN0
RnJlZSBhbmQgb3BlcmF0b3IgbmV3L2RlbGV0ZQorLy8KKy8vIFByb3ZpZGVkIGZ1bmN0aW9uYWxp
dHk6CisvLyAgICBuYW1lc3BhY2UgV1RGIHsgCisvLyAgICAgICAgY2xhc3MgQWxsb2NCYXNlOwor
Ly8KKy8vICAgICAgICBUKiAgICBuZXdPYmplY3Q8VD4oKTsKKy8vICAgICAgICBUKiAgICBuZXdB
cnJheTxUPihjb3VudCk7CisvLyAgICAgICAgdm9pZCAgZGVsZXRlT2JqZWN0KFQqIHApOworLy8g
ICAgICAgIHZvaWQgIGRlbGV0ZUFycmF5KFQqIHApOworLy8gICAgfQorLy8KKy8vIEV4YW1wbGUg
dXNhZ2U6CisvLyAgICBjbGFzcyBXaWRnZXQgOiBwdWJsaWMgQWxsb2NCYXNlIHsgLi4uIH07Cisv
LworLy8gICAgY2hhciogY2hhclB0ciA9IG5ld09iamVjdDxjaGFyPigpOworLy8gICAgZGVsZXRl
T2JqZWN0KGNoYXJQdHIpOworLy8KKy8vICAgIGNoYXIqIGNoYXJBcnJheVB0ciA9IG5ld0FycmF5
PGNoYXI+KDM3KTsKKy8vICAgIGRlbGV0ZUFycmF5KGNoYXJBcnJheVB0cik7CisvLworLy8gICAg
dm9pZCoqIHZvaWRQdHJQdHIgPSBuZXdPYmplY3Q8dm9pZCo+KCk7CisvLyAgICBkZWxldGVPYmpl
Y3Qodm9pZFB0clB0cik7CisvLworLy8gICAgdm9pZCoqIHZvaWRQdHJBcnJheVB0ciA9IG5ld0Fy
cmF5PHZvaWQqPigzNyk7CisvLyAgICBkZWxldGVBcnJheSh2b2lkUHRyQXJyYXlQdHIpOworLy8K
Ky8vICAgIFBPRCogcG9kUHRyID0gbmV3T2JqZWN0PFBPRD4oKTsKKy8vICAgIGRlbGV0ZU9iamVj
dChwb2RQdHIpOworLy8KKy8vICAgIFBPRCogcG9kQXJyYXlQdHIgPSBuZXdBcnJheTxQT0Q+KDM3
KTsKKy8vICAgIGRlbGV0ZUFycmF5KHBvZEFycmF5UHRyKTsKKy8vCisvLyAgICBPYmplY3QqIG9i
amVjdFB0ciA9IG5ld09iamVjdDxPYmplY3Q+KCk7CisvLyAgICBkZWxldGVPYmplY3Qob2JqZWN0
UHRyKTsKKy8vCisvLyAgICBPYmplY3QqIG9iamVjdEFycmF5UHRyID0gbmV3QXJyYXk8T2JqZWN0
PigzNyk7CisvLyAgICBkZWxldGVBcnJheShvYmplY3RBcnJheVB0cik7CisvLworCisjaW5jbHVk
ZSA8bmV3PgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1
ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKworLy8gRGVmaW5lIHR5cGUgdHJhaXRzIHRoYXQgYWxsb3cgdXMgdG8g
b3B0aW1pemUgdGVtcGxhdGVkIGFycmF5IG5ldy9kZWxldGUuCisvLyBUaGVzZSBjb3VsZCBwb3Nz
aWJseSBnbyBpbnRvIGEgc2VwYXJhdGUgaGVhZGVyIGZpbGUgaWYgdXNlZnVsLgorLy8gUmVjZW50
IHZlcnNpb25zIG9mIEdDQydzIGxpYnN0ZGMrKyBhbmQgVkMrKyBoYXZlIHN1cHBvcnQgZm9yIHR5
cGUgdHJhaXRzLgorLy8gVG8gZG86IEluY2x1ZGUgb3RoZXIgY29tcGlsZXJzL2xpYnJhcmllcyB0
aGF0IHN1cHBvcnQgdHlwZV90cmFpdHMuCisvLyBUbyBjb25zaWRlcjogU2hvdWxkIHRoaXMgZ28g
aW50byBhIHNlcGFyYXRlIGhlYWRlciBmaWxlPworI2lmIChkZWZpbmVkKF9fR0xJQkNYWF9fKSAm
JiAoX19HTElCQ1hYX18gPj0gMjAwNzA3MjQpKSB8fCAoZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9N
U0NfVkVSID49IDE1MDApKQorICAgICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworICAgIG5hbWVz
cGFjZSBXVEYgeworICAgICAgICB1c2luZyBzdGQ6Omhhc190cml2aWFsX2NvbnN0cnVjdG9yOwor
ICAgICAgICB1c2luZyBzdGQ6Omhhc190cml2aWFsX2Rlc3RydWN0b3I7CisgICAgfQorCisjZWxz
ZQorICAgIG5hbWVzcGFjZSBXVEYgeworCisgICAgICAgIC8vIFRoaXMgY29tcGlsZXIgZG9lc24n
dCBwcm92aWRlIHR5cGUgdHJhaXRzLCBzbyB3ZSBwcm92aWRlIGEgYmFzaWMgc21hbGwgc2V0Lgor
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCB2PgorICAgICAgICBzdHJ1Y3QgaW50ZWdy
YWxfY29uc3RhbnQgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFQgdmFsdWUgPSB2OworICAg
ICAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgICAgICAgICB0eXBlZGVmIGludGVn
cmFsX2NvbnN0YW50PFQsIHY+IHR5cGU7CisgICAgICAgIH07CisKKyAgICAgICAgdHlwZWRlZiBp
bnRlZ3JhbF9jb25zdGFudDxib29sLCB0cnVlPiAgdHJ1ZV90eXBlOworICAgICAgICB0eXBlZGVm
IGludGVncmFsX2NvbnN0YW50PGJvb2wsIGZhbHNlPiBmYWxzZV90eXBlOworCisKKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvciA6IHB1
YmxpYyBmYWxzZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvciAgOiBwdWJsaWMgZmFsc2VfdHlwZXt9OworCisgICAgICAg
IC8vIEF0IGxlYXN0IGhhbmRsZSB0aGUgY2FzZSBvZiBzY2FsYXIgdHlwZXMuCisgICAgICAgIC8v
IElkZWFsbHkgdGhpcyB3b3VsZCBpbmNsdWRlIHZvbGF0aWxlIHZhcmlhdGlvbnMgYXMgd2VsbC4K
KyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1
Y3RvcjxUKj4gIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8VCo+ICAgOiBwdWJsaWMgdHJ1ZV90
eXBle307CisKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVj
dG9yPGZsb2F0PiAgICAgICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAg
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBmbG9h
dD4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8ZG91YmxlPiAgICAgICAgICAgICAgICAg
ICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190
cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IGRvdWJsZT4gICAgICAgICAgICAgOiBwdWJsaWMgdHJ1
ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1
Y3Rvcjxsb25nIGRvdWJsZT4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAg
ICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgbG9u
ZyBkb3VibGU+ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUg
PD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHVuc2lnbmVkIGNoYXI+ICAgICAgICAg
ICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBjaGFyPiAgICAgIDogcHVibGljIHRy
dWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3Ry
dWN0b3I8dW5zaWduZWQgc2hvcnQ+ICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAg
ICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHVu
c2lnbmVkIHNob3J0PiAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25lZCBpbnQ+ICAgICAgICAg
ICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgaW50PiAgICAgICA6IHB1YmxpYyB0
cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0
cnVjdG9yPHVuc2lnbmVkIGxvbmc+ICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307Cisg
ICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB1
bnNpZ25lZCBsb25nPiAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dW5zaWduZWQgbG9uZyBsb25nPiAg
ICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhh
c190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMg
dHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25z
dHJ1Y3RvcjxzaWduZWQgY2hhcj4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9Owor
ICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qg
c2lnbmVkIGNoYXI+ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxh
dGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHNpZ25lZCBzaG9ydD4gICAgICAg
ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgc2hvcnQ+ICAgICAgIDogcHVibGlj
IHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3I8c2lnbmVkIGludD4gICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsK
KyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0
IHNpZ25lZCBpbnQ+ICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgbG9uZz4gICAgICAg
ICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGxvbmc+ICAgICAgICA6IHB1Ymxp
YyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Nv
bnN0cnVjdG9yPHNpZ25lZCBsb25nIGxvbmc+ICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307
CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25z
dCBzaWduZWQgbG9uZyBsb25nPiAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Ym9vbD4gICAgICAgICAgICAg
ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IGJvb2w+ICAgICAgICAgICAgICAgOiBwdWJs
aWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3RvcjxjaGFyPiAgICAgICAgICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9
OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29u
c3QgY2hhcj4gICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgI2lm
ICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQor
ICAgICAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHdj
aGFyX3Q+ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB3Y2hhcl90PiAg
ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgICNlbmRpZgorCisgICAgICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGZsb2F0PiAgICAgICAgICAg
ICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGZsb2F0PiAgICAgICAgICAgICAgOiBwdWJs
aWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9k
ZXN0cnVjdG9yPGRvdWJsZT4gICAgICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307
CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0
IGRvdWJsZT4gICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGxvbmcgZG91YmxlPiAgICAgICAg
ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGxvbmcgZG91YmxlPiAgICAgICAgOiBwdWJsaWMg
dHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPHVuc2lnbmVkIGNoYXI+ICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307Cisg
ICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVu
c2lnbmVkIGNoYXI+ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVkIHNob3J0PiAgICAgICAg
ICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIHNob3J0PiAgICAgOiBwdWJsaWMgdHJ1
ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPHVuc2lnbmVkIGludD4gICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAg
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVuc2ln
bmVkIGludD4gICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVkIGxvbmc+ICAgICAgICAgICAg
OiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJp
dmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmc+ICAgICAgOiBwdWJsaWMgdHJ1ZV90
eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9y
PHVuc2lnbmVkIGxvbmcgbG9uZz4gICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVk
IGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBjaGFyPiAgICAgICAgICAgICAgOiBw
dWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlh
bF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBjaGFyPiAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBl
e307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNp
Z25lZCBzaG9ydD4gICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBzaG9y
dD4gICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBpbnQ+ICAgICAgICAgICAgICAgOiBwdWJs
aWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9k
ZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBpbnQ+ICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307
CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25l
ZCBsb25nPiAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nPiAg
ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBsb25nIGxvbmc+ICAgICAgICAgOiBwdWJsaWMg
dHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nIGxvbmc+ICAgOiBwdWJsaWMgdHJ1ZV90eXBle307Cisg
ICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGJvb2w+ICAg
ICAgICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGJvb2w+ICAgICAgICAgICAg
ICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPGNoYXI+ICAgICAgICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1
ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPGNvbnN0IGNoYXI+ICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAg
ICAgICNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVG
SU5FRCkKKyAgICAgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPHdjaGFyX3Q+ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAg
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHdjaGFy
X3Q+ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgI2VuZGlmCisKKyAgICB9
IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisgICAgY2xh
c3MgQWxsb2NCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3Qgc2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhc3RNYWxsb2Moc2l6
ZSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKQor
ICAgICAgICB7CisgICAgICAgICAgICBmYXN0RnJlZShwKTsgIC8vIFdlIGRvbid0IG5lZWQgdG8g
Y2hlY2sgZm9yIGEgbnVsbCBwb2ludGVyOyB0aGUgY29tcGlsZXIgZG9lcyB0aGlzLgorICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBmYXN0TWFsbG9jKHNpemUpOworICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKQorICAgICAgICB7CisgICAgICAg
ICAgICBmYXN0RnJlZShwKTsgIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIGEgbnVsbCBw
b2ludGVyOyB0aGUgY29tcGlsZXIgZG9lcyB0aGlzLgorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0KKyAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0KKyAgICAgICAgCisgICAgfTsKKworCisgICAgLy8gbmV3T2JqZWN0IC8gZGVs
ZXRlT2JqZWN0CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBpbmxpbmUgVCogbmV3
T2JqZWN0KCkKKyAgICB7CisgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihUKSk7
CisKKyAgICAgICAgaWYgKHApCisgICAgICAgICAgICByZXR1cm4gOjpuZXcocCkgVDsKKworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBuYW1lc3BhY2UgV1RGSW50ZXJuYWwgeworCisg
ICAgICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBuZXdBcnJheS4KKyAgICAg
ICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlYnkgVCBoYXMgYSB0cml2aWFsIGN0b3Ig
YW5kIGEgdHJpdmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCB0
cml2aWFsQ3RvciwgYm9vbCB0cml2aWFsRHRvcj4KKyAgICAgICAgc3RydWN0IE5ld0FycmF5SW1w
bCB7CisgICAgICAgICAgICBzdGF0aWMgVCogbmV3QXJyYXkoc2l6ZV90IGNvdW50KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4oZmFzdE1hbGxv
YyhzaXplb2YoVCkgKiBjb3VudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBuZXdBcnJheS4KKyAgICAgICAg
Ly8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlYnkgVCBoYXMgYSBub24tdHJpdmlhbCBjdG9y
IGFuZCBhIHRyaXZpYWwgZHRvci4KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAg
ICAgIHN0cnVjdCBOZXdBcnJheUltcGw8VCwgZmFsc2UsIHRydWU+IHsKKyAgICAgICAgICAgIHN0
YXRpYyBUKiBuZXdBcnJheShzaXplX3QgY291bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgVCogY29uc3QgcCA9IHN0YXRpY19jYXN0PFQqPihmYXN0TWFsbG9jKHNpemVvZihUKSAq
IGNvdW50KSk7CisKKyAgICAgICAgICAgICAgICBpZiAocCkgeworICAgICAgICAgICAgICAgICAg
ICBmb3IgKFQqIHBPYmplY3QgPSBwLCAqcE9iamVjdEVuZCA9IHBPYmplY3QgKyBjb3VudDsgcE9i
amVjdCAhPSBwT2JqZWN0RW5kOyArK3BPYmplY3QpCisgICAgICAgICAgICAgICAgICAgICAgICA6
Om5ldyhwT2JqZWN0KSBUOyAvLyBUbyBjb25zaWRlcjogaGFuZGxlIGN0b3IgZXhjZXB0aW9ucyBp
ZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJ5IHRoZSBjb21waWxlci4KKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4ocCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQg
dGVtcGxhdGUgZm9yIG5ld0FycmF5LgorICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ug
d2hlcmVieSBUIGhhcyBhIHRyaXZpYWwgY3RvciBhbmQgYSBub24tdHJpdmlhbCBkdG9yLgorICAg
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RydWN0IE5ld0FycmF5SW1wbDxU
LCB0cnVlLCBmYWxzZT4geworICAgICAgICAgICAgc3RhdGljIFQqIG5ld0FycmF5KHNpemVfdCBj
b3VudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1aW50NjRfdCogcCA9IHN0YXRp
Y19jYXN0PHVpbnQ2NF90Kj4oZmFzdE1hbGxvYyhzaXplb2YodWludDY0X3QpICsgKHNpemVvZihU
KSAqIGNvdW50KSkpOworCisgICAgICAgICAgICAgICAgaWYgKHApIHsKKyAgICAgICAgICAgICAg
ICAgICAgKnArKyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihjb3VudCk7CisgICAgICAgICAgICAg
ICAgICAgIC8vIE5vIG5lZWQgdG8gY29uc3RydWN0IHRoZSBvYmplY3RzIGluIHRoaXMgY2FzZS4K
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxUKj4ocCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgLy8gVGhp
cyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIG5ld0FycmF5LgorICAgICAgICAvLyBUaGlzIGhh
bmRsZXMgdGhlIGNhc2Ugd2hlcmVieSBUIGhhcyBhIG5vbi10cml2aWFsIGN0b3IgYW5kIGEgbm9u
LXRyaXZpYWwgZHRvci4KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0
cnVjdCBOZXdBcnJheUltcGw8VCwgZmFsc2UsIGZhbHNlPiB7CisgICAgICAgICAgICBzdGF0aWMg
VCogbmV3QXJyYXkoc2l6ZV90IGNvdW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHVpbnQ2NF90KiBwID0gc3RhdGljX2Nhc3Q8dWludDY0X3QqPihmYXN0TWFsbG9jKHNpemVvZih1
aW50NjRfdCkgKyAoc2l6ZW9mKFQpICogY291bnQpKSk7CisKKyAgICAgICAgICAgICAgICBpZiAo
cCkgeworICAgICAgICAgICAgICAgICAgICAqcCsrID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNv
dW50KTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKFQqIHBPYmplY3QgPSByZWludGVycHJl
dF9jYXN0PFQqPihwKSwgKnBPYmplY3RFbmQgPSBwT2JqZWN0ICsgY291bnQ7IHBPYmplY3QgIT0g
cE9iamVjdEVuZDsgKytwT2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgOjpuZXcocE9i
amVjdCkgVDsgLy8gVG8gY29uc2lkZXI6IGhhbmRsZSBjdG9yIGV4Y2VwdGlvbnMgaWYgZXhjZXB0
aW9ucyBhcmUgZW5hYmxlZCBieSB0aGUgY29tcGlsZXIuCisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHApOworICAgICAgICAg
ICAgfQorICAgICAgICB9OworICAgIH0gLy8gbmFtZXNwYWNlIFdURkludGVybmFsCisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBpbmxpbmUgVCogbmV3QXJyYXkoc2l6ZV90IGNvdW50
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURkludGVybmFsOjpOZXdBcnJheUltcGw8VCwgV1RG
OjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxUPjo6dmFsdWUsIFdURjo6aGFzX3RyaXZpYWxfZGVz
dHJ1Y3RvcjxUPjo6dmFsdWU+OjpuZXdBcnJheShjb3VudCk7CisgICAgfQorCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgICAgaW5saW5lIHZvaWQgZGVsZXRlT2JqZWN0KFQqIHApCisgICAg
eworICAgICAgICBpZiAocCkgeyAvLyBBcyBwZXIgdGhlIEMrKyBzdGFuZGFyZCwgdGVzdCBmb3Ig
bnVsbCBwb2ludGVyLgorICAgICAgICAgICAgcC0+flQoKTsKKyAgICAgICAgICAgIGZhc3RGcmVl
KHApOworICAgICAgICB9CisgICAgfQorCisKKyAgICBuYW1lc3BhY2UgV1RGSW50ZXJuYWwgewor
ICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZGVsZXRlQXJyYXkuCisg
ICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWJ5IFQgaGFzIGEgdHJpdmlhbCBk
dG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCB0cml2aWFsRHRvcj4KKyAg
ICAgICAgc3RydWN0IERlbGV0ZUFycmF5SW1wbCB7CisgICAgICAgICAgICBzdGF0aWMgdm9pZCBk
ZWxldGVBcnJheSh2b2lkKiBwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChw
KSB7IC8vIEFzIHBlciB0aGUgQysrIHN0YW5kYXJkLCB0ZXN0IGZvciBudWxsIHBvaW50ZXIuCisg
ICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gZGVzdHJ1Y3QgdGhlIG9iamVjdHMgaW4g
dGhpcyBjYXNlLgorICAgICAgICAgICAgICAgICAgICBmYXN0RnJlZShwKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgLy8gVGhpcyBpcyBh
IHN1cHBvcnQgdGVtcGxhdGUgZm9yIGRlbGV0ZUFycmF5LgorICAgICAgICAvLyBUaGlzIGhhbmRs
ZXMgdGhlIGNhc2Ugd2hlcmVieSBUIGhhcyBhIG5vbi10cml2aWFsIGR0b3IuCisgICAgICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBzdHJ1Y3QgRGVsZXRlQXJyYXlJbXBsPFQsIGZh
bHNlPiB7CisgICAgICAgICAgICBzdGF0aWMgdm9pZCBkZWxldGVBcnJheShUKiBwKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGlmIChwKSB7IC8vIEFzIHBlciB0aGUgQysrIHN0YW5k
YXJkLCB0ZXN0IGZvciBudWxsIHBvaW50ZXIuCisgICAgICAgICAgICAgICAgICAgIFQqIHBFbmQg
PSBwICsgKihyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4ocCkgLSAxKTsKKyAgICAgICAgICAg
ICAgICAgICAgd2hpbGUocEVuZC0tICE9IHApCisgICAgICAgICAgICAgICAgICAgICAgICBwRW5k
LT5+VCgpOworCisgICAgICAgICAgICAgICAgICAgIGZhc3RGcmVlKChyZWludGVycHJldF9jYXN0
PHVpbnQ2NF90Kj4ocCkgLSAxKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgfSAvLyBuYW1lc3BhY2UgV1RGSW50ZXJuYWwKKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgZGVsZXRlQXJyYXkoVCogcCkKKyAgICB7CisgICAg
ICAgIFdURkludGVybmFsOjpEZWxldGVBcnJheUltcGw8VCwgV1RGOjpoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPFQ+Ojp2YWx1ZT46OmRlbGV0ZUFycmF5KHApOworICAgIH0KKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfTmV3X2gKKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDA4
IFBhdWwgUGVkcmlhbmEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXVEZfTmV3X2gKKyNk
ZWZpbmUgV1RGX05ld19oCisKKy8vIFByb3ZpZGVzIGN1c3RvbWl6YWJsZSBvdmVycmlkZXMgb2Yg
ZmFzdE1hbGxvYy9mYXN0RnJlZSBhbmQgb3BlcmF0b3IgbmV3L2RlbGV0ZQorLy8KKy8vIFByb3Zp
ZGVkIGZ1bmN0aW9uYWxpdHk6CisvLyAgICBuYW1lc3BhY2UgV1RGIHsgCisvLyAgICAgICAgY2xh
c3MgQWxsb2NCYXNlOworLy8KKy8vICAgICAgICBUKiAgICBuZXdPYmplY3Q8VD4oKTsKKy8vICAg
ICAgICBUKiAgICBuZXdBcnJheTxUPihjb3VudCk7CisvLyAgICAgICAgdm9pZCAgZGVsZXRlT2Jq
ZWN0KFQqIHApOworLy8gICAgICAgIHZvaWQgIGRlbGV0ZUFycmF5KFQqIHApOworLy8gICAgfQor
Ly8KKy8vIEV4YW1wbGUgdXNhZ2U6CisvLyAgICBjbGFzcyBXaWRnZXQgOiBwdWJsaWMgQWxsb2NC
YXNlIHsgLi4uIH07CisvLworLy8gICAgY2hhciogY2hhclB0ciA9IG5ld09iamVjdDxjaGFyPigp
OworLy8gICAgZGVsZXRlT2JqZWN0KGNoYXJQdHIpOworLy8KKy8vICAgIGNoYXIqIGNoYXJBcnJh
eVB0ciA9IG5ld0FycmF5PGNoYXI+KDM3KTsKKy8vICAgIGRlbGV0ZUFycmF5KGNoYXJBcnJheVB0
cik7CisvLworLy8gICAgdm9pZCoqIHZvaWRQdHJQdHIgPSBuZXdPYmplY3Q8dm9pZCo+KCk7Cisv
LyAgICBkZWxldGVPYmplY3Qodm9pZFB0clB0cik7CisvLworLy8gICAgdm9pZCoqIHZvaWRQdHJB
cnJheVB0ciA9IG5ld0FycmF5PHZvaWQqPigzNyk7CisvLyAgICBkZWxldGVBcnJheSh2b2lkUHRy
QXJyYXlQdHIpOworLy8KKy8vICAgIFBPRCogcG9kUHRyID0gbmV3T2JqZWN0PFBPRD4oKTsKKy8v
ICAgIGRlbGV0ZU9iamVjdChwb2RQdHIpOworLy8KKy8vICAgIFBPRCogcG9kQXJyYXlQdHIgPSBu
ZXdBcnJheTxQT0Q+KDM3KTsKKy8vICAgIGRlbGV0ZUFycmF5KHBvZEFycmF5UHRyKTsKKy8vCisv
LyAgICBPYmplY3QqIG9iamVjdFB0ciA9IG5ld09iamVjdDxPYmplY3Q+KCk7CisvLyAgICBkZWxl
dGVPYmplY3Qob2JqZWN0UHRyKTsKKy8vCisvLyAgICBPYmplY3QqIG9iamVjdEFycmF5UHRyID0g
bmV3QXJyYXk8T2JqZWN0PigzNyk7CisvLyAgICBkZWxldGVBcnJheShvYmplY3RBcnJheVB0cik7
CisvLworCisjaW5jbHVkZSA8bmV3PgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0
ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworLy8gRGVmaW5lIHR5cGUgdHJhaXRzIHRo
YXQgYWxsb3cgdXMgdG8gb3B0aW1pemUgdGVtcGxhdGVkIGFycmF5IG5ldy9kZWxldGUuCisvLyBU
aGVzZSBjb3VsZCBwb3NzaWJseSBnbyBpbnRvIGEgc2VwYXJhdGUgaGVhZGVyIGZpbGUgaWYgdXNl
ZnVsLgorLy8gUmVjZW50IHZlcnNpb25zIG9mIEdDQydzIGxpYnN0ZGMrKyBhbmQgVkMrKyBoYXZl
IHN1cHBvcnQgZm9yIHR5cGUgdHJhaXRzLgorLy8gVG8gZG86IEluY2x1ZGUgb3RoZXIgY29tcGls
ZXJzL2xpYnJhcmllcyB0aGF0IHN1cHBvcnQgdHlwZV90cmFpdHMuCisvLyBUbyBjb25zaWRlcjog
U2hvdWxkIHRoaXMgZ28gaW50byBhIHNlcGFyYXRlIGhlYWRlciBmaWxlPworI2lmIChkZWZpbmVk
KF9fR0xJQkNYWF9fKSAmJiAoX19HTElCQ1hYX18gPj0gMjAwNzA3MjQpKSB8fCAoZGVmaW5lZChf
TVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE1MDApKQorICAgICNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KKworICAgIG5hbWVzcGFjZSBXVEYgeworICAgICAgICB1c2luZyBzdGQ6Omhhc190cml2aWFs
X2NvbnN0cnVjdG9yOworICAgICAgICB1c2luZyBzdGQ6Omhhc190cml2aWFsX2Rlc3RydWN0b3I7
CisgICAgfQorCisjZWxzZQorICAgIG5hbWVzcGFjZSBXVEYgeworCisgICAgICAgIC8vIFRoaXMg
Y29tcGlsZXIgZG9lc24ndCBwcm92aWRlIHR5cGUgdHJhaXRzLCBzbyB3ZSBwcm92aWRlIGEgYmFz
aWMgc21hbGwgc2V0LgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCB2PgorICAgICAg
ICBzdHJ1Y3QgaW50ZWdyYWxfY29uc3RhbnQgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFQg
dmFsdWUgPSB2OworICAgICAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgICAgICAg
ICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PFQsIHY+IHR5cGU7CisgICAgICAgIH07CisKKyAg
ICAgICAgdHlwZWRlZiBpbnRlZ3JhbF9jb25zdGFudDxib29sLCB0cnVlPiAgdHJ1ZV90eXBlOwor
ICAgICAgICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsIGZhbHNlPiBmYWxzZV90eXBl
OworCisKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3RvciA6IHB1YmxpYyBmYWxzZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvciAgOiBwdWJsaWMgZmFsc2VfdHlw
ZXt9OworCisgICAgICAgIC8vIEF0IGxlYXN0IGhhbmRsZSB0aGUgY2FzZSBvZiBzY2FsYXIgdHlw
ZXMuCisgICAgICAgIC8vIElkZWFsbHkgdGhpcyB3b3VsZCBpbmNsdWRlIHZvbGF0aWxlIHZhcmlh
dGlvbnMgYXMgd2VsbC4KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBoYXNf
dHJpdmlhbF9jb25zdHJ1Y3RvcjxUKj4gIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8VCo+ICAg
OiBwdWJsaWMgdHJ1ZV90eXBle307CisKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190
cml2aWFsX2NvbnN0cnVjdG9yPGZsb2F0PiAgICAgICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1
ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1
Y3Rvcjxjb25zdCBmbG9hdD4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAg
ICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8ZG91YmxlPiAg
ICAgICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUg
PD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IGRvdWJsZT4gICAgICAgICAg
ICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9jb25zdHJ1Y3Rvcjxsb25nIGRvdWJsZT4gICAgICAgICAgICAgIDogcHVibGljIHRy
dWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3Ry
dWN0b3I8Y29uc3QgbG9uZyBkb3VibGU+ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAg
ICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHVuc2lnbmVk
IGNoYXI+ICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBjaGFyPiAg
ICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfY29uc3RydWN0b3I8dW5zaWduZWQgc2hvcnQ+ICAgICAgICAgICA6IHB1YmxpYyB0
cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0
cnVjdG9yPGNvbnN0IHVuc2lnbmVkIHNob3J0PiAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307Cisg
ICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25l
ZCBpbnQ+ICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgaW50PiAg
ICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhh
c190cml2aWFsX2NvbnN0cnVjdG9yPHVuc2lnbmVkIGxvbmc+ICAgICAgICAgICAgOiBwdWJsaWMg
dHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25z
dHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nPiAgICAgIDogcHVibGljIHRydWVfdHlwZXt9Owor
ICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dW5zaWdu
ZWQgbG9uZyBsb25nPiAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxh
dGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmcg
bG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgY2hhcj4gICAgICAgICAgICAgIDogcHVibGlj
IHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3I8Y29uc3Qgc2lnbmVkIGNoYXI+ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsK
KyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHNpZ25l
ZCBzaG9ydD4gICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgc2hvcnQ+
ICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8c2lnbmVkIGludD4gICAgICAgICAgICAgICA6IHB1Ymxp
YyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Nv
bnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBpbnQ+ICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307
CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWdu
ZWQgbG9uZz4gICAgICAgICAgICAgIDogcHVibGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGxvbmc+
ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHNpZ25lZCBsb25nIGxvbmc+ICAgICAgICAgOiBwdWJs
aWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgbG9uZyBsb25nPiAgIDogcHVibGljIHRydWVfdHlwZXt9
OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Ym9v
bD4gICAgICAgICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IGJvb2w+ICAgICAg
ICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxjaGFyPiAgICAgICAgICAgICAgICAgICAgIDogcHVi
bGljIHRydWVfdHlwZXt9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29uc3RydWN0b3I8Y29uc3QgY2hhcj4gICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7
fTsKKyAgICAgICAgI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NI
QVJfVF9ERUZJTkVEKQorICAgICAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2NvbnN0cnVjdG9yPHdjaGFyX3Q+ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsK
KyAgICAgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxj
b25zdCB3Y2hhcl90PiAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgICNlbmRp
ZgorCisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGZs
b2F0PiAgICAgICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGZsb2F0PiAgICAg
ICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGRvdWJsZT4gICAgICAgICAgICAgICAgICAgOiBwdWJs
aWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9k
ZXN0cnVjdG9yPGNvbnN0IGRvdWJsZT4gICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307
CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGxvbmcg
ZG91YmxlPiAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGxvbmcgZG91YmxlPiAg
ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVkIGNoYXI+ICAgICAgICAgICAgOiBwdWJsaWMg
dHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGNoYXI+ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307Cisg
ICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVk
IHNob3J0PiAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIHNob3J0PiAg
ICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVkIGludD4gICAgICAgICAgICAgOiBwdWJsaWMgdHJ1
ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPGNvbnN0IHVuc2lnbmVkIGludD4gICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAg
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVkIGxv
bmc+ICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmc+ICAgICAg
OiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJp
dmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gICAgICAgOiBwdWJsaWMgdHJ1ZV90
eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9y
PGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBjaGFyPiAg
ICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBjaGFyPiAgICAgICAgOiBw
dWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlh
bF9kZXN0cnVjdG9yPHNpZ25lZCBzaG9ydD4gICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBl
e307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNv
bnN0IHNpZ25lZCBzaG9ydD4gICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBpbnQ+ICAgICAg
ICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBpbnQ+ICAgICAgICAgOiBwdWJs
aWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9k
ZXN0cnVjdG9yPHNpZ25lZCBsb25nPiAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307
CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0
IHNpZ25lZCBsb25nPiAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBsb25nIGxvbmc+ICAg
ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nIGxvbmc+ICAgOiBwdWJsaWMg
dHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPGJvb2w+ICAgICAgICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307Cisg
ICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGJv
b2w+ICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNoYXI+ICAgICAgICAgICAgICAgICAg
ICAgOiBwdWJsaWMgdHJ1ZV90eXBle307CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGNoYXI+ICAgICAgICAgICAgICAgOiBwdWJsaWMgdHJ1
ZV90eXBle307CisgICAgICAgICNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFU
SVZFX1dDSEFSX1RfREVGSU5FRCkKKyAgICAgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPHdjaGFyX3Q+ICAgICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5
cGV7fTsKKyAgICAgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPGNvbnN0IHdjaGFyX3Q+ICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKKyAgICAgICAg
I2VuZGlmCisKKyAgICB9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmCisKK25hbWVzcGFjZSBX
VEYgeworCisgICAgY2xhc3MgQWxsb2NCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGZhc3RNYWxsb2Moc2l6ZSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG9wZXJhdG9yIGRl
bGV0ZSh2b2lkKiBwKQorICAgICAgICB7CisgICAgICAgICAgICBmYXN0RnJlZShwKTsgIC8vIFdl
IGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIGEgbnVsbCBwb2ludGVyOyB0aGUgY29tcGlsZXIgZG9l
cyB0aGlzLgorICAgICAgICB9CisKKyAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
IHNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYXN0TWFsbG9jKHNpemUpOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKQorICAg
ICAgICB7CisgICAgICAgICAgICBmYXN0RnJlZShwKTsgIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hl
Y2sgZm9yIGEgbnVsbCBwb2ludGVyOyB0aGUgY29tcGlsZXIgZG9lcyB0aGlzLgorICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUsIHZvaWQq
IHApIHsgcmV0dXJuIHA7IH0KKyAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNp
emUsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0KKyAgICAgICAgCisgICAgfTsKKworCisgICAgLy8g
bmV3T2JqZWN0IC8gZGVsZXRlT2JqZWN0CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
ICBpbmxpbmUgVCogbmV3T2JqZWN0KCkKKyAgICB7CisgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFs
bG9jKHNpemVvZihUKSk7CisKKyAgICAgICAgaWYgKHApCisgICAgICAgICAgICByZXR1cm4gOjpu
ZXcocCkgVDsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBuYW1lc3BhY2UgV1RG
SW50ZXJuYWwgeworCisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBu
ZXdBcnJheS4KKyAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlYnkgVCBoYXMg
YSB0cml2aWFsIGN0b3IgYW5kIGEgdHJpdmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgYm9vbCB0cml2aWFsQ3RvciwgYm9vbCB0cml2aWFsRHRvcj4KKyAgICAgICAgc3Ry
dWN0IE5ld0FycmF5SW1wbCB7CisgICAgICAgICAgICBzdGF0aWMgVCogbmV3QXJyYXkoc2l6ZV90
IGNvdW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUKj4oZmFzdE1hbGxvYyhzaXplb2YoVCkgKiBjb3VudCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBuZXdB
cnJheS4KKyAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlYnkgVCBoYXMgYSBu
b24tdHJpdmlhbCBjdG9yIGFuZCBhIHRyaXZpYWwgZHRvci4KKyAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgICAgICAgIHN0cnVjdCBOZXdBcnJheUltcGw8VCwgZmFsc2UsIHRydWU+IHsK
KyAgICAgICAgICAgIHN0YXRpYyBUKiBuZXdBcnJheShzaXplX3QgY291bnQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgVCogY29uc3QgcCA9IHN0YXRpY19jYXN0PFQqPihmYXN0TWFs
bG9jKHNpemVvZihUKSAqIGNvdW50KSk7CisKKyAgICAgICAgICAgICAgICBpZiAocCkgeworICAg
ICAgICAgICAgICAgICAgICBmb3IgKFQqIHBPYmplY3QgPSBwLCAqcE9iamVjdEVuZCA9IHBPYmpl
Y3QgKyBjb3VudDsgcE9iamVjdCAhPSBwT2JqZWN0RW5kOyArK3BPYmplY3QpCisgICAgICAgICAg
ICAgICAgICAgICAgICA6Om5ldyhwT2JqZWN0KSBUOyAvLyBUbyBjb25zaWRlcjogaGFuZGxlIGN0
b3IgZXhjZXB0aW9ucyBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJ5IHRoZSBjb21waWxlci4K
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxUKj4ocCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgLy8gVGhp
cyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIG5ld0FycmF5LgorICAgICAgICAvLyBUaGlzIGhh
bmRsZXMgdGhlIGNhc2Ugd2hlcmVieSBUIGhhcyBhIHRyaXZpYWwgY3RvciBhbmQgYSBub24tdHJp
dmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RydWN0
IE5ld0FycmF5SW1wbDxULCB0cnVlLCBmYWxzZT4geworICAgICAgICAgICAgc3RhdGljIFQqIG5l
d0FycmF5KHNpemVfdCBjb3VudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1aW50
NjRfdCogcCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Kj4oZmFzdE1hbGxvYyhzaXplb2YodWludDY0
X3QpICsgKHNpemVvZihUKSAqIGNvdW50KSkpOworCisgICAgICAgICAgICAgICAgaWYgKHApIHsK
KyAgICAgICAgICAgICAgICAgICAgKnArKyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihjb3VudCk7
CisgICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gY29uc3RydWN0IHRoZSBvYmplY3Rz
IGluIHRoaXMgY2FzZS4KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4ocCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisK
KyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIG5ld0FycmF5LgorICAg
ICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVieSBUIGhhcyBhIG5vbi10cml2aWFs
IGN0b3IgYW5kIGEgbm9uLXRyaXZpYWwgZHRvci4KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgICAgIHN0cnVjdCBOZXdBcnJheUltcGw8VCwgZmFsc2UsIGZhbHNlPiB7CisgICAg
ICAgICAgICBzdGF0aWMgVCogbmV3QXJyYXkoc2l6ZV90IGNvdW50KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHVpbnQ2NF90KiBwID0gc3RhdGljX2Nhc3Q8dWludDY0X3QqPihmYXN0
TWFsbG9jKHNpemVvZih1aW50NjRfdCkgKyAoc2l6ZW9mKFQpICogY291bnQpKSk7CisKKyAgICAg
ICAgICAgICAgICBpZiAocCkgeworICAgICAgICAgICAgICAgICAgICAqcCsrID0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGNvdW50KTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKFQqIHBPYmpl
Y3QgPSByZWludGVycHJldF9jYXN0PFQqPihwKSwgKnBPYmplY3RFbmQgPSBwT2JqZWN0ICsgY291
bnQ7IHBPYmplY3QgIT0gcE9iamVjdEVuZDsgKytwT2JqZWN0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgOjpuZXcocE9iamVjdCkgVDsgLy8gVG8gY29uc2lkZXI6IGhhbmRsZSBjdG9yIGV4Y2Vw
dGlvbnMgaWYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBieSB0aGUgY29tcGlsZXIuCisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+
KHApOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0gLy8gbmFtZXNwYWNlIFdURklu
dGVybmFsCisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBpbmxpbmUgVCogbmV3QXJy
YXkoc2l6ZV90IGNvdW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURkludGVybmFsOjpOZXdB
cnJheUltcGw8VCwgV1RGOjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxUPjo6dmFsdWUsIFdURjo6
aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPjo6dmFsdWU+OjpuZXdBcnJheShjb3VudCk7CisgICAg
fQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgaW5saW5lIHZvaWQgZGVsZXRlT2Jq
ZWN0KFQqIHApCisgICAgeworICAgICAgICBpZiAocCkgeyAvLyBBcyBwZXIgdGhlIEMrKyBzdGFu
ZGFyZCwgdGVzdCBmb3IgbnVsbCBwb2ludGVyLgorICAgICAgICAgICAgcC0+flQoKTsKKyAgICAg
ICAgICAgIGZhc3RGcmVlKHApOworICAgICAgICB9CisgICAgfQorCisKKyAgICBuYW1lc3BhY2Ug
V1RGSW50ZXJuYWwgeworICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3Ig
ZGVsZXRlQXJyYXkuCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWJ5IFQg
aGFzIGEgdHJpdmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCB0
cml2aWFsRHRvcj4KKyAgICAgICAgc3RydWN0IERlbGV0ZUFycmF5SW1wbCB7CisgICAgICAgICAg
ICBzdGF0aWMgdm9pZCBkZWxldGVBcnJheSh2b2lkKiBwKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGlmIChwKSB7IC8vIEFzIHBlciB0aGUgQysrIHN0YW5kYXJkLCB0ZXN0IGZvciBu
dWxsIHBvaW50ZXIuCisgICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gZGVzdHJ1Y3Qg
dGhlIG9iamVjdHMgaW4gdGhpcyBjYXNlLgorICAgICAgICAgICAgICAgICAgICBmYXN0RnJlZShw
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAg
ICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIGRlbGV0ZUFycmF5LgorICAgICAg
ICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVieSBUIGhhcyBhIG5vbi10cml2aWFsIGR0
b3IuCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBzdHJ1Y3QgRGVsZXRl
QXJyYXlJbXBsPFQsIGZhbHNlPiB7CisgICAgICAgICAgICBzdGF0aWMgdm9pZCBkZWxldGVBcnJh
eShUKiBwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChwKSB7IC8vIEFzIHBl
ciB0aGUgQysrIHN0YW5kYXJkLCB0ZXN0IGZvciBudWxsIHBvaW50ZXIuCisgICAgICAgICAgICAg
ICAgICAgIFQqIHBFbmQgPSBwICsgKihyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4ocCkgLSAx
KTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUocEVuZC0tICE9IHApCisgICAgICAgICAgICAg
ICAgICAgICAgICBwRW5kLT5+VCgpOworCisgICAgICAgICAgICAgICAgICAgIGZhc3RGcmVlKChy
ZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4ocCkgLSAxKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgfSAvLyBuYW1lc3BhY2UgV1RGSW50ZXJu
YWwKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgZGVsZXRlQXJyYXkoVCog
cCkKKyAgICB7CisgICAgICAgIFdURkludGVybmFsOjpEZWxldGVBcnJheUltcGw8VCwgV1RGOjpo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ojp2YWx1ZT46OmRlbGV0ZUFycmF5KHApOworICAgIH0K
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfTmV3X2gKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZ1F0LmNwcAkocmV2aXNpb24gMzcyNDgpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiSGFzaE1hcC5oIgogI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKICNpbmNsdWRlICJN
YXRoRXh0cmFzLmgiCisjaW5jbHVkZSA8d3RmL05ldy5oPgogCiAjaW5jbHVkZSA8UUNvcmVBcHBs
aWNhdGlvbj4KICNpbmNsdWRlIDxRTXV0ZXg+CkBAIC00MCw3ICs0MSw3IEBACiAKIG5hbWVzcGFj
ZSBXVEYgewogCi1jbGFzcyBUaHJlYWRQcml2YXRlIDogcHVibGljIFFUaHJlYWQgeworY2xhc3Mg
VGhyZWFkUHJpdmF0ZSA6IHB1YmxpYyBRVGhyZWFkLCBwdWJsaWMgQWxsb2NCYXNlIHsKIHB1Ymxp
YzoKICAgICBUaHJlYWRQcml2YXRlKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRh
dGEpOwogICAgIHZvaWQgcnVuKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1ZlY3Rvci5oCShyZXZpc2lvbiAzNzI0
OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgogI2luY2x1ZGUgIkZhc3RNYWxs
b2MuaCIKKyNpbmNsdWRlICJOZXcuaCIKICNpbmNsdWRlICJOb25jb3B5YWJsZS5oIgogI2luY2x1
ZGUgIk5vdEZvdW5kLmgiCiAjaW5jbHVkZSAiVmVjdG9yVHJhaXRzLmgiCkBAIC00MTYsNyArNDE3
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IDA+Ci0gICAgY2xhc3MgVmVjdG9yIHsKKyAgICBjbGFz
cyBWZWN0b3IgOiBwdWJsaWMgQWxsb2NCYXNlIHsKICAgICBwcml2YXRlOgogICAgICAgICB0eXBl
ZGVmIFZlY3RvckJ1ZmZlcjxULCBpbmxpbmVDYXBhY2l0eT4gQnVmZmVyOwogICAgICAgICB0eXBl
ZGVmIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+IFR5cGVPcGVyYXRpb25zOwpJbmRleDogSmF2YVNj
cmlwdENvcmUvd3RmL3F0L01haW5UaHJlYWRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvd3RmL3F0L01haW5UaHJlYWRRdC5jcHAJKHJldmlzaW9uIDM3MjQ4KQorKysgSmF2YVNj
cmlwdENvcmUvd3RmL3F0L01haW5UaHJlYWRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIK
KyNpbmNsdWRlIDx3dGYvTmV3Lmg+CiAKICNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KICNpbmNs
dWRlIDxRdENvcmUvUUNvcmVBcHBsaWNhdGlvbj4KQEAgLTM3LDcgKzM4LDcgQEAKIAogbmFtZXNw
YWNlIFdURiB7CiAKLWNsYXNzIE1haW5UaHJlYWRJbnZva2VyIDogcHVibGljIFFPYmplY3Qgewor
Y2xhc3MgTWFpblRocmVhZEludm9rZXIgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIEFsbG9jQmFz
ZSB7CiAgICAgUV9PQkpFQ1QKIHB1YmxpYzoKICAgICBNYWluVGhyZWFkSW52b2tlcigpOwo=
</data>
<flag name="review"
          id="10939"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25333</attachid>
            <date>2008-11-20 21:19:18 -0800</date>
            <delta_ts>2008-12-11 01:19:24 -0800</delta_ts>
            <desc>Patch against revision 38334</desc>
            <filename>AllAllocation_v3.patch</filename>
            <type>text/plain</type>
            <size>487654</size>
            <attacher name="Paul Pedriana">ppedriana</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hlYXZ5UHJvZmlsZS5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGVhdnlQcm9maWxlLmgJKHJldmlzaW9uIDM4
MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hlYXZ5UHJvZmlsZS5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjksMTIgKzI5LDEzIEBADQogI2luY2x1ZGUgIlByb2ZpbGUuaCINCiAjaW5j
bHVkZSAiUHJvZmlsZU5vZGUuaCINCiAjaW5jbHVkZSAiVHJlZVByb2ZpbGUuaCINCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgSlNDIHsNCiANCiAgICAgY2xh
c3MgVVN0cmluZzsNCiANCi0gICAgY2xhc3MgSGVhdnlQcm9maWxlIDogcHVibGljIFByb2ZpbGUg
ew0KKyAgICBjbGFzcyBIZWF2eVByb2ZpbGUgOiBwdWJsaWMgUHJvZmlsZSwgcHVibGljIFdURjo6
RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhlYXZ5UHJvZmlsZT4gY3JlYXRlKFRyZWVQcm9maWxlKiB0cmVlUHJvZmlsZSkNCiAgICAgICAg
IHsNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuaAkocmV2aXNpb24g
MzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjZGVmaW5lIFByb2ZpbGVOb2RlX2gNCiANCiAj
aW5jbHVkZSAiQ2FsbElkZW50aWZpZXIuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2Uu
aD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
Pg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQpAQCAtNDEsNyArNDIsNyBAQA0KICAgICB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIFN0YWNrSXRl
cmF0b3I7DQogICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8VVN0cmluZzo6UmVwKj4gRnVuY3Rp
b25DYWxsSGFzaENvdW50Ow0KIA0KLSAgICBjbGFzcyBQcm9maWxlTm9kZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFByb2ZpbGVOb2RlPiB7DQorICAgIGNsYXNzIFByb2ZpbGVOb2RlIDogcHVibGljIFJl
ZkNvdW50ZWQ8UHJvZmlsZU5vZGU+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAg
cHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZmlsZU5vZGU+IGNyZWF0ZShj
b25zdCBDYWxsSWRlbnRpZmllciYgY2FsbElkZW50aWZpZXIsIFByb2ZpbGVOb2RlKiBoZWFkTm9k
ZSwgUHJvZmlsZU5vZGUqIHBhcmVudE5vZGUpDQogICAgICAgICB7DQpJbmRleDogSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCShyZXZpc2lvbiAzODMzNCkNCisr
KyBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkNCkBAIC0yNiw2ICsyNiw3IEBADQogI2lmbmRlZiBQcm9maWxlR2VuZXJhdG9yX2gNCiAjZGVm
aW5lIFByb2ZpbGVHZW5lcmF0b3JfaA0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
Pg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQpAQCAtMzgsNyArMzksNyBAQA0KICAgICBj
bGFzcyBQcm9maWxlTm9kZTsNCiAgICAgY2xhc3MgVVN0cmluZzsNCiANCi0gICAgY2xhc3MgUHJv
ZmlsZUdlbmVyYXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFByb2ZpbGVHZW5lcmF0b3I+ICB7DQor
ICAgIGNsYXNzIFByb2ZpbGVHZW5lcmF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxQcm9maWxlR2Vu
ZXJhdG9yPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IGNyZWF0ZShjb25zdCBVU3Ry
aW5nJiB0aXRsZSwgRXhlY1N0YXRlKiBvcmlnaW5hdGluZ0V4ZWMsIHVuc2lnbmVkIHVpZCk7DQog
DQpJbmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgJKHJldmlz
aW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgJ
KHdvcmtpbmcgY29weSkNCkBAIC0yOCwxMCArMjgsMTEgQEANCiAjZGVmaW5lIENhbGxJZGVudGlm
aWVyX2gNCiANCiAjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+DQorI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIEpTQyB7DQogDQotICAgIHN0cnVjdCBDYWxs
SWRlbnRpZmllciB7DQorICAgIHN0cnVjdCBDYWxsSWRlbnRpZmllciA6IHB1YmxpYyBXVEY6OkZh
c3RBbGxvY0Jhc2Ugew0KICAgICAgICAgVVN0cmluZyBtX25hbWU7DQogICAgICAgICBVU3RyaW5n
IG1fdXJsOw0KICAgICAgICAgdW5zaWduZWQgbV9saW5lTnVtYmVyOw0KSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1RyZWVQcm9maWxlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9UcmVlUHJvZmlsZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBKYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9UcmVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiAr
MjcsNyBAQA0KICNkZWZpbmUgVHJlZVByb2ZpbGVfaA0KIA0KICNpbmNsdWRlICJQcm9maWxlLmgi
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIEpTQyB7DQog
DQpAQCAtMzQsNyArMzUsNyBAQA0KICAgICBjbGFzcyBIZWF2eVByb2ZpbGU7DQogICAgIGNsYXNz
IFVTdHJpbmc7DQogDQotICAgIGNsYXNzIFRyZWVQcm9maWxlIDogcHVibGljIFByb2ZpbGUgew0K
KyAgICBjbGFzcyBUcmVlUHJvZmlsZSA6IHB1YmxpYyBQcm9maWxlLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VHJl
ZVByb2ZpbGU+IGNyZWF0ZShjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsNCiAN
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAkocmV2aXNpb24gMzgzMzQpDQor
KysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQ0KQEAg
LTMwLDYgKzMwLDcgQEANCiAjZGVmaW5lIFByb2ZpbGVyX2gNCiANCiAjaW5jbHVkZSAiUHJvZmls
ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4NCkBAIC00Myw3ICs0NCw3IEBADQogICAgIGNsYXNzIFByb2ZpbGVHZW5lcmF0b3I7DQog
ICAgIGNsYXNzIFVTdHJpbmc7DQogDQotICAgIGNsYXNzIFByb2ZpbGVyIHsNCisgICAgY2xhc3Mg
UHJvZmlsZXIgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAg
ICAgICAgc3RhdGljIFByb2ZpbGVyKiogZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkNCiAgICAg
ICAgIHsNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMzgzMzQpDQor
KysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIy
LDYgKzIyLDcgQEANCiAjZGVmaW5lIEtKU19SRUdFWFBfSA0KIA0KICNpbmNsdWRlICJVU3RyaW5n
LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogDQpAQCAtMzEsNyArMzIsNyBA
QA0KIA0KICAgICBjbGFzcyBKU0dsb2JhbERhdGE7DQogDQotICAgIGNsYXNzIFJlZ0V4cCA6IHB1
YmxpYyBSZWZDb3VudGVkPFJlZ0V4cD4gew0KKyAgICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgUmVm
Q291bnRlZDxSZWdFeHA+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGlj
Og0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVhdGUoSlNHbG9iYWxEYXRh
KiwgY29uc3QgVVN0cmluZyYgcGF0dGVybik7DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
ZWdFeHA+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBjb25z
dCBVU3RyaW5nJiBmbGFncyk7DQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJ
KHdvcmtpbmcgY29weSkNCkBAIC0yOCwxMCArMjgsMTEgQEANCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIg0KICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIg0KICNpbmNsdWRlICJNYWNoaW5lLmgi
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIEpTQyB7DQog
DQotICAgIHN0cnVjdCBBcmd1bWVudHNEYXRhIDogTm9uY29weWFibGUgew0KKyAgICBzdHJ1Y3Qg
QXJndW1lbnRzRGF0YSA6IE5vbmNvcHlhYmxlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiAgICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbjsNCiANCiAgICAgICAgIHVuc2lnbmVk
IG51bVBhcmFtZXRlcnM7DQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Nj
b3BlT2JqZWN0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Rh
dGljU2NvcGVPYmplY3QuaAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMyArMjcs
MTQgQEANCiAjZGVmaW5lIEpTU3RhdGljU2NvcGVPYmplY3RfaA0KIA0KICNpbmNsdWRlICJKU1Zh
cmlhYmxlT2JqZWN0LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFt
ZXNwYWNlIEpTQ3sNCiAgICAgDQogICAgIGNsYXNzIEpTU3RhdGljU2NvcGVPYmplY3QgOiBwdWJs
aWMgSlNWYXJpYWJsZU9iamVjdCB7DQogICAgIHByb3RlY3RlZDoNCiAgICAgICAgIHVzaW5nIEpT
VmFyaWFibGVPYmplY3Q6OkpTVmFyaWFibGVPYmplY3REYXRhOw0KLSAgICAgICAgc3RydWN0IEpT
U3RhdGljU2NvcGVPYmplY3REYXRhIDogcHVibGljIEpTVmFyaWFibGVPYmplY3REYXRhIHsNCisg
ICAgICAgIHN0cnVjdCBKU1N0YXRpY1Njb3BlT2JqZWN0RGF0YSA6IHB1YmxpYyBKU1ZhcmlhYmxl
T2JqZWN0RGF0YSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgICAgICAgICAgSlNT
dGF0aWNTY29wZU9iamVjdERhdGEoKQ0KICAgICAgICAgICAgICAgICA6IEpTVmFyaWFibGVPYmpl
Y3REYXRhKCZzeW1ib2xUYWJsZSwgJnJlZ2lzdGVyU3RvcmUgKyAxKQ0KICAgICAgICAgICAgIHsN
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMzgz
MzQpDQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQ0KQEAgLTI1LDYgKzI1LDcgQEANCiAjaW5jbHVkZSA8bmV3PiAvLyBmb3IgcGxhY2VtZW50
IG5ldw0KICNpbmNsdWRlIDxzdHJpbmcuaD4gLy8gZm9yIHN0cmxlbg0KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPg0KIA0KQEAgLTMy
LDcgKzMzLDcgQEANCiANCiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIFJlZlB0cjxVU3Ry
aW5nOjpSZXA+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPiA+IExpdGVyYWxJZGVudGlmaWVyVGFibGU7
DQogDQotY2xhc3MgSWRlbnRpZmllclRhYmxlIHsNCitjbGFzcyBJZGVudGlmaWVyVGFibGUgOiBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIH5JZGVudGlmaWVyVGFi
bGUoKQ0KICAgICB7DQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMyw2ICsyMyw3IEBADQogDQogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiDQogI2luY2x1ZGUgIlJlZ0V4cC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KIA0KIG5hbWVzcGFjZSBKU0Mgew0KIA0KQEAgLTU2LDcgKzU3LDcgQEANCiANCiAgICAg
ICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsNCiANCi0gICAgICAg
IHN0cnVjdCBSZWdFeHBPYmplY3REYXRhIHsNCisgICAgICAgIHN0cnVjdCBSZWdFeHBPYmplY3RE
YXRhIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgICAgICAgICAgUmVnRXhwT2Jq
ZWN0RGF0YShQYXNzUmVmUHRyPFJlZ0V4cD4gcmVnRXhwLCBkb3VibGUgbGFzdEluZGV4KQ0KICAg
ICAgICAgICAgICAgICA6IHJlZ0V4cChyZWdFeHApDQogICAgICAgICAgICAgICAgICwgbGFzdElu
ZGV4KGxhc3RJbmRleCkNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCShyZXZpc2lv
biAzODMzNCkNCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTI1LDEzICsyNSwxNCBAQA0KICNpbmNsdWRlICJKU0ltbWVkaWF0ZS5oIg0KICNp
bmNsdWRlICJSZWdpc3Rlci5oIg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPg0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4N
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KIA0KIG5hbWVzcGFjZSBKU0Mgew0KICAgICANCi0g
ICAgY2xhc3MgQXJnTGlzdCA6IE5vbmNvcHlhYmxlIHsNCisgICAgY2xhc3MgQXJnTGlzdCA6IE5v
bmNvcHlhYmxlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHJpdmF0ZToNCiAg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDg7DQogICAgICAg
ICB0eXBlZGVmIFZlY3RvcjxSZWdpc3RlciwgaW5saW5lQ2FwYWNpdHk+IFZlY3RvclR5cGU7DQpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRC5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRC5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlELmgJKHdvcmtpbmcgY29weSkN
CkBAIC0zNCw2ICszNCw3IEBADQogI2luY2x1ZGUgIlN0cnVjdHVyZUlEVHJhbnNpdGlvblRhYmxl
LmgiDQogI2luY2x1ZGUgIlR5cGVJbmZvLmgiDQogI2luY2x1ZGUgIlVTdHJpbmcuaCINCisjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMu
aD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4NCiAjaW5jbHVkZSA8d3RmL093bkFycmF5
UHRyLmg+DQpAQCAtNTEsNyArNTIsNyBAQA0KICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsN
CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOw0KIA0KLSAgICBjbGFzcyBTdHJ1Y3R1
cmVJRCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVjdHVyZUlEPiB7DQorICAgIGNsYXNzIFN0cnVj
dHVyZUlEIDogcHVibGljIFJlZkNvdW50ZWQ8U3RydWN0dXJlSUQ+LCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgZnJpZW5kIGNsYXNzIENUSTsNCiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZUlEPiBjcmVhdGUoSlNWYWx1ZSogcHJv
dG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8pDQpJbmRleDogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkNCkBA
IC0yMiw2ICsyMiw3IEBADQogI2RlZmluZSBDb21tb25JZGVudGlmaWVyc19oDQogDQogI2luY2x1
ZGUgIklkZW50aWZpZXIuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+DQogDQogLy8gQXJnTGlzdCBvZiBwcm9wZXJ0eSBuYW1l
cywgcGFzc2VkIHRvIGEgbWFjcm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMNCkBA
IC02Nyw3ICs2OCw3IEBADQogDQogbmFtZXNwYWNlIEpTQyB7DQogDQotICAgIGNsYXNzIENvbW1v
bklkZW50aWZpZXJzIDogTm9uY29weWFibGUgew0KKyAgICBjbGFzcyBDb21tb25JZGVudGlmaWVy
cyA6IE5vbmNvcHlhYmxlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHJpdmF0
ZToNCiAgICAgICAgIENvbW1vbklkZW50aWZpZXJzKEpTR2xvYmFsRGF0YSopOw0KICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lkZW50aWZpZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIzLDEyICsyMywxMyBAQA0KIA0KICNpbmNs
dWRlICJKU0dsb2JhbERhdGEuaCINCiAjaW5jbHVkZSAiVVN0cmluZy5oIg0KKyNpbmNsdWRlIDx3
dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBKU0Mgew0KIA0KICAgICBjbGFzcyBF
eGVjU3RhdGU7DQogDQotICAgIGNsYXNzIElkZW50aWZpZXIgew0KKyAgICBjbGFzcyBJZGVudGlm
aWVyIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgICAgICBmcmllbmQgY2xhc3Mg
U3RydWN0dXJlSUQ7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIElkZW50aWZpZXIoKSB7IH0NCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDYgKzI5LDcg
QEANCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiDQogI2luY2x1ZGUgPHN0ZGlvLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+
DQogDQogbmFtZXNwYWNlIEpTQyB7DQogDQpAQCAtNDUsNyArNDYsNyBAQA0KICAgICB0eXBlZGVm
IFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOw0KICAgICB0eXBlZGVmIHZv
aWQgKCpQdXRGdW5jdGlvbikoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGJhc2VPYmplY3QsIEpTVmFs
dWUqIHZhbHVlKTsNCiANCi0gICAgY2xhc3MgSGFzaEVudHJ5IHsNCisgICAgY2xhc3MgSGFzaEVu
dHJ5IDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAg
IHZvaWQgaW5pdGlhbGl6ZShVU3RyaW5nOjpSZXAqIGtleSwgdW5zaWduZWQgY2hhciBhdHRyaWJ1
dGVzLCBpbnRwdHJfdCB2MSwgaW50cHRyX3QgdjIpDQogICAgICAgICB7DQpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCShyZXZpc2lvbiAzODMzNCkNCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkNCkBA
IC0yOCwxMCArMjgsMTEgQEANCiANCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCINCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBu
YW1lc3BhY2UgSlNDIHsNCiANCi1jbGFzcyBTbWFsbFN0cmluZ3NTdG9yYWdlIHsNCitjbGFzcyBT
bWFsbFN0cmluZ3NTdG9yYWdlIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGlj
Og0KICAgICBTbWFsbFN0cmluZ3NTdG9yYWdlKCk7DQogICAgIH5TbWFsbFN0cmluZ3NTdG9yYWdl
KCk7DQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwCShyZXZp
c2lvbiAzODMzNCkNCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAJ
KHdvcmtpbmcgY29weSkNCkBAIC0yNCwxMSArMjQsMTIgQEANCiANCiAjaW5jbHVkZSAiRGF0ZU1h
dGguaCINCiAjaW5jbHVkZSA8bWF0aC5oPg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
Pg0KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPg0KIA0KIG5hbWVzcGFjZSBKU0Mgew0KIA0K
LXN0cnVjdCBEYXRlSW5zdGFuY2U6OkNhY2hlIHsNCitzdHJ1Y3QgRGF0ZUluc3RhbmNlOjpDYWNo
ZSA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBkb3VibGUgbV9ncmVnb3JpYW5E
YXRlVGltZUNhY2hlZEZvck1TOw0KICAgICBHcmVnb3JpYW5EYXRlVGltZSBtX2NhY2hlZEdyZWdv
cmlhbkRhdGVUaW1lOw0KICAgICBkb3VibGUgbV9ncmVnb3JpYW5EYXRlVGltZVVUQ0NhY2hlZEZv
ck1TOw0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURDaGFpbi5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRENoYWluLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURD
aGFpbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsNiArMjYsNyBAQA0KICNpZm5kZWYgU3RydWN0
dXJlSURDaGFpbl9oDQogI2RlZmluZSBTdHJ1Y3R1cmVJRENoYWluX2gNCiANCisjaW5jbHVkZSA8
d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQpA
QCAtMzUsNyArMzYsNyBAQA0KIA0KICAgICBjbGFzcyBTdHJ1Y3R1cmVJRDsNCiANCi0gICAgY2xh
c3MgU3RydWN0dXJlSURDaGFpbiA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVjdHVyZUlEQ2hhaW4+
IHsNCisgICAgY2xhc3MgU3RydWN0dXJlSURDaGFpbiA6IHB1YmxpYyBSZWZDb3VudGVkPFN0cnVj
dHVyZUlEQ2hhaW4+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0K
ICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlSURDaGFpbj4gY3JlYXRlKFN0cnVj
dHVyZUlEKiBzdHJ1Y3R1cmVJRCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0cnVjdHVyZUlEQ2hh
aW4oc3RydWN0dXJlSUQpKTsgfQ0KIA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlOYW1lQXJyYXkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lQXJyYXkuaAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjQsMTIgKzI0
LDEzIEBADQogI2luY2x1ZGUgIkV4ZWNTdGF0ZS5oIg0KICNpbmNsdWRlICJJZGVudGlmaWVyLmgi
DQogI2luY2x1ZGUgIlN0cnVjdHVyZUlELmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4N
CiANCiBuYW1lc3BhY2UgSlNDIHsNCiANCi0gICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8UHJvcGVydHlOYW1lQXJyYXlEYXRhPiB7DQorICAgIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFByb3BlcnR5TmFtZUFy
cmF5RGF0YT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAg
ICAgICB0eXBlZGVmIFZlY3RvcjxJZGVudGlmaWVyLCAyMD4gUHJvcGVydHlOYW1lVmVjdG9yOw0K
ICAgICAgICAgdHlwZWRlZiBQcm9wZXJ0eU5hbWVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0
X2l0ZXJhdG9yOw0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgJKHJldmlzaW9uIDM4
MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMzEsNiArMzEsNyBAQA0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4NCiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBKU0Mgew0KIA0KQEAgLTcw
LDcgKzcxLDcgQEANCiANCiAgICAgdHlwZWRlZiBWZWN0b3I8Y2hhciwgMzI+IENTdHJpbmdCdWZm
ZXI7DQogDQotICAgIGNsYXNzIFVTdHJpbmcgew0KKyAgICBjbGFzcyBVU3RyaW5nIDogcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgICAgICBmcmllbmQgY2xhc3MgQ1RJOw0KIA0KICAg
ICBwdWJsaWM6DQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJ
KHdvcmtpbmcgY29weSkNCkBAIC0zNSw2ICszNSw4IEBADQogI2luY2x1ZGUgIlN5bWJvbFRhYmxl
LmgiDQogI2luY2x1ZGUgIk5vZGVzLmgiDQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQorDQogbmFtZXNwYWNlIEpTQyB7DQogDQogICAgIGNsYXNzIEFyZ3VtZW50czsNCkBAIC02
Nyw3ICs2OSw3IEBADQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVJRD4gY3Jl
YXRlU3RydWN0dXJlSUQoSlNWYWx1ZSogcHJvdG8pIHsgcmV0dXJuIFN0cnVjdHVyZUlEOjpjcmVh
dGUocHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIE5lZWRzVGhpc0NvbnZlcnNpb24pKTsgfQ0K
IA0KICAgICBwcml2YXRlOg0KLSAgICAgICAgc3RydWN0IEpTQWN0aXZhdGlvbkRhdGEgOiBwdWJs
aWMgSlNWYXJpYWJsZU9iamVjdERhdGEgew0KKyAgICAgICAgc3RydWN0IEpTQWN0aXZhdGlvbkRh
dGEgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdERhdGEsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KICAgICAgICAgICAgIEpTQWN0aXZhdGlvbkRhdGEoUGFzc1JlZlB0cjxGdW5jdGlvbkJv
ZHlOb2RlPiBmdW5jdGlvbkJvZHksIFJlZ2lzdGVyKiByZWdpc3RlcnMpDQogICAgICAgICAgICAg
ICAgIDogSlNWYXJpYWJsZU9iamVjdERhdGEoJmZ1bmN0aW9uQm9keS0+c3ltYm9sVGFibGUoKSwg
cmVnaXN0ZXJzKQ0KICAgICAgICAgICAgICAgICAsIGZ1bmN0aW9uQm9keShmdW5jdGlvbkJvZHkp
DQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkNCkBA
IC0zNiw2ICszNiw3IEBADQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KICNpbmNsdWRlIDx3dGYvQVND
SUlDVHlwZS5oPg0KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPg0KKyNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPg0KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+DQogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4NCkBAIC0yMDAs
NyArMjAxLDcgQEANCiANCiBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gVVN0cmluZzo6UmVwOjpj
cmVhdGUoVUNoYXIqIGQsIGludCBsKQ0KIHsNCi0gICAgUmVwKiByID0gbmV3IFJlcDsNCisgICAg
UmVwKiByID0gZmFzdE5ldzxSZXA+KCk7DQogICAgIHItPm9mZnNldCA9IDA7DQogICAgIHItPmxl
biA9IGw7DQogICAgIHItPnJjID0gMTsNCkBAIC0yMzIsNyArMjMzLDcgQEANCiAgICAgQVNTRVJU
KC0ob2Zmc2V0ICsgYmFzZU9mZnNldCkgPD0gYmFzZS0+dXNlZFByZUNhcGFjaXR5KTsNCiAgICAg
QVNTRVJUKG9mZnNldCArIGJhc2VPZmZzZXQgKyBsZW5ndGggPD0gYmFzZS0+dXNlZENhcGFjaXR5
KTsNCiANCi0gICAgUmVwKiByID0gbmV3IFJlcDsNCisgICAgUmVwKiByID0gZmFzdE5ldzxSZXA+
KCk7DQogICAgIHItPm9mZnNldCA9IGJhc2VPZmZzZXQgKyBvZmZzZXQ7DQogICAgIHItPmxlbiA9
IGxlbmd0aDsNCiAgICAgci0+cmMgPSAxOw0KQEAgLTI4MCw3ICsyODEsNyBAQA0KICAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgIGJhc2VTdHJpbmctPmRlcmVmKCk7DQogDQotICAgICAgICBkZWxl
dGUgdGhpczsNCisgICAgICAgIGZhc3REZWxldGUodGhpcyk7DQogICAgIH0NCiB9DQogDQpJbmRl
eDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0yOSw2ICsyOSw3IEBADQogI2lmbmRlZiBKU0dsb2JhbERhdGFfaA0KICNkZWZpbmUgSlNH
bG9iYWxEYXRhX2gNCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4NCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4NCkBAIC01NCw3ICs1NSw3IEBADQogICAgIGNsYXNzIFVTdHJpbmc7
DQogICAgIHN0cnVjdCBIYXNoVGFibGU7DQogDQotICAgIGNsYXNzIEpTR2xvYmFsRGF0YSA6IHB1
YmxpYyBSZWZDb3VudGVkPEpTR2xvYmFsRGF0YT4gew0KKyAgICBjbGFzcyBKU0dsb2JhbERhdGEg
OiBwdWJsaWMgUmVmQ291bnRlZDxKU0dsb2JhbERhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NC
YXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVkSW5zdGFuY2VF
eGlzdHMoKTsNCiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNlKCk7
DQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMCw2ICszMCw3IEBADQogI2luY2x1ZGUg
IlJlZ0V4cE9iamVjdC5oIg0KICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCINCiAjaW5jbHVk
ZSAiUmVnRXhwLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNw
YWNlIEpTQyB7DQogDQpAQCAtODgsNyArODksNyBAQA0KIEBlbmQNCiAqLw0KIA0KLXN0cnVjdCBS
ZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUgew0KK3N0cnVjdCBSZWdFeHBDb25zdHJ1Y3RvclByaXZh
dGUgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgLy8gR2xvYmFsIHNlYXJjaCBj
YWNoZSAvIHNldHRpbmdzDQogICAgIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSgpDQogICAgICAg
ICA6IGxhc3ROdW1TdWJQYXR0ZXJucygwKQ0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNTEsNiArNTEsOCBAQA0K
ICNpbmNsdWRlICJQcm9maWxlclNlcnZlci5oIg0KICNlbmRpZg0KIA0KKyNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPg0KKw0KIHVzaW5nIG5hbWVzcGFjZSBXVEY7DQogDQogbmFtZXNwYWNl
IEpTQyB7DQpAQCAtNjYsMTMgKzY4LDEzIEBADQogSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEo
Ym9vbCBpc1NoYXJlZCkNCiAgICAgOiBtYWNoaW5lKG5ldyBNYWNoaW5lKQ0KICAgICAsIGV4Y2Vw
dGlvbihub1ZhbHVlKCkpDQotICAgICwgYXJyYXlUYWJsZShuZXcgSGFzaFRhYmxlKEpTQzo6YXJy
YXlUYWJsZSkpDQotICAgICwgZGF0ZVRhYmxlKG5ldyBIYXNoVGFibGUoSlNDOjpkYXRlVGFibGUp
KQ0KLSAgICAsIG1hdGhUYWJsZShuZXcgSGFzaFRhYmxlKEpTQzo6bWF0aFRhYmxlKSkNCi0gICAg
LCBudW1iZXJUYWJsZShuZXcgSGFzaFRhYmxlKEpTQzo6bnVtYmVyVGFibGUpKQ0KLSAgICAsIHJl
Z0V4cFRhYmxlKG5ldyBIYXNoVGFibGUoSlNDOjpyZWdFeHBUYWJsZSkpDQotICAgICwgcmVnRXhw
Q29uc3RydWN0b3JUYWJsZShuZXcgSGFzaFRhYmxlKEpTQzo6cmVnRXhwQ29uc3RydWN0b3JUYWJs
ZSkpDQotICAgICwgc3RyaW5nVGFibGUobmV3IEhhc2hUYWJsZShKU0M6OnN0cmluZ1RhYmxlKSkN
CisgICAgLCBhcnJheVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OmFycmF5VGFibGUpKQ0K
KyAgICAsIGRhdGVUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpkYXRlVGFibGUpKQ0KKyAg
ICAsIG1hdGhUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjptYXRoVGFibGUpKQ0KKyAgICAs
IG51bWJlclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Om51bWJlclRhYmxlKSkNCisgICAg
LCByZWdFeHBUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdFeHBUYWJsZSkpDQorICAg
ICwgcmVnRXhwQ29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdFeHBD
b25zdHJ1Y3RvclRhYmxlKSkNCisgICAgLCBzdHJpbmdUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4o
SlNDOjpzdHJpbmdUYWJsZSkpDQogICAgICwgYWN0aXZhdGlvblN0cnVjdHVyZUlEKEpTQWN0aXZh
dGlvbjo6Y3JlYXRlU3RydWN0dXJlSUQoanNOdWxsKCkpKQ0KICAgICAsIGludGVycnVwdGVkRXhl
Y3V0aW9uRXJyb3JTdHJ1Y3R1cmUoSlNPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZUlEKGpzTnVsbCgp
KSkNCiAgICAgLCBzdGF0aWNTY29wZVN0cnVjdHVyZUlEKEpTU3RhdGljU2NvcGVPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZUlEKGpzTnVsbCgpKSkNCkBAIC0xMTYsMTMgKzExOCwxMyBAQA0KICAgICBy
ZWdFeHBUYWJsZS0+ZGVsZXRlVGFibGUoKTsNCiAgICAgcmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+
ZGVsZXRlVGFibGUoKTsNCiAgICAgc3RyaW5nVGFibGUtPmRlbGV0ZVRhYmxlKCk7DQotICAgIGRl
bGV0ZSBhcnJheVRhYmxlOw0KLSAgICBkZWxldGUgZGF0ZVRhYmxlOw0KLSAgICBkZWxldGUgbWF0
aFRhYmxlOw0KLSAgICBkZWxldGUgbnVtYmVyVGFibGU7DQotICAgIGRlbGV0ZSByZWdFeHBUYWJs
ZTsNCi0gICAgZGVsZXRlIHJlZ0V4cENvbnN0cnVjdG9yVGFibGU7DQotICAgIGRlbGV0ZSBzdHJp
bmdUYWJsZTsNCisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KGFycmF5VGFi
bGUpKTsNCisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KGRhdGVUYWJsZSkp
Ow0KKyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4obWF0aFRhYmxlKSk7DQor
ICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihudW1iZXJUYWJsZSkpOw0KKyAg
ICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocmVnRXhwVGFibGUpKTsNCisgICAg
ZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHJlZ0V4cENvbnN0cnVjdG9yVGFibGUp
KTsNCisgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHN0cmluZ1RhYmxlKSk7
DQogDQogICAgIGRlbGV0ZSBwYXJzZXI7DQogICAgIGRlbGV0ZSBsZXhlcjsNCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTI2LDYgKzI2LDcgQEANCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIg0KICNpbmNs
dWRlICJOdW1iZXJQcm90b3R5cGUuaCINCiAjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBlLmgiDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
DQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4NCiANCkBAIC01Myw3ICs1NCw3IEBADQogICAgIHBy
b3RlY3RlZDoNCiAgICAgICAgIHVzaW5nIEpTVmFyaWFibGVPYmplY3Q6OkpTVmFyaWFibGVPYmpl
Y3REYXRhOw0KIA0KLSAgICAgICAgc3RydWN0IEpTR2xvYmFsT2JqZWN0RGF0YSA6IHB1YmxpYyBK
U1ZhcmlhYmxlT2JqZWN0RGF0YSB7DQorICAgICAgICBzdHJ1Y3QgSlNHbG9iYWxPYmplY3REYXRh
IDogcHVibGljIEpTVmFyaWFibGVPYmplY3REYXRhLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNl
IHsNCiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdERhdGEoKQ0KICAgICAgICAgICAgICAgICA6
IEpTVmFyaWFibGVPYmplY3REYXRhKCZzeW1ib2xUYWJsZSwgMCkNCiAgICAgICAgICAgICAgICAg
LCByZWdpc3RlckFycmF5U2l6ZSgwKQ0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjgsNiArMjgsNyBAQA0KICNpbmNsdWRlICJKU0ltbWVkaWF0ZS5o
Ig0KICNpbmNsdWRlICJVU3RyaW5nLmgiDQogI2luY2x1ZGUgPHN0ZGRlZi5oPiAvLyBmb3Igc2l6
ZV90DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogLy8gVGhlIG1hZ2ljIG51
bWJlciAweDQwMDAgaXMgbm90IGltcG9ydGFudCBoZXJlLCBpdCBpcyBiZWluZyBzdWJ0cmFjdGVk
IGJhY2sgb3V0IChhdm9pZGluZyB1c2luZyB6ZXJvIHNpbmNlIHRoaXMNCiAvLyBjYW4gaGF2ZSB1
bmV4cGVjdGVkIGVmZmVjdHMgaW4gdGhpcyB0eXBlIG9mIG1hY3JvLCBwYXJ0aWN1bGFybHkgd2hl
cmUgbXVsdGlwbGUtaW5oZXJpdGFuY2UgaXMgaW52b2x2ZWQpLg0KQEAgLTQ1LDcgKzQ2LDcgQEAN
CiANCiAgICAgZW51bSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHsgTm9QcmVmZXJlbmNlLCBQcmVm
ZXJOdW1iZXIsIFByZWZlclN0cmluZyB9Ow0KIA0KLSAgICBjbGFzcyBKU1ZhbHVlIDogTm9uY29w
eWFibGUgew0KKyAgICBjbGFzcyBKU1ZhbHVlIDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZh
c3RBbGxvY0Jhc2Ugew0KICAgICBwcm90ZWN0ZWQ6DQogICAgICAgICBKU1ZhbHVlKCkgeyB9DQog
ICAgICAgICB2aXJ0dWFsIH5KU1ZhbHVlKCkgeyB9DQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZUNoYWluLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMiw2ICsyMiw3IEBADQogI2RlZmlu
ZSBTY29wZUNoYWluX2gNCiANCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4NCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgSlNDIHsNCiANCkBAIC0zMCw3
ICszMSw3IEBADQogICAgIGNsYXNzIEpTT2JqZWN0Ow0KICAgICBjbGFzcyBTY29wZUNoYWluSXRl
cmF0b3I7DQogICAgIA0KLSAgICBjbGFzcyBTY29wZUNoYWluTm9kZSB7DQorICAgIGNsYXNzIFNj
b3BlQ2hhaW5Ob2RlIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoN
CiAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCog
b2JqZWN0LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBnbG9iYWxUaGlzKQ0K
ICAgICAgICAgICAgIDogbmV4dChuZXh0KQ0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9xdC9N
YWluVGhyZWFkUXQuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL3F0L01h
aW5UaHJlYWRRdC5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9x
dC9NYWluVGhyZWFkUXQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsNiArMzAsNyBAQA0KIA0K
ICNpbmNsdWRlICJjb25maWcuaCINCiAjaW5jbHVkZSAiTWFpblRocmVhZC5oIg0KKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KICNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4NCiAj
aW5jbHVkZSA8UXRDb3JlL1FDb3JlQXBwbGljYXRpb24+DQpAQCAtMzcsNyArMzgsNyBAQA0KIA0K
IG5hbWVzcGFjZSBXVEYgew0KIA0KLWNsYXNzIE1haW5UaHJlYWRJbnZva2VyIDogcHVibGljIFFP
YmplY3Qgew0KK2NsYXNzIE1haW5UaHJlYWRJbnZva2VyIDogcHVibGljIFFPYmplY3QsIHB1Ymxp
YyBGYXN0QWxsb2NCYXNlIHsNCiAgICAgUV9PQkpFQ1QNCiBwdWJsaWM6DQogICAgIE1haW5UaHJl
YWRJbnZva2VyKCk7DQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hTZXQuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNoU2V0LmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNoU2V0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMiw2
ICsyMiw3IEBADQogI2RlZmluZSBXVEZfSGFzaFNldF9oDQogDQogI2luY2x1ZGUgIkhhc2hUYWJs
ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXVEYg
ew0KIA0KQEAgLTMyLDcgKzMzLDcgQEANCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IElkZW50aXR5RXh0cmFjdG9yOw0KIA0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywg
dHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFzaCwN
Ci0gICAgICAgIHR5cGVuYW1lIFRyYWl0c0FyZyA9IEhhc2hUcmFpdHM8VmFsdWVBcmc+ID4gY2xh
c3MgSGFzaFNldCB7DQorICAgICAgICB0eXBlbmFtZSBUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFZh
bHVlQXJnPiA+IGNsYXNzIEhhc2hTZXQgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAg
ICAgcHJpdmF0ZToNCiAgICAgICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVuY3Rpb25zOw0KICAg
ICAgICAgdHlwZWRlZiBUcmFpdHNBcmcgVmFsdWVUcmFpdHM7DQpJbmRleDogSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZy5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
aW5nLmgJKHdvcmtpbmcgY29weSkNCkBAIC02MCw2ICs2MCw3IEBADQogI2RlZmluZSBUaHJlYWRp
bmdfaA0KIA0KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+DQogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPg0KIA0KQEAgLTEzOSw3ICsxNDAsNyBAQA0KIHR5cGVkZWYgdm9pZCogUGxh
dGZvcm1Db25kaXRpb247DQogI2VuZGlmDQogICAgIA0KLWNsYXNzIE11dGV4IDogTm9uY29weWFi
bGUgew0KK2NsYXNzIE11dGV4IDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KIHB1YmxpYzoNCiAgICAgTXV0ZXgoKTsNCiAgICAgfk11dGV4KCk7DQpAQCAtMTU2LDcg
KzE1Nyw3IEBADQogDQogdHlwZWRlZiBMb2NrZXI8TXV0ZXg+IE11dGV4TG9ja2VyOw0KIA0KLWNs
YXNzIFRocmVhZENvbmRpdGlvbiA6IE5vbmNvcHlhYmxlIHsNCitjbGFzcyBUaHJlYWRDb25kaXRp
b24gOiBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0K
ICAgICBUaHJlYWRDb25kaXRpb24oKTsNCiAgICAgflRocmVhZENvbmRpdGlvbigpOw0KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdRdC5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUXQuY3BwCShyZXZpc2lvbiAzODMzNCkNCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUXQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzIsNiAr
MzIsNyBAQA0KICNpbmNsdWRlICJIYXNoTWFwLmgiDQogI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIN
CiAjaW5jbHVkZSAiTWF0aEV4dHJhcy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
Pg0KIA0KICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPg0KICNpbmNsdWRlIDxRTXV0ZXg+DQpA
QCAtNDAsNyArNDEsNyBAQA0KIA0KIG5hbWVzcGFjZSBXVEYgew0KIA0KLWNsYXNzIFRocmVhZFBy
aXZhdGUgOiBwdWJsaWMgUVRocmVhZCB7DQorY2xhc3MgVGhyZWFkUHJpdmF0ZSA6IHB1YmxpYyBR
VGhyZWFkLCBwdWJsaWMgRmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBUaHJlYWRQcml2
YXRlKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEpOw0KICAgICB2b2lkIHJ1
bigpOw0KQEAgLTE5MSwxMyArMTkyLDEzIEBADQogfQ0KIA0KIE11dGV4OjpNdXRleCgpDQotICAg
IDogbV9tdXRleChuZXcgUU11dGV4KCkpDQorICAgIDogbV9tdXRleChmYXN0TmV3PFFNdXRleD4o
KSkNCiB7DQogfQ0KIA0KIE11dGV4Ojp+TXV0ZXgoKQ0KIHsNCi0gICAgZGVsZXRlIG1fbXV0ZXg7
DQorICAgIGZhc3REZWxldGUobV9tdXRleCk7DQogfQ0KIA0KIHZvaWQgTXV0ZXg6OmxvY2soKQ0K
QEAgLTIxNiwxMyArMjE3LDEzIEBADQogfQ0KIA0KIFRocmVhZENvbmRpdGlvbjo6VGhyZWFkQ29u
ZGl0aW9uKCkNCi0gICAgOiBtX2NvbmRpdGlvbihuZXcgUVdhaXRDb25kaXRpb24oKSkNCisgICAg
OiBtX2NvbmRpdGlvbihmYXN0TmV3PFFXYWl0Q29uZGl0aW9uPigpKQ0KIHsNCiB9DQogDQogVGhy
ZWFkQ29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkNCiB7DQotICAgIGRlbGV0ZSBtX2NvbmRp
dGlvbjsNCisgICAgZmFzdERlbGV0ZShtX2NvbmRpdGlvbik7DQogfQ0KIA0KIHZvaWQgVGhyZWFk
Q29uZGl0aW9uOjp3YWl0KE11dGV4JiBtdXRleCkNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYv
VHlwZVRyYWl0cy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1R5cGVUcmFp
dHMuaAkocmV2aXNpb24gMCkNCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVHlwZVRyYWl0cy5oCShy
ZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzNDUgQEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMN
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8NCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0KKyAqDQorICovDQorDQor
I2lmbmRlZiBXVEZfVHlwZVRyYWl0c19oDQorI2RlZmluZSBXVEZfVHlwZVRyYWl0c19oDQorDQor
DQorLy8gV2UgZGVmaW5lIHR5cGUgdHJhaXRzIHRoYXQgYWxsb3cgdXMgdG8gb3B0aW1pemUgdGVt
cGxhdGVkIGFycmF5IG5ldy9kZWxldGUuDQorLy8gVGhlc2UgdHlwZSB0cmFpdHMgbWF0Y2ggdGhl
IEMrKzB4IHdvcmtpbmcgc3RhbmRhcmQgZGVmaW5lZCBpbiBzZWN0aW9uIDIwLjQuMi4NCisvLyBU
aGUgdHlwZXMgKGludGVncmFsX2NvbnN0YW50LCB0cnVlX3R5cGUsIGV0Yy4pIGRlZmluZWQgaGVy
ZSBhcmUgYmFzZWQgb24gDQorLy8gdGhlIEMrKzB4IHR5cGVfdHJhaXRzIHR5cGVzIGFuZCB1c2Ug
dGhlIHNhbWUgbmFtaW5nIGFuZCBjb252ZW50aW9ucy4gDQorLy8gUmVjZW50IHZlcnNpb25zIG9m
IHNvbWUgY29tcGlsZXJzIGFuZCBzdGFuZGFyZCBsaWJyYXJpZXMgaGF2ZSBzdXBwb3J0IGZvciB0
eXBlIHRyYWl0cy4NCisNCisjaWYgKGRlZmluZWQoX19HTElCQ1hYX18pICYmIChfX0dMSUJDWFhf
XyA+PSAyMDA3MDcyNCkpIHx8IChkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTYw
MCkpDQorDQorLy8gR0NDJ3MgbGlic3RkYysrIDIwMDcwNzI0IGFuZCBsYXRlciBhbmQgVkMxMCAo
VlMyMDEwKSBhbmQgbGF0ZXIgc3VwcG9ydCBDKysgVFIxIHR5cGVfdHJhaXRzLg0KKyNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4NCisNCituYW1lc3BhY2UgV1RGIHsNCisgICAgdXNpbmcgc3RkOjppc19p
bnRlZ3JhbDsNCisgICAgdXNpbmcgc3RkOjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjsNCisgICAg
dXNpbmcgc3RkOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOw0KK30NCisNCisjZWxzZQ0KKw0KK25h
bWVzcGFjZSBXVEYgew0KKw0KKyAgICAvLyBUaGlzIGNvbXBpbGVyIGRvZXNuJ3QgcHJvdmlkZSB0
eXBlIHRyYWl0cywgc28gd2UgcHJvdmlkZSBhIHNldC4NCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IGlzX2ludGVncmFsIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsg
fTsNCisNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Ym9vbD4geyBzdGF0aWMg
Y29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2lu
dGVncmFsPGNvbnN0IGJvb2w+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0K
KyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx2b2xhdGlsZSBib29sPiB7IHN0YXRp
YyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNf
aW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUgYm9vbD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9
IHRydWU7IH07DQorDQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNoYXI+IHsg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBpc19pbnRlZ3JhbDxjb25zdCBjaGFyPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1
ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgY2hhcj4g
eyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IGlzX2ludGVncmFsPGNvbnN0IHZvbGF0aWxlIGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wg
dmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxz
aWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRl
bXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IHNpZ25lZCBjaGFyPiB7IHN0YXRpYyBj
b25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50
ZWdyYWw8dm9sYXRpbGUgc2lnbmVkIGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0
cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB2b2xhdGls
ZSBzaWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorDQor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPHVuc2lnbmVkIGNoYXI+IHsgc3RhdGlj
IGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19p
bnRlZ3JhbDxjb25zdCB1bnNpZ25lZCBjaGFyPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0g
dHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgdW5z
aWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRl
bXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGNoYXI+
IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBpc19pbnRlZ3JhbDxzaG9ydD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRy
dWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IHNob3J0PiB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgc2hvcnQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUg
PSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB2b2xh
dGlsZSBzaG9ydD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorDQorICAg
IHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPHVuc2lnbmVkIHNob3J0PiB7IHN0YXRpYyBj
b25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50
ZWdyYWw8Y29uc3QgdW5zaWduZWQgc2hvcnQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0
cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx2b2xhdGlsZSB1bnNp
Z25lZCBzaG9ydD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRl
bXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0
PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisNCisgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8aW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1
ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3QgaW50PiB7IHN0
YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
aXNfaW50ZWdyYWw8dm9sYXRpbGUgaW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1
ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUg
aW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisNCisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dW5zaWduZWQgaW50PiB7IHN0YXRpYyBjb25zdCBib29s
IHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29u
c3QgdW5zaWduZWQgaW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisg
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgdW5zaWduZWQgaW50PiB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgaXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgaW50PiB7IHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50
ZWdyYWw8bG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRl
bXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IGxvbmc+IHsgc3RhdGljIGNvbnN0IGJv
b2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx2
b2xhdGlsZSBsb25nPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUgbG9uZz4geyBzdGF0
aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorDQorICAgIHRlbXBsYXRlPD4gc3RydWN0
IGlzX2ludGVncmFsPHVuc2lnbmVkIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0
cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB1bnNpZ25l
ZCBsb25nPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgdW5zaWduZWQgbG9uZz4geyBzdGF0aWMg
Y29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2lu
dGVncmFsPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wg
dmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxs
b25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0
IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3Jh
bDx2b2xhdGlsZSBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB2b2xhdGlsZSBsb25n
IGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx1bnNpZ25lZCBsb25nIGxvbmc+IHsgc3RhdGljIGNv
bnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRl
Z3JhbDxjb25zdCB1bnNpZ25lZCBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUg
PSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx2b2xhdGlsZSB1
bnNpZ25lZCBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0K
KyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB2b2xhdGlsZSB1bnNpZ25l
ZCBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyNp
ZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkN
CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8d2NoYXJfdD4geyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVn
cmFsPGNvbnN0IHdjaGFyX3Q+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0K
KyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx2b2xhdGlsZSB3Y2hhcl90PiB7IHN0
YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
aXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUgd2NoYXJfdD4geyBzdGF0aWMgY29uc3QgYm9vbCB2
YWx1ZSA9IHRydWU7IH07DQorI2VuZGlmDQorDQorDQorICAgIC8vIFRoaXMgY29tcGlsZXIgZG9l
c24ndCBwcm92aWRlIHR5cGUgdHJhaXRzLCBzbyB3ZSBwcm92aWRlIGEgYmFzaWMgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3INCisgICAgLy8gYW5kIGhhc190cml2aWFsX2Rlc3RydWN0b3IgZGVmaW5p
dGlvbi4gVGhlIGRlZmluaXRpb25zIGhlcmUgaW5jbHVkZSBtb3N0IGJ1aWx0LWluIA0KKyAgICAv
LyBzY2FsYXIgdHlwZXMgYnV0IGRvIG5vdCBpbmNsdWRlIFBPRCBzdHJ1Y3RzIGFuZCBjbGFzc2Vz
LiBGb3IgdGhlIGludGVuZGVkIHB1cnBvc2VzIG9mIA0KKyAgICAvLyB0eXBlX3RyYWl0cyB0aGlz
IHJlc3VsdHMgY29ycmVjdCBidXQgcG90ZW50aWFsbHkgbGVzcyBlZmZpY2llbnQgY29kZS4NCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFQgdj4NCisgICAgc3RydWN0IGludGVncmFsX2NvbnN0
YW50IHsNCisgICAgICAgIHN0YXRpYyBjb25zdCBUIHZhbHVlID0gdjsNCisgICAgICAgIHR5cGVk
ZWYgVCB2YWx1ZV90eXBlOw0KKyAgICAgICAgdHlwZWRlZiBpbnRlZ3JhbF9jb25zdGFudDxULCB2
PiB0eXBlOw0KKyAgICB9Ow0KKw0KKyAgICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2ws
IHRydWU+ICB0cnVlX3R5cGU7DQorICAgIHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwg
ZmFsc2U+IGZhbHNlX3R5cGU7DQorDQorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZF
UiA+PSAxNDAwKQ0KKyAgICAvLyBWQzggKFZTMjAwNSkgYW5kIGxhdGVyIGhhdmUgYnVpbHQtaW4g
Y29tcGlsZXIgc3VwcG9ydCBmb3IgaGFzX3RyaXZpYWxfY29uc3RydWN0b3IgLyBoYXNfdHJpdmlh
bF9kZXN0cnVjdG9yLCANCisgICAgLy8gYnV0IGZvciBzb21lIHVuZXhwbGFpbmVkIHJlYXNvbiBp
dCBkb2Vzbid0IHdvcmsgb24gYnVpbHQtaW4gdHlwZXMuDQorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3IgOiBwdWJsaWMgaW50ZWdyYWxfY29u
c3RhbnQ8Ym9vbCwgX19oYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcihUKT57IH07DQorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvciA6IHB1YmxpYyBp
bnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2hhc190cml2aWFsX2Rlc3RydWN0b3IoVCk+eyB9Ow0K
KyNlbHNlDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3IgOiBwdWJsaWMgZmFsc2VfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yIDogcHVibGljIGZhbHNlX3R5cGV7IH07
DQorI2VuZGlmDQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3I8VCo+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQqPiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25z
dHJ1Y3RvcjxmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgZmxvYXQ+IDogcHVibGljIHRydWVf
dHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9y
PHZvbGF0aWxlIGZsb2F0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBmbG9hdD4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3I8ZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBkb3VibGU+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Nv
bnN0cnVjdG9yPHZvbGF0aWxlIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUg
ZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxsb25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29u
c3QgbG9uZyBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHZvbGF0aWxlIGxvbmcgZG91YmxlPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBsb25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8
dW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgY2hhcj4gOiBwdWJs
aWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9s
YXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dW5zaWduZWQgc2hvcnQ+IDog
cHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2NvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx2b2xhdGls
ZSB1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQg
c2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29u
c3QgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBpbnQ+IDog
cHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2NvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0
b3I8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgbG9uZz4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29uc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qg
dm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dW5zaWduZWQgbG9uZyBs
b25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVj
dG9yPHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9s
YXRpbGUgdW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgY2hhcj4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsN
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHZvbGF0aWxl
IHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgY2hhcj4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3Ry
aXZpYWxfY29uc3RydWN0b3I8c2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWdu
ZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBzaG9ydD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3Ry
dWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWdu
ZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx2
b2xhdGlsZSBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQg
aW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qg
c2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBsb25nPiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25z
dHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8c2ln
bmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGxvbmcgbG9uZz4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29uc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29u
c3Qgdm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Ym9vbD4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29uc3RydWN0b3I8Y29uc3QgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dm9sYXRpbGUgYm9vbD4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
Kw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y2hhcj4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3I8Y29uc3QgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dm9sYXRpbGUgY2hhcj4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
Ow0KKw0KKyAgICAjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hB
Ul9UX0RFRklORUQpDQorICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3I8d2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICAgICAgdGVtcGxh
dGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHdjaGFyX3Q+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlh
bF9jb25zdHJ1Y3Rvcjx2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQor
ICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qg
dm9sYXRpbGUgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICAjZW5kaWYNCisN
CisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8ZmxvYXQ+
IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2
aWFsX2Rlc3RydWN0b3I8Y29uc3QgZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAg
dGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dm9sYXRpbGUgZmxvYXQ+
IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2
aWFsX2Rlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsg
fTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8ZG91
YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSBk
b3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhh
c190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgZG91YmxlPiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGxvbmcgZG91YmxlPiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPHZvbGF0aWxlIGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxl
IGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0
b3I8Y29uc3QgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBj
aGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGNoYXI+IDogcHVibGlj
IHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rl
c3RydWN0b3I8dW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgc2hv
cnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190
cml2aWFsX2Rlc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVf
dHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8
Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisN
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQg
aW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xh
dGlsZSB1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQg
aW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsg
fTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qg
dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBsb25nPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9k
ZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlw
ZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8
dW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
Zz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3Ry
aXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0
b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNp
Z25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9y
PHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25l
ZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25z
dCBzaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9k
ZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxz
aWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVf
dHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8
dm9sYXRpbGUgc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQg
aW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNp
Z25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQor
DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBs
b25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1
Y3Rvcjx2b2xhdGlsZSBzaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0
aWxlIHNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Ym9vbD4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rv
cjxjb25zdCBib29sPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZvbGF0aWxlIGJvb2w+IDogcHVibGljIHRydWVf
dHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8
Y29uc3Qgdm9sYXRpbGUgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxjaGFyPiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9y
PGNvbnN0IGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxj
b25zdCB2b2xhdGlsZSBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgICNpZiAh
ZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkNCisg
ICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHdjaGFyX3Q+
IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsgfTsN
CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZvbGF0
aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHdjaGFyX3Q+IDog
cHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgI2VuZGlmDQorDQorfSAvLyBuYW1lc3BhY2UgV1RG
DQorDQorDQorI2VuZGlmICAvLyBfX0dMSUJDWFhfXywgZXRjLg0KKw0KKw0KK25hbWVzcGFjZSBX
VEYgew0KKw0KKyAgICBDT01QSUxFX0FTU0VSVChpc19pbnRlZ3JhbDxib29sPjo6dmFsdWUsIFdU
Rl9Jc0ludGVnZXJfYm9vbF90cnVlKTsNCisgICAgQ09NUElMRV9BU1NFUlQoaXNfaW50ZWdyYWw8
Y29uc3QgYm9vbD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2Jvb2xfdHJ1ZSk7DQorICAgIENPTVBJ
TEVfQVNTRVJUKGlzX2ludGVncmFsPHZvbGF0aWxlIGJvb2w+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdl
cl9ib29sX3RydWUpOw0KKyAgICBDT01QSUxFX0FTU0VSVChpc19pbnRlZ3JhbDxjb25zdCB2b2xh
dGlsZSBib29sPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfYm9vbF90cnVlKTsNCisgICAgQ09NUElM
RV9BU1NFUlQoaXNfaW50ZWdyYWw8Y2hhcj46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2NoYXJfdHJ1
ZSk7DQorICAgIENPTVBJTEVfQVNTRVJUKGlzX2ludGVncmFsPHNpZ25lZCBjaGFyPjo6dmFsdWUs
IFdURl9Jc0ludGVnZXJfc2lnbmVkX2NoYXJfdHJ1ZSk7DQorICAgIENPTVBJTEVfQVNTRVJUKGlz
X2ludGVncmFsPHVuc2lnbmVkIGNoYXI+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl91bnNpZ25lZF9j
aGFyX3RydWUpOw0KKyAgICBDT01QSUxFX0FTU0VSVChpc19pbnRlZ3JhbDxzaG9ydD46OnZhbHVl
LCBXVEZfSXNJbnRlZ2VyX3Nob3J0X3RydWUpOw0KKyAgICBDT01QSUxFX0FTU0VSVChpc19pbnRl
Z3JhbDx1bnNpZ25lZCBzaG9ydD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX3Nob3J0
X3RydWUpOw0KKyAgICBDT01QSUxFX0FTU0VSVChpc19pbnRlZ3JhbDxpbnQ+Ojp2YWx1ZSwgV1RG
X0lzSW50ZWdlcl9pbnRfdHJ1ZSk7DQorICAgIENPTVBJTEVfQVNTRVJUKGlzX2ludGVncmFsPHVu
c2lnbmVkIGludD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX2ludF90cnVlKTsNCisg
ICAgQ09NUElMRV9BU1NFUlQoaXNfaW50ZWdyYWw8bG9uZz46OnZhbHVlLCBXVEZfSXNJbnRlZ2Vy
X2xvbmdfdHJ1ZSk7DQorICAgIENPTVBJTEVfQVNTRVJUKGlzX2ludGVncmFsPHVuc2lnbmVkIGxv
bmc+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl91bnNpZ25lZF9sb25nX3RydWUpOw0KKyAgICBDT01Q
SUxFX0FTU0VSVChpc19pbnRlZ3JhbDxsb25nIGxvbmc+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9s
b25nX2xvbmdfdHJ1ZSk7DQorICAgIENPTVBJTEVfQVNTRVJUKGlzX2ludGVncmFsPHVuc2lnbmVk
IGxvbmcgbG9uZz46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX2xvbmdfbG9uZ190cnVl
KTsNCisNCisjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9U
X0RFRklORUQpDQorICAgIENPTVBJTEVfQVNTRVJUKGlzX2ludGVncmFsPHdjaGFyX3Q+Ojp2YWx1
ZSwgV1RGX0lzSW50ZWdlcl93Y2hhcl90X3RydWUpOw0KKyNlbmRpZg0KKw0KKyAgICBDT01QSUxF
X0FTU0VSVCghaXNfaW50ZWdyYWw8Y2hhcio+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9jaGFyX3Bv
aW50ZXJfZmFsc2UpOw0KKyAgICBDT01QSUxFX0FTU0VSVCghaXNfaW50ZWdyYWw8Y29uc3QgY2hh
cio+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9jb25zdF9jaGFyX3BvaW50ZXJfZmFsc2UpOw0KKyAg
ICBDT01QSUxFX0FTU0VSVCghaXNfaW50ZWdyYWw8dm9sYXRpbGUgY2hhcio+Ojp2YWx1ZSwgV1RG
X0lzSW50ZWdlcl92b2xhdGlsZV9jaGFyX3BvaW50ZXJfX2ZhbHNlKTsNCisgICAgQ09NUElMRV9B
U1NFUlQoIWlzX2ludGVncmFsPGRvdWJsZT46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2RvdWJsZV9m
YWxzZSk7DQorICAgIENPTVBJTEVfQVNTRVJUKCFpc19pbnRlZ3JhbDxmbG9hdD46OnZhbHVlLCBX
VEZfSXNJbnRlZ2VyX2Zsb2F0X2ZhbHNlKTsNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCisj
ZW5kaWYgLy8gV1RGX1R5cGVUcmFpdHNfaA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNo
Q291bnRlZFNldC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hDb3Vu
dGVkU2V0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNoQ291
bnRlZFNldC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjUsMTEgKzI1LDEyIEBADQogI2luY2x1ZGUg
IkFzc2VydGlvbnMuaCINCiAjaW5jbHVkZSAiSGFzaE1hcC5oIg0KICNpbmNsdWRlICJWZWN0b3Iu
aCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV1RGIHsN
CiANCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMg
PSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZT46Okhhc2gsDQotICAgICAgICB0eXBlbmFtZSBU
cmFpdHMgPSBIYXNoVHJhaXRzPFZhbHVlPiA+IGNsYXNzIEhhc2hDb3VudGVkU2V0IHsNCisgICAg
ICAgIHR5cGVuYW1lIFRyYWl0cyA9IEhhc2hUcmFpdHM8VmFsdWU+ID4gY2xhc3MgSGFzaENvdW50
ZWRTZXQgOiBwdWJsaWMgRmFzdEFsbG9jQmFzZSB7DQogICAgIHByaXZhdGU6DQogICAgICAgICB0
eXBlZGVmIEhhc2hNYXA8VmFsdWUsIHVuc2lnbmVkLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+IElt
cGxUeXBlOw0KICAgICBwdWJsaWM6DQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxs
b2MuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgJKHdvcmtp
bmcgY29weSkNCkBAIC01MSw2ICs1MSw0MyBAQA0KIA0KICAgICB2b2lkIHJlbGVhc2VGYXN0TWFs
bG9jRnJlZU1lbW9yeSgpOw0KIA0KKw0KKyAgICAvLyBUaGlzIGRlZmluZXMgYSB0eXBlIHdoaWNo
IGhvbGRzIGFuIHVuc2lnbmVkIGludGVnZXIgYW5kIGlzIHRoZSBzYW1lIA0KKyAgICAvLyBzaXpl
IGFzIHRoZSBtaW5pbWFsbHkgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbi4gSXQgY2FuIGJlIHVz
ZWQgYXMgDQorICAgIC8vIGEgc2l6ZSBwcmVmaXggZm9yIGFycmF5IGFsbG9jYXRpb25zLg0KKyAg
ICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBBbGlnbmVkQWxsb2NTaXplOw0KKw0KKyNpZiBF
TkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisNCisgICAgZW51bSBBbGxvY1R5
cGUgeyAgICAgICAgICAgIC8vIFN0YXJ0IHdpdGggNjMgaW5zdGVhZCBvZiB6ZXJvLCBiZWNhdXNl
IHplcm8gaXMgY29tbW9uLg0KKyAgICAgICAgQWxsb2NUeXBlTWFsbG9jID0gMTAwLCAgLy8gRW5j
b21wYXNzZXMgZmFzdE1hbGxvYywgZmFzdFplcm9lZE1hbGxvYywgZmFzdENhbGxvYywgZmFzdFJl
YWxsb2MuDQorICAgICAgICBBbGxvY1R5cGVDbGFzc05ldywgICAgICAvLyBFbmNvbXBhc3NlcyBj
bGFzcyBvcGVyYXRvciBuZXcgZnJvbSBGYXN0QWxsb2NCYXNlLiANCisgICAgICAgIEFsbG9jVHlw
ZUNsYXNzTmV3QXJyYXksIC8vIEVuY29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ld1tdIGZyb20g
RmFzdEFsbG9jQmFzZS4gDQorICAgICAgICBBbGxvY1R5cGVGYXN0TmV3LCAgICAgICAvLyBFbmNv
bXBhc3NlcyBmYXN0TmV3Lg0KKyAgICAgICAgQWxsb2NUeXBlRmFzdE5ld0FycmF5LCAgLy8gRW5j
b21wYXNzZXMgZmFzdE5ld0FycmF5Lg0KKyAgICAgICAgQWxsb2NUeXBlTmV3LCAgICAgICAgICAg
Ly8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ldy4NCisgICAgICAgIEFsbG9jVHlwZU5l
d0FycmF5ICAgICAgIC8vIEVuY29tcGFzc2VzIGdsb2JhbCBvcGVyYXRvciBuZXdbXS4NCisgICAg
fTsNCisNCisgICAgaW5saW5lIEFsbG9jVHlwZSBnZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9u
VHlwZShjb25zdCB2b2lkKiBwKQ0KKyAgICB7DQorICAgICAgICBjb25zdCBjaGFyKiBwVHlwZSA9
IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwKSAtIHNpemVvZihBbGlnbmVkQWxsb2NTaXplKTsN
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBbGxvY1R5cGU+KCpwVHlwZSk7DQorICAgIH0N
CisNCisgICAgaW5saW5lIHZvaWQgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUodm9p
ZCogcCwgQWxsb2NUeXBlIGFsbG9jVHlwZSkNCisgICAgew0KKyAgICAgICAgY2hhciogcFR5cGUg
PSBzdGF0aWNfY2FzdDxjaGFyKj4ocCkgLSBzaXplb2YoQWxpZ25lZEFsbG9jU2l6ZSk7DQorICAg
ICAgICAqcFR5cGUgPSBzdGF0aWNfY2FzdDxjaGFyPihhbGxvY1R5cGUpOw0KKyAgICB9DQorDQor
ICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKiAvKnAqLykNCisgICAg
ew0KKyAgICAgICAgLy8gSGFuZGxlIGEgZGV0ZWN0ZWQgYWxsb2MvZnJlZSBtaXNtYXRjaC4NCisg
ICAgfQ0KKw0KKyNlbmRpZg0KKw0KIH0gLy8gbmFtZXNwYWNlIFdURg0KIA0KIHVzaW5nIFdURjo6
ZmFzdE1hbGxvYzsNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RBbGxvY0Jhc2UuaAkocmV2aXNp
b24gMCkNCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5oCShyZXZpc2lvbiAw
KQ0KQEAgLTAsMCArMSw0NDkgQEANCisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDog
NCAtKi0NCisNCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAwOCBQYXVsIFBlZHJpYW5hLiBBbGwg
cmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorICog
YXJlIG1ldDoNCisgKg0KKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0DQorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZg0KKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZDQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRA0KKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZDQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMNCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7DQorICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EDQorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YNCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKyAqLw0KKw0KKyNpZm5kZWYgV1RGX0Zh
c3RBbGxvY0Jhc2VfaA0KKyNkZWZpbmUgV1RGX0Zhc3RBbGxvY0Jhc2VfaA0KKw0KKy8vIFByb3Zp
ZGVzIGN1c3RvbWl6YWJsZSBvdmVycmlkZXMgb2YgZmFzdE1hbGxvYy9mYXN0RnJlZSBhbmQgb3Bl
cmF0b3IgbmV3L2RlbGV0ZQ0KKy8vDQorLy8gUHJvdmlkZWQgZnVuY3Rpb25hbGl0eToNCisvLyAg
ICBuYW1lc3BhY2UgV1RGIHsgDQorLy8gICAgICAgIGNsYXNzIEZhc3RBbGxvY0Jhc2U7DQorLy8N
CisvLyAgICAgICAgVCogICAgZmFzdE5ldzxUPigpOw0KKy8vICAgICAgICBUKiAgICBmYXN0TmV3
PFQ+KGFyZyk7DQorLy8gICAgICAgIFQqICAgIGZhc3ROZXc8VD4oYXJnLCBhcmcpOw0KKy8vICAg
ICAgICBUKiAgICBmYXN0TmV3QXJyYXk8VD4oY291bnQpOw0KKy8vICAgICAgICB2b2lkICBmYXN0
RGVsZXRlKFQqIHApOw0KKy8vICAgICAgICB2b2lkICBmYXN0RGVsZXRlQXJyYXkoVCogcCk7DQor
Ly8gICAgICAgIHZvaWQgIGZhc3ROb25OdWxsRGVsZXRlKFQqIHApOw0KKy8vICAgICAgICB2b2lk
ICBmYXN0Tm9uTnVsbERlbGV0ZUFycmF5KFQqIHApOw0KKy8vICAgIH0NCisvLw0KKy8vIEZhc3RE
ZWxldGUgYXNzdW1lcyB0aGF0IHRoZSB1bmRlcmx5aW5nIA0KKy8vDQorLy8gRXhhbXBsZSB1c2Fn
ZToNCisvLyAgICBjbGFzcyBXaWRnZXQgOiBwdWJsaWMgRmFzdEFsbG9jQmFzZSB7IC4uLiB9Ow0K
Ky8vDQorLy8gICAgY2hhciogY2hhclB0ciA9IGZhc3ROZXc8Y2hhcj4oKTsNCisvLyAgICBmYXN0
RGVsZXRlKGNoYXJQdHIpOw0KKy8vDQorLy8gICAgY2hhciogY2hhckFycmF5UHRyID0gZmFzdE5l
d0FycmF5PGNoYXI+KDM3KTsNCisvLyAgICBmYXN0RGVsZXRlQXJyYXkoY2hhckFycmF5UHRyKTsN
CisvLw0KKy8vICAgIHZvaWQqKiB2b2lkUHRyUHRyID0gZmFzdE5ldzx2b2lkKj4oKTsNCisvLyAg
ICBmYXN0RGVsZXRlKHZvaWRQdHJQdHIpOw0KKy8vDQorLy8gICAgdm9pZCoqIHZvaWRQdHJBcnJh
eVB0ciA9IGZhc3ROZXdBcnJheTx2b2lkKj4oMzcpOw0KKy8vICAgIGZhc3REZWxldGVBcnJheSh2
b2lkUHRyQXJyYXlQdHIpOw0KKy8vDQorLy8gICAgUE9EKiBwb2RQdHIgPSBmYXN0TmV3PFBPRD4o
KTsNCisvLyAgICBmYXN0RGVsZXRlKHBvZFB0cik7DQorLy8NCisvLyAgICBQT0QqIHBvZEFycmF5
UHRyID0gZmFzdE5ld0FycmF5PFBPRD4oMzcpOw0KKy8vICAgIGZhc3REZWxldGVBcnJheShwb2RB
cnJheVB0cik7DQorLy8NCisvLyAgICBPYmplY3QqIG9iamVjdFB0ciA9IGZhc3ROZXc8T2JqZWN0
PigpOw0KKy8vICAgIGZhc3REZWxldGUob2JqZWN0UHRyKTsNCisvLw0KKy8vICAgIE9iamVjdCog
b2JqZWN0QXJyYXlQdHIgPSBmYXN0TmV3QXJyYXk8T2JqZWN0PigzNyk7DQorLy8gICAgZmFzdERl
bGV0ZUFycmF5KG9iamVjdEFycmF5UHRyKTsNCisvLw0KKw0KKyNpbmNsdWRlIDxuZXc+DQorI2lu
Y2x1ZGUgPHN0ZGludC5oPg0KKyNpbmNsdWRlIDxzdGRsaWIuaD4NCisjaW5jbHVkZSA8c3RyaW5n
Lmg+DQorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+DQorI2luY2x1ZGUgPHd0Zi9UeXBlVHJhaXRzLmg+DQorDQorDQorbmFtZXNwYWNlIFdU
RiB7DQorDQorICAgIGNsYXNzIEZhc3RBbGxvY0Jhc2Ugew0KKyAgICBwdWJsaWM6DQorICAgICAg
ICAvLyBQbGFjZW1lbnQgb3BlcmF0b3IgbmV3Lg0KKyAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfQ0KKyAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9DQorDQorICAgICAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90IHNpemUpDQorICAgICAgICB7DQorICAgICAgICAgICAgdm9pZCog
cCA9IGZhc3RNYWxsb2Moc2l6ZSk7DQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJ
REFUSU9OKQ0KKyAgICAgICAgICAgIGlmIChwKQ0KKyAgICAgICAgICAgICAgICBzZXRGYXN0TWFs
bG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVDbGFzc05ldyk7DQorI2VuZGlmDQor
ICAgICAgICAgICAgcmV0dXJuIHA7DQorICAgICAgICB9DQorDQorICAgICAgICB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiBwKQ0KKyAgICAgICAgew0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0Nf
TUFUQ0hfVkFMSURBVElPTikNCisgICAgICAgICAgICBpZiAocCkgew0KKyAgICAgICAgICAgICAg
ICBpZiAoZ2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCkgIT0gQWxsb2NUeXBlQ2xh
c3NOZXcpDQorICAgICAgICAgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7DQor
ICAgICAgICAgICAgICAgIHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIEFsbG9j
VHlwZU1hbGxvYyk7ICAvLyBTZXQgaXQgdG8gdGhpcyBzbyB0aGF0IGZhc3RGcmVlIHRoaW5rcyBp
dCdzIE9LLg0KKyAgICAgICAgICAgIH0NCisjZW5kaWYNCisgICAgICAgICAgICBmYXN0RnJlZShw
KTsgIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIGEgbnVsbCBwb2ludGVyOyB0aGUgY29t
cGlsZXIgZG9lcyB0aGlzLg0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpDQorICAgICAgICB7DQorICAgICAgICAgICAgdm9pZCogcCA9IGZh
c3RNYWxsb2Moc2l6ZSk7DQorDQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFU
SU9OKQ0KKyAgICAgICAgICAgIGlmIChwKQ0KKyAgICAgICAgICAgICAgICBzZXRGYXN0TWFsbG9j
TWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsNCisjZW5kaWYN
CisgICAgICAgICAgICByZXR1cm4gcDsNCisgICAgICAgIH0NCisNCisgICAgICAgIHZvaWQgb3Bl
cmF0b3IgZGVsZXRlW10odm9pZCogcCkNCisgICAgICAgIHsNCisjaWYgRU5BQkxFKEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgICAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAg
ICAgICAgaWYgKGdldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHApICE9IEFsbG9jVHlw
ZUNsYXNzTmV3QXJyYXkpDQorICAgICAgICAgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hGYWls
ZWQocCk7DQorICAgICAgICAgICAgICAgIHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBl
KHAsIEFsbG9jVHlwZU1hbGxvYyk7ICAvLyBTZXQgaXQgdG8gdGhpcyBzbyB0aGF0IGZhc3RGcmVl
IHRoaW5rcyBpdCdzIE9LLg0KKyAgICAgICAgICAgIH0NCisjZW5kaWYNCisgICAgICAgICAgICBm
YXN0RnJlZShwKTsgIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIGEgbnVsbCBwb2ludGVy
OyB0aGUgY29tcGlsZXIgZG9lcyB0aGlzLg0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0KKw0KKyAg
ICAvLyBmYXN0TmV3IC8gZmFzdERlbGV0ZQ0KKw0KKyAgICAvKiBEaXNhYmxlZCB1bnRpbCBpdCdz
IGtub3duIHRoYXQgd2Ugd2FudCB0byBhY3R1YWxseSBkbyB0aGlzLg0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMT4NCisgICAgaW5saW5lIFQqIGZhc3ROZXcoQXJnMSBh
cmcxKQ0KKyAgICB7DQorICAgICAgICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoVCkpOw0K
Kw0KKyAgICAgICAgaWYgKHApIHsNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElE
QVRJT04pDQorICAgICAgICAgICAgaWYgKHApDQorICAgICAgICAgICAgICAgIHNldEZhc3RNYWxs
b2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIEFsbG9jVHlwZUZhc3ROZXcpOw0KKyNlbmRpZg0KKyAg
ICAgICAgICAgIHJldHVybiA6Om5ldyhwKSBUKGFyZzEpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAg
ICAgcmV0dXJuIDA7DQorICAgIH0NCisgICAgKi8NCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+DQorICAgIGlubGluZSBUKiBmYXN0TmV3KCkNCisgICAgew0KKyAgICAgICAgdm9pZCogcCA9
IGZhc3RNYWxsb2Moc2l6ZW9mKFQpKTsNCisNCisgICAgICAgIGlmIChwKSB7DQorI2lmIEVOQUJM
RShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICAgICAgICAgIGlmIChwKQ0KKyAg
ICAgICAgICAgICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5
cGVGYXN0TmV3KTsNCisjZW5kaWYNCisgICAgICAgICAgICByZXR1cm4gOjpuZXcocCkgVDsNCisg
ICAgICAgIH0NCisNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorDQorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcxPg0KKyAgICBpbmxpbmUgVCogZmFzdE5ldyhB
cmcxIGFyZzEpDQorICAgIHsNCisgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihU
KSk7DQorDQorICAgICAgICBpZiAocCkgew0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hf
VkFMSURBVElPTikNCisgICAgICAgICAgICAgaWYgKHApDQorICAgICAgICAgICAgICAgICBzZXRG
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVGYXN0TmV3KTsNCisjZW5k
aWYNCisgICAgICAgICAgICAgcmV0dXJuIDo6bmV3KHApIFQoYXJnMSk7DQorICAgICAgICB9DQor
DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMj4NCisgICAgaW5saW5lIFQqIGZhc3RO
ZXcoQXJnMSBhcmcxLCBBcmcyIGFyZzIpDQorICAgIHsNCisgICAgICAgIHZvaWQqIHAgPSBmYXN0
TWFsbG9jKHNpemVvZihUKSk7DQorDQorICAgICAgICBpZiAocCkgew0KKyNpZiBFTkFCTEUoRkFT
VF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgICAgICAgICAgaWYgKHApDQorICAgICAg
ICAgICAgICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVG
YXN0TmV3KTsNCisjZW5kaWYNCisgICAgICAgICAgICAgcmV0dXJuIDo6bmV3KHApIFQoYXJnMSwg
YXJnMik7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKw0K
KyAgICBuYW1lc3BhY2UgSW50ZXJuYWwgew0KKw0KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+DQorICAgICAgICB1bmlvbiBBcnJheVNpemUgew0KKyAgICAgICAgICAgIEFsaWduZWRBbGxv
Y1NpemUqIHNpemU7DQorICAgICAgICAgICAgVCogdDsNCisgICAgICAgIH07DQorDQorICAgICAg
ICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdE5ld0FycmF5Lg0KKyAgICAg
ICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlaW4gVCBoYXMgYSB0cml2aWFsIGN0b3Ig
YW5kIGEgdHJpdmlhbCBkdG9yLg0KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wg
dHJpdmlhbEN0b3IsIGJvb2wgdHJpdmlhbER0b3I+DQorICAgICAgICBzdHJ1Y3QgTmV3QXJyYXlJ
bXBsIHsNCisgICAgICAgICAgICBzdGF0aWMgVCogZmFzdE5ld0FycmF5KHNpemVfdCBjb3VudCkN
CisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIFQqIHAgPSBzdGF0aWNfY2FzdDxUKj4o
ZmFzdE1hbGxvYyhzaXplb2YoVCkgKiBjb3VudCkpOw0KKw0KKyNpZiBFTkFCTEUoRkFTVF9NQUxM
T0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgICAgICAgICAgICAgaWYgKHApDQorICAgICAgICAg
ICAgICAgICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVG
YXN0TmV3QXJyYXkpOw0KKyNlbmRpZg0KKyAgICAgICAgICAgICAgICByZXR1cm4gcDsNCisgICAg
ICAgICAgICB9DQorICAgICAgICB9Ow0KKw0KKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQg
dGVtcGxhdGUgZm9yIGZhc3ROZXdBcnJheS4NCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUg
Y2FzZSB3aGVyZWluIFQgaGFzIGEgbm9uLXRyaXZpYWwgY3RvciBhbmQgYSB0cml2aWFsIGR0b3Iu
DQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisgICAgICAgIHN0cnVjdCBOZXdBcnJh
eUltcGw8VCwgZmFsc2UsIHRydWU+IHsNCisgICAgICAgICAgICBzdGF0aWMgVCogZmFzdE5ld0Fy
cmF5KHNpemVfdCBjb3VudCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIFQqIHAg
PSBzdGF0aWNfY2FzdDxUKj4oZmFzdE1hbGxvYyhzaXplb2YoVCkgKiBjb3VudCkpOw0KKw0KKyAg
ICAgICAgICAgICAgICBpZiAocCkgew0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFM
SURBVElPTikNCisgICAgICAgICAgICAgICAgICAgIHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRp
b25UeXBlKHAsIEFsbG9jVHlwZUZhc3ROZXdBcnJheSk7DQorI2VuZGlmDQorICAgICAgICAgICAg
ICAgICAgICBmb3IgKFQqIHBPYmplY3QgPSBwLCAqcE9iamVjdEVuZCA9IHBPYmplY3QgKyBjb3Vu
dDsgcE9iamVjdCAhPSBwT2JqZWN0RW5kOyArK3BPYmplY3QpDQorICAgICAgICAgICAgICAgICAg
ICAgICAgOjpuZXcocE9iamVjdCkgVDsgLy8gVG8gY29uc2lkZXI6IGhhbmRsZSBjdG9yIGV4Y2Vw
dGlvbnMgaWYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBieSB0aGUgY29tcGlsZXIuDQorICAgICAg
ICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAgICAgcmV0dXJuIHA7DQorICAgICAgICAgICAg
fQ0KKyAgICAgICAgfTsNCisNCisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRl
IGZvciBmYXN0TmV3QXJyYXkuDQorICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hl
cmVpbiBUIGhhcyBhIHRyaXZpYWwgY3RvciBhbmQgYSBub24tdHJpdmlhbCBkdG9yLg0KKyAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQorICAgICAgICBzdHJ1Y3QgTmV3QXJyYXlJbXBsPFQs
IHRydWUsIGZhbHNlPiB7DQorICAgICAgICAgICAgc3RhdGljIFQqIGZhc3ROZXdBcnJheShzaXpl
X3QgY291bnQpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2b2lkKiBwID0gZmFz
dE1hbGxvYyhzaXplb2YoQWxpZ25lZEFsbG9jU2l6ZSkgKyAoc2l6ZW9mKFQpICogY291bnQpKTsN
CisgICAgICAgICAgICAgICAgQXJyYXlTaXplPFQ+IGEgPSB7IHN0YXRpY19jYXN0PEFsaWduZWRB
bGxvY1NpemUqPihwKSB9Ow0KKw0KKyAgICAgICAgICAgICAgICBpZiAocCkgew0KKyNpZiBFTkFC
TEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgICAgICAgICAgICAgICAgIHNl
dEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIEFsbG9jVHlwZUZhc3ROZXdBcnJheSk7
DQorI2VuZGlmDQorICAgICAgICAgICAgICAgICAgICAqYS5zaXplKysgPSBjb3VudDsNCisgICAg
ICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gY29uc3RydWN0IHRoZSBvYmplY3RzIGluIHRo
aXMgY2FzZS4NCisgICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgICAgICByZXR1cm4g
YS50Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH07DQorDQorICAgICAgICAvLyBUaGlzIGlz
IGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdE5ld0FycmF5Lg0KKyAgICAgICAgLy8gVGhpcyBo
YW5kbGVzIHRoZSBjYXNlIHdoZXJlaW4gVCBoYXMgYSBub24tdHJpdmlhbCBjdG9yIGFuZCBhIG5v
bi10cml2aWFsIGR0b3IuDQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisgICAgICAg
IHN0cnVjdCBOZXdBcnJheUltcGw8VCwgZmFsc2UsIGZhbHNlPiB7DQorICAgICAgICAgICAgc3Rh
dGljIFQqIGZhc3ROZXdBcnJheShzaXplX3QgY291bnQpDQorICAgICAgICAgICAgew0KKyAgICAg
ICAgICAgICAgICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoQWxpZ25lZEFsbG9jU2l6ZSkg
KyAoc2l6ZW9mKFQpICogY291bnQpKTsNCisgICAgICAgICAgICAgICAgQXJyYXlTaXplPFQ+IGEg
PSB7IHN0YXRpY19jYXN0PEFsaWduZWRBbGxvY1NpemUqPihwKSB9Ow0KKw0KKyAgICAgICAgICAg
ICAgICBpZiAocCkgew0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikN
CisgICAgICAgICAgICAgICAgICAgIHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAs
IEFsbG9jVHlwZUZhc3ROZXdBcnJheSk7DQorI2VuZGlmDQorICAgICAgICAgICAgICAgICAgICAq
YS5zaXplKysgPSBjb3VudDsNCisNCisgICAgICAgICAgICAgICAgICAgIGZvciAoVCogcFQgPSBh
LnQsICpwVEVuZCA9IHBUICsgY291bnQ7IHBUICE9IHBURW5kOyArK3BUKQ0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIDo6bmV3KHBUKSBUOyAvLyBUbyBjb25zaWRlcjogaGFuZGxlIGN0b3IgZXhj
ZXB0aW9ucyBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJ5IHRoZSBjb21waWxlci4NCisgICAg
ICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgICAgICByZXR1cm4gYS50Ow0KKyAgICAgICAg
ICAgIH0NCisgICAgICAgIH07DQorICAgIH0gLy8gbmFtZXNwYWNlIEludGVybmFsDQorDQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAgICBpbmxpbmUgVCogZmFzdE5ld0FycmF5KHNpemVf
dCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEludGVybmFsOjpOZXdBcnJheUltcGw8
VCwgV1RGOjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxUPjo6dmFsdWUsIFdURjo6aGFzX3RyaXZp
YWxfZGVzdHJ1Y3RvcjxUPjo6dmFsdWU+OjpmYXN0TmV3QXJyYXkoY291bnQpOw0KKyAgICB9DQor
DQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAgICBpbmxpbmUgdm9pZCBmYXN0RGVsZXRl
KFQqIHApDQorICAgIHsNCisgICAgICAgIC8vIFdlIGNvdWxkIGF2b2lkIHRoZSBwb2ludGVyIGNo
ZWNrIGhlcmUgYnkgbWFraW5nIGEgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24uDQorICAgICAgICBp
ZihwKSB7IC8vIFdlIG5lZWQgdG8gdGVzdCBwIGhlcmUgYmVjYXVzZSB3ZSBkZXJlZmVyZW5jZSBp
dC4NCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgICAgICAg
ICAgaWYgKGdldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHApICE9IEFsbG9jVHlwZUZh
c3ROZXcpDQorICAgICAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaEZhaWxlZChwKTsNCisgICAg
ICAgICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVNYWxs
b2MpOyAgLy8gU2V0IGl0IHRvIHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4N
CisjZW5kaWYNCisgICAgICAgICAgICBwLT5+VCgpOw0KKyAgICAgICAgICAgIGZhc3RGcmVlKHAp
Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIG5hbWVzcGFjZSBJbnRlcm5hbCB7DQorICAg
ICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdERlbGV0ZUFycmF5Lg0K
KyAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlaW4gVCBoYXMgYSB0cml2aWFs
IGR0b3IuDQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCB0cml2aWFsRHRvcj4N
CisgICAgICAgIHN0cnVjdCBEZWxldGVBcnJheUltcGwgew0KKyAgICAgICAgICAgIHN0YXRpYyB2
b2lkIGZhc3REZWxldGVBcnJheSh2b2lkKiBwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAg
ICAgICAgLy8gTm8gbmVlZCB0byBkZXN0cnVjdCB0aGUgb2JqZWN0cyBpbiB0aGlzIGNhc2UuDQor
ICAgICAgICAgICAgICAgIC8vIFdlIGV4cGVjdCB0aGF0IGZhc3RGcmVlIGNoZWNrcyBmb3IgbnVs
bC4NCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgICAgICAg
ICAgICAgIGlmIChwKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0RmFzdE1hbGxvY01h
dGNoVmFsaWRhdGlvblR5cGUocCkgIT0gQWxsb2NUeXBlRmFzdE5ld0FycmF5KQ0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaEZhaWxlZChwKTsNCisgICAgICAgICAgICAg
ICAgICAgIHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIEFsbG9jVHlwZU1hbGxv
Yyk7ICAvLyBTZXQgaXQgdG8gdGhpcyBzbyB0aGF0IGZhc3RGcmVlIHRoaW5rcyBpdCdzIE9LLg0K
KyAgICAgICAgICAgICAgICB9DQorI2VuZGlmDQorICAgICAgICAgICAgICAgIGZhc3RGcmVlKHAp
Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH07DQorDQorICAgICAgICAvLyBUaGlzIGlzIGEg
c3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdERlbGV0ZUFycmF5Lg0KKyAgICAgICAgLy8gVGhpcyBo
YW5kbGVzIHRoZSBjYXNlIHdoZXJlaW4gVCBoYXMgYSBub24tdHJpdmlhbCBkdG9yLg0KKyAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQorICAgICAgICBzdHJ1Y3QgRGVsZXRlQXJyYXlJbXBs
PFQsIGZhbHNlPiB7DQorICAgICAgICAgICAgc3RhdGljIHZvaWQgZmFzdERlbGV0ZUFycmF5KFQq
IHApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBpZihwKSB7IC8vIFdlIG5lZWQg
dG8gdGVzdCBwIGhlcmUgYmVjYXVzZSB3ZSBkZXJlZmVyZW5jZSBpdC4NCisgICAgICAgICAgICAg
ICAgICAgIEFycmF5U2l6ZTxUPiBhOw0KKyAgICAgICAgICAgICAgICAgICAgYS50ID0gcDsNCisg
ICAgICAgICAgICAgICAgICAgIGEuc2l6ZS0tOyAvLyBEZWNyZW1lbnQgc2l6ZSBwb2ludGVyDQor
DQorICAgICAgICAgICAgICAgICAgICBUKiBwRW5kID0gcCArICphLnNpemU7DQorICAgICAgICAg
ICAgICAgICAgICB3aGlsZShwRW5kLS0gIT0gcCkNCisgICAgICAgICAgICAgICAgICAgICAgICBw
RW5kLT5+VCgpOw0KKw0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikN
CisgICAgICAgICAgICAgICAgICAgIGlmIChnZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlw
ZShhLnNpemUpICE9IEFsbG9jVHlwZUZhc3ROZXdBcnJheSkNCisgICAgICAgICAgICAgICAgICAg
ICAgICBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQoYS5zaXplKTsNCisgICAgICAgICAgICAgICAgICAg
IHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKGEuc2l6ZSwgQWxsb2NUeXBlTWFsbG9j
KTsgIC8vIFNldCBpdCB0byB0aGlzIHNvIHRoYXQgZmFzdEZyZWUgdGhpbmtzIGl0J3MgT0suDQor
I2VuZGlmDQorICAgICAgICAgICAgICAgICAgICBmYXN0RnJlZShhLnNpemUpOw0KKyAgICAgICAg
ICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfTsNCisNCisgICAgfSAvLyBuYW1l
c3BhY2UgSW50ZXJuYWwNCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQorICAgIHZvaWQg
ZmFzdERlbGV0ZUFycmF5KFQqIHApDQorICAgIHsNCisgICAgICAgIEludGVybmFsOjpEZWxldGVB
cnJheUltcGw8VCwgV1RGOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ojp2YWx1ZT46OmZhc3RE
ZWxldGVBcnJheShwKTsNCisgICAgfQ0KKw0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4N
CisgICAgaW5saW5lIHZvaWQgZmFzdE5vbk51bGxEZWxldGUoVCogcCkNCisgICAgew0KKyAgICAg
ICAgaWYgKHApIHsNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQor
ICAgICAgICAgICAgaWYgKGdldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHApICE9IEFs
bG9jVHlwZUZhc3ROZXcpDQorICAgICAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaEZhaWxlZChw
KTsNCisgICAgICAgICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxv
Y1R5cGVNYWxsb2MpOyAgLy8gU2V0IGl0IHRvIHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlua3Mg
aXQncyBPSy4NCisjZW5kaWYNCisNCisgICAgICAgICAgICBwLT5+VCgpOw0KKyAgICAgICAgICAg
IGZhc3RGcmVlKHApOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIG5hbWVzcGFjZSBJbnRl
cm5hbCB7DQorICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdERl
bGV0ZUFycmF5Lg0KKyAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlaW4gVCBo
YXMgYSB0cml2aWFsIGR0b3IuDQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCB0
cml2aWFsRHRvcj4NCisgICAgICAgIHN0cnVjdCBOb25OdWxsRGVsZXRlQXJyYXlJbXBsIHsNCisg
ICAgICAgICAgICBzdGF0aWMgdm9pZCBmYXN0Tm9uTnVsbERlbGV0ZUFycmF5KHZvaWQqIHApDQor
ICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBpZiAocCkgew0KKyNpZiBFTkFCTEUoRkFT
VF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgICAgICAgICAgICAgICAgIGlmIChnZXRG
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwKSAhPSBBbGxvY1R5cGVGYXN0TmV3QXJyYXkp
DQorICAgICAgICAgICAgICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOw0KKyAg
ICAgICAgICAgICAgICAgICAgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCwgQWxs
b2NUeXBlTWFsbG9jKTsgIC8vIFNldCBpdCB0byB0aGlzIHNvIHRoYXQgZmFzdEZyZWUgdGhpbmtz
IGl0J3MgT0suDQorI2VuZGlmDQorICAgICAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGRl
c3RydWN0IHRoZSBvYmplY3RzIGluIHRoaXMgY2FzZS4NCisgICAgICAgICAgICAgICAgICAgIGZh
c3RGcmVlKHApOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAg
fTsNCisNCisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBmYXN0RGVs
ZXRlQXJyYXkuDQorICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVpbiBUIGhh
cyBhIG5vbi10cml2aWFsIGR0b3IuDQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisg
ICAgICAgIHN0cnVjdCBOb25OdWxsRGVsZXRlQXJyYXlJbXBsPFQsIGZhbHNlPiB7DQorICAgICAg
ICAgICAgc3RhdGljIHZvaWQgZmFzdE5vbk51bGxEZWxldGVBcnJheShUKiBwKQ0KKyAgICAgICAg
ICAgIHsNCisgICAgICAgICAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICAgICAgICAgIEFy
cmF5U2l6ZTxUPiBhOw0KKyAgICAgICAgICAgICAgICAgICAgYS50ID0gcDsNCisgICAgICAgICAg
ICAgICAgICAgIGEuc2l6ZS0tOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgVCogcEVuZCA9IHAg
KyAqYS5zaXplOw0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUocEVuZC0tICE9IHApDQorICAg
ICAgICAgICAgICAgICAgICAgICAgcEVuZC0+flQoKTsNCisNCisjaWYgRU5BQkxFKEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0RmFzdE1h
bGxvY01hdGNoVmFsaWRhdGlvblR5cGUoYS5zaXplKSAhPSBBbGxvY1R5cGVGYXN0TmV3QXJyYXkp
DQorICAgICAgICAgICAgICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoRmFpbGVkKGEuc2l6ZSk7
DQorICAgICAgICAgICAgICAgICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShh
LnNpemUsIEFsbG9jVHlwZU1hbGxvYyk7ICAvLyBTZXQgaXQgdG8gdGhpcyBzbyB0aGF0IGZhc3RG
cmVlIHRoaW5rcyBpdCdzIE9LLg0KKyNlbmRpZg0KKyAgICAgICAgICAgICAgICAgICAgZmFzdEZy
ZWUoYS5zaXplKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAg
IH07DQorDQorICAgIH0gLy8gbmFtZXNwYWNlIEludGVybmFsDQorDQorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPg0KKyAgICB2b2lkIGZhc3ROb25OdWxsRGVsZXRlQXJyYXkoVCogcCkNCisgICAg
ew0KKyAgICAgICAgSW50ZXJuYWw6Ok5vbk51bGxEZWxldGVBcnJheUltcGw8VCwgV1RGOjpoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ojp2YWx1ZT46OmZhc3ROb25OdWxsRGVsZXRlQXJyYXkocCk7
DQorICAgIH0NCisNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCisjZW5kaWYgLy8gV1RGX0Zh
c3RBbGxvY0Jhc2VfaA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZQdHJIYXNoTWFwLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRySGFzaE1hcC5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRySGFzaE1hcC5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtNDIsNyArNDIsNyBAQA0KICAgICB9Ow0KIA0KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPg0KLSAgICBjbGFzcyBIYXNo
TWFwPFJlZlB0cjxUPiwgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRy
YWl0c0FyZz4gew0KKyAgICBjbGFzcyBIYXNoTWFwPFJlZlB0cjxUPiwgTWFwcGVkQXJnLCBIYXNo
QXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz4gOiBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgcHJpdmF0ZToNCiAgICAgICAgIHR5cGVkZWYgS2V5VHJhaXRzQXJnIEtl
eVRyYWl0czsNCiAgICAgICAgIHR5cGVkZWYgTWFwcGVkVHJhaXRzQXJnIE1hcHBlZFRyYWl0czsN
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTE1
MSw2ICsxNTEsMTMgQEANCiANCiBuYW1lc3BhY2UgV1RGIHsNCiANCisjaWYgRU5BQkxFKEZBU1Rf
TUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQoraW5saW5lIGNoYXIqIGdldEZhc3RNYWxsb2NNYXRj
aFZhbGlkYXRpb25CeXRlKHZvaWQqIHApDQorew0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hh
cio+KHApIC0gc2l6ZW9mKEFsaWduZWRBbGxvY1NpemUpOw0KK30NCisjZW5kaWYNCisNCiB2b2lk
KiBmYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKSANCiB7DQogICAgIHZvaWQqIHJlc3VsdCA9IGZh
c3RNYWxsb2Mobik7DQpAQCAtMTgzLDEzICsxOTAsMzAgQEANCiB2b2lkKiB0cnlGYXN0TWFsbG9j
KHNpemVfdCBuKSANCiB7DQogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7DQorDQorI2lmIEVO
QUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICBuICs9IHNpemVvZihBbGln
bmVkQWxsb2NTaXplKTsgIC8vIEEgcGF0aG9sb2dpY2FsbHkgaGlnaCBuIHZhbHVlIGNvdWxkIHJl
c3VsdCBpbiB0aGlzIG92ZXJmbG93aW5nLg0KKyAgICBjaGFyKiByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxjaGFyKj4obWFsbG9jKG4pKTsNCisgICAgaWYgKHJlc3VsdCkgew0KKyAgICAgICAgKnJlc3Vs
dCA9IEFsbG9jVHlwZU1hbGxvYzsNCisgICAgICAgIHJlc3VsdCArPSBzaXplb2YoQWxpZ25lZEFs
bG9jU2l6ZSk7DQorICAgIH0NCisgICAgcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KICAgICByZXR1
cm4gbWFsbG9jKG4pOw0KKyNlbmRpZg0KIH0NCiANCiB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCBu
KSANCiB7DQogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7DQorDQorI2lmIEVOQUJMRShGQVNU
X01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICB2b2lkKiByZXN1bHQgPSB0cnlGYXN0TWFs
bG9jKG4pOw0KKyNlbHNlDQogICAgIHZvaWQqIHJlc3VsdCA9IG1hbGxvYyhuKTsNCisjZW5kaWYN
CisNCiAgICAgaWYgKCFyZXN1bHQpDQogICAgICAgICBhYm9ydCgpOw0KICAgICByZXR1cm4gcmVz
dWx0Ow0KQEAgLTE5OCwxMyArMjIyLDM1IEBADQogdm9pZCogdHJ5RmFzdENhbGxvYyhzaXplX3Qg
bl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSkNCiB7DQogICAgIEFTU0VSVCghaXNGb3Ji
aWRkZW4oKSk7DQorDQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0K
KyAgICBzaXplX3QgdG90YWxCeXRlcyA9IG5fZWxlbWVudHMgKiBlbGVtZW50X3NpemU7DQorICAg
IGlmIChuX2VsZW1lbnRzID4gMSAmJiBlbGVtZW50X3NpemUgJiYgKHRvdGFsQnl0ZXMgLyBlbGVt
ZW50X3NpemUpICE9IG5fZWxlbWVudHMpDQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAgdG90
YWxCeXRlcyArPSBzaXplb2YoQWxpZ25lZEFsbG9jU2l6ZSk7IC8vIEEgcGF0aG9sb2dpY2FsbHkg
aGlnaCB0b3RhbEJ5dGVzIHZhbHVlIGNvdWxkIHJlc3VsdCBpbiB0aGlzIG92ZXJmbG93aW5nLg0K
KyAgICBjaGFyKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKHRvdGFsQnl0ZXMp
KTsNCisgICAgaWYgKHJlc3VsdCkgew0KKyAgICAgICAgbWVtc2V0KHJlc3VsdCwgMCwgdG90YWxC
eXRlcyk7DQorICAgICAgICAqcmVzdWx0ID0gQWxsb2NUeXBlTWFsbG9jOw0KKyAgICAgICAgcmVz
dWx0ICs9IHNpemVvZihBbGlnbmVkQWxsb2NTaXplKTsNCisgICAgfQ0KKyAgICByZXR1cm4gcmVz
dWx0Ow0KKyNlbHNlDQogICAgIHJldHVybiBjYWxsb2Mobl9lbGVtZW50cywgZWxlbWVudF9zaXpl
KTsNCisjZW5kaWYNCiB9DQogDQogdm9pZCogZmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywg
c2l6ZV90IGVsZW1lbnRfc2l6ZSkNCiB7DQogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7DQor
DQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICB2b2lkKiBy
ZXN1bHQgPSB0cnlGYXN0Q2FsbG9jKG5fZWxlbWVudHMsIGVsZW1lbnRfc2l6ZSk7DQorI2Vsc2UN
CiAgICAgdm9pZCogcmVzdWx0ID0gY2FsbG9jKG5fZWxlbWVudHMsIGVsZW1lbnRfc2l6ZSk7DQor
I2VuZGlmDQorDQogICAgIGlmICghcmVzdWx0KQ0KICAgICAgICAgYWJvcnQoKTsNCiAgICAgcmV0
dXJuIHJlc3VsdDsNCkBAIC0yMTMsMTkgKzI1OSw1MSBAQA0KIHZvaWQgZmFzdEZyZWUodm9pZCog
cCkNCiB7DQogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7DQorDQorI2lmIEVOQUJMRShGQVNU
X01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICBpZiAocCkgew0KKyAgICAgICAgY2hhciog
cEJ5dGUgPSBnZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uQnl0ZShwKTsNCisgICAgICAgIGlm
ICgqcEJ5dGUgIT0gQWxsb2NUeXBlTWFsbG9jKQ0KKyAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRj
aEZhaWxlZChwKTsNCisgICAgICAgIGZyZWUocEJ5dGUpOw0KKyAgICB9DQorI2Vsc2UNCiAgICAg
ZnJlZShwKTsNCisjZW5kaWYNCiB9DQogDQogdm9pZCogdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwg
c2l6ZV90IG4pDQogew0KICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOw0KKw0KKyNpZiBFTkFC
TEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgaWYgKHApIHsNCisgICAgICAg
IG4gKz0gc2l6ZW9mKEFsaWduZWRBbGxvY1NpemUpOyAgLy8gQSBwYXRob2xvZ2ljYWxseSBoaWdo
IG4gdmFsdWUgY291bGQgcmVzdWx0IGluIHRoaXMgb3ZlcmZsb3dpbmcuDQorICAgICAgICBjaGFy
KiBwQnl0ZSA9IGdldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25CeXRlKHApOw0KKyAgICAgICAg
aWYgKCpwQnl0ZSAhPSBBbGxvY1R5cGVNYWxsb2MpDQorICAgICAgICAgICAgZmFzdE1hbGxvY01h
dGNoRmFpbGVkKHApOw0KKyAgICAgICAgcEJ5dGUgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocmVhbGxv
YyhwQnl0ZSwgbikpOw0KKyAgICAgICAgaWYocEJ5dGUpDQorICAgICAgICAgICAgcEJ5dGUgKz0g
c2l6ZW9mKEFsaWduZWRBbGxvY1NpemUpOw0KKyAgICAgICAgcmV0dXJuIHBCeXRlOw0KKyAgICB9
IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIGZhc3RNYWxsb2Mobik7DQorICAgIH0NCisjZWxzZQ0K
ICAgICByZXR1cm4gcmVhbGxvYyhwLCBuKTsNCisjZW5kaWYNCiB9DQogDQogdm9pZCogZmFzdFJl
YWxsb2Modm9pZCogcCwgc2l6ZV90IG4pDQogew0KICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkp
Ow0KKw0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgdm9p
ZCogcmVzdWx0ID0gdHJ5RmFzdFJlYWxsb2MocCwgbik7DQorI2Vsc2UNCiAgICAgdm9pZCogcmVz
dWx0ID0gcmVhbGxvYyhwLCBuKTsNCisjZW5kaWYNCisNCiAgICAgaWYgKCFyZXN1bHQpDQogICAg
ICAgICBhYm9ydCgpOw0KICAgICByZXR1cm4gcmVzdWx0Ow0KQEAgLTMyNDUsNyArMzMyMywxNyBA
QA0KIEFMV0FZU19JTkxJTkUNCiAjZW5kaWYNCiB2b2lkKiBtYWxsb2Moc2l6ZV90IHNpemUpIHsN
Ci0gIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyhzaXplKTsNCisjaWYgRU5BQkxFKEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgIHNpemUgKz0gc2l6ZW9mKEFsaWduZWRBbGxvY1Np
emUpOyAgLy8gQSBwYXRob2xvZ2ljYWxseSBoaWdoIG4gdmFsdWUgY291bGQgcmVzdWx0IGluIHRo
aXMgb3ZlcmZsb3dpbmcuDQorICAgIGNoYXIqIHJlc3VsdCA9IHN0YXRpY19jYXN0PGNoYXIqPihk
b19tYWxsb2Moc2l6ZSkpOw0KKyAgICBpZiAocmVzdWx0KSB7DQorICAgICAgICAqcmVzdWx0ID0g
QWxsb2NUeXBlTWFsbG9jOw0KKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihBbGlnbmVkQWxsb2NT
aXplKTsNCisgICAgfQ0KKyNlbHNlDQorICAgIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyhzaXpl
KTsNCisjZW5kaWYNCisNCiAjaWZuZGVmIFdURl9DSEFOR0VTDQogICBNYWxsb2NIb29rOjpJbnZv
a2VOZXdIb29rKHJlc3VsdCwgc2l6ZSk7DQogI2VuZGlmDQpAQCAtMzI1OSw3ICszMzQ3LDE3IEBA
DQogI2lmbmRlZiBXVEZfQ0hBTkdFUw0KICAgTWFsbG9jSG9vazo6SW52b2tlRGVsZXRlSG9vayhw
dHIpOw0KICNlbmRpZg0KLSAgZG9fZnJlZShwdHIpOw0KKw0KKyNpZiBFTkFCTEUoRkFTVF9NQUxM
T0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgaWYgKHB0cikgew0KKyAgICAgICAgY2hhciogcEJ5
dGUgPSBnZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uQnl0ZShwdHIpOw0KKyAgICAgICAgaWYg
KCpwQnl0ZSAhPSBBbGxvY1R5cGVNYWxsb2MpDQorICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNo
RmFpbGVkKHB0cik7DQorICAgICAgICBkb19mcmVlKHBCeXRlKTsNCisgICAgfQ0KKyNlbHNlDQor
ICAgIGRvX2ZyZWUocHRyKTsNCisjZW5kaWYNCiB9DQogDQogI2lmbmRlZiBXVEZfQ0hBTkdFUw0K
QEAgLTMyODIsMTYgKzMzODAsMjcgQEANCiBBTFdBWVNfSU5MSU5FDQogI2VuZGlmDQogdm9pZCog
Y2FsbG9jKHNpemVfdCBuLCBzaXplX3QgZWxlbV9zaXplKSB7DQotICBjb25zdCBzaXplX3QgdG90
YWxCeXRlcyA9IG4gKiBlbGVtX3NpemU7DQorICBzaXplX3QgdG90YWxCeXRlcyA9IG4gKiBlbGVt
X3NpemU7DQogICAgIA0KICAgLy8gUHJvdGVjdCBhZ2FpbnN0IG92ZXJmbG93DQogICBpZiAobiA+
IDEgJiYgZWxlbV9zaXplICYmICh0b3RhbEJ5dGVzIC8gZWxlbV9zaXplKSAhPSBuKQ0KICAgICBy
ZXR1cm4gMDsNCi0gICAgDQotICB2b2lkKiByZXN1bHQgPSBkb19tYWxsb2ModG90YWxCeXRlcyk7
DQotICBpZiAocmVzdWx0ICE9IE5VTEwpIHsNCi0gICAgbWVtc2V0KHJlc3VsdCwgMCwgdG90YWxC
eXRlcyk7DQotICB9DQorDQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9O
KQ0KKyAgICB0b3RhbEJ5dGVzICs9IHNpemVvZihBbGlnbmVkQWxsb2NTaXplKTsgLy8gQSBwYXRo
b2xvZ2ljYWxseSBoaWdoIHRvdGFsQnl0ZXMgdmFsdWUgY291bGQgcmVzdWx0IGluIHRoaXMgb3Zl
cmZsb3dpbmcuDQorICAgIGNoYXIqIHJlc3VsdCA9IHN0YXRpY19jYXN0PGNoYXIqPihkb19tYWxs
b2ModG90YWxCeXRlcykpOw0KKyAgICBpZiAocmVzdWx0KSB7DQorICAgICAgICBtZW1zZXQocmVz
dWx0LCAwLCB0b3RhbEJ5dGVzKTsNCisgICAgICAgICpyZXN1bHQgPSBBbGxvY1R5cGVNYWxsb2M7
DQorICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEFsaWduZWRBbGxvY1NpemUpOw0KKyAgICB9DQor
I2Vsc2UNCisgICAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKHRvdGFsQnl0ZXMpOw0KKyAgICBp
ZiAocmVzdWx0ICE9IE5VTEwpIHsNCisgICAgICAgIG1lbXNldChyZXN1bHQsIDAsIHRvdGFsQnl0
ZXMpOw0KKyAgICB9DQorI2VuZGlmDQorDQogI2lmbmRlZiBXVEZfQ0hBTkdFUw0KICAgTWFsbG9j
SG9vazo6SW52b2tlTmV3SG9vayhyZXN1bHQsIHRvdGFsQnl0ZXMpOw0KICNlbmRpZg0KQEAgLTMz
MDIsMTAgKzM0MTEsNyBAQA0KIGV4dGVybiAiQyIgDQogI2VuZGlmDQogdm9pZCBjZnJlZSh2b2lk
KiBwdHIpIHsNCi0jaWZuZGVmIFdURl9DSEFOR0VTDQotICAgIE1hbGxvY0hvb2s6Okludm9rZURl
bGV0ZUhvb2socHRyKTsNCi0jZW5kaWYNCi0gIGRvX2ZyZWUocHRyKTsNCisgIGZyZWUocHRyKTsN
CiB9DQogDQogI2lmbmRlZiBXVEZfQ0hBTkdFUw0KQEAgLTMzMjQsMjUgKzM0MzAsMzUgQEANCiAg
ICAgcmV0dXJuIHJlYWxsb2M8ZmFsc2U+KG9sZF9wdHIsIG5ld19zaXplKTsNCiB9DQogDQorDQog
dGVtcGxhdGUgPGJvb2wgYWJvcnRPbkZhaWx1cmU+DQogQUxXQVlTX0lOTElORQ0KICNlbmRpZg0K
IHZvaWQqIHJlYWxsb2Modm9pZCogb2xkX3B0ciwgc2l6ZV90IG5ld19zaXplKSB7DQogICBpZiAo
b2xkX3B0ciA9PSBOVUxMKSB7DQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFU
SU9OKQ0KKyAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2MobmV3X3NpemUpOw0KKyNlbHNlDQogICAg
IHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyhuZXdfc2l6ZSk7DQogI2lmbmRlZiBXVEZfQ0hBTkdF
Uw0KICAgICBNYWxsb2NIb29rOjpJbnZva2VOZXdIb29rKHJlc3VsdCwgbmV3X3NpemUpOw0KICNl
bmRpZg0KKyNlbmRpZg0KICAgICByZXR1cm4gcmVzdWx0Ow0KICAgfQ0KICAgaWYgKG5ld19zaXpl
ID09IDApIHsNCi0jaWZuZGVmIFdURl9DSEFOR0VTDQotICAgIE1hbGxvY0hvb2s6Okludm9rZURl
bGV0ZUhvb2sob2xkX3B0cik7DQotI2VuZGlmDQogICAgIGZyZWUob2xkX3B0cik7DQogICAgIHJl
dHVybiBOVUxMOw0KICAgfQ0KIA0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURB
VElPTikNCisgICAgbmV3X3NpemUgKz0gc2l6ZW9mKEFsaWduZWRBbGxvY1NpemUpOyAgLy8gQSBw
YXRob2xvZ2ljYWxseSBoaWdoIG5ld19zaXplIHZhbHVlIGNvdWxkIHJlc3VsdCBpbiB0aGlzIG92
ZXJmbG93aW5nLg0KKyAgICBjaGFyKiBwQnl0ZSA9IGdldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRp
b25CeXRlKG9sZF9wdHIpOw0KKyAgICBpZiAoKnBCeXRlICE9IEFsbG9jVHlwZU1hbGxvYykNCisg
ICAgICAgIGZhc3RNYWxsb2NNYXRjaEZhaWxlZChvbGRfcHRyKTsNCisgICAgb2xkX3B0ciA9IHBC
eXRlOw0KKyNlbmRpZg0KKw0KICAgLy8gR2V0IHRoZSBzaXplIG9mIHRoZSBvbGQgZW50cnkNCiAg
IGNvbnN0IFBhZ2VJRCBwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9sZF9wdHIpID4+
IGtQYWdlU2hpZnQ7DQogICBzaXplX3QgY2wgPSBwYWdlaGVhcC0+R2V0U2l6ZUNsYXNzSWZDYWNo
ZWQocCk7DQpAQCAtMzM3OSw4ICszNDk1LDE0IEBADQogICAgIC8vIHRoYXQgd2UgYWxyZWFkeSBr
bm93IHRoZSBzaXplY2xhc3Mgb2Ygb2xkX3B0ci4gIFRoZSBiZW5lZml0DQogICAgIC8vIHdvdWxk
IGJlIHNtYWxsLCBzbyBkb24ndCBib3RoZXIuDQogICAgIGRvX2ZyZWUob2xkX3B0cik7DQorI2lm
IEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICBuZXdfcHRyID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KG5ld19wdHIpICsgc2l6ZW9mKEFsaWduZWRBbGxvY1NpemUpOw0KKyNl
bmRpZg0KICAgICByZXR1cm4gbmV3X3B0cjsNCiAgIH0gZWxzZSB7DQorI2lmIEVOQUJMRShGQVNU
X01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICBvbGRfcHRyID0gcEJ5dGUgKyBzaXplb2Yo
QWxpZ25lZEFsbG9jU2l6ZSk7ICAvLyBTZXQgb2xkX3B0ciBiYWNrIHRvIHRoZSB1c2VyIHBvaW50
ZXIuDQorI2VuZGlmDQogICAgIHJldHVybiBvbGRfcHRyOw0KICAgfQ0KIH0NCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBKYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQ0KQEAgLTQyMiw0ICs0MjIsOCBAQA0KICNkZWZpbmUg
V1RGX1VTRV9DVElfQVJHVU1FTlQgMQ0KICNlbmRpZg0KIA0KKyNpZiAhZGVmaW5lZChFTkFCTEVf
RkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisjZGVmaW5lIEVOQUJMRV9GQVNUX01BTExP
Q19NQVRDSF9WQUxJREFUSU9OIDENCisjZW5kaWYNCisNCiAjZW5kaWYgLyogV1RGX1BsYXRmb3Jt
X2ggKi8NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhhc2hTZXQuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9MaXN0SGFzaFNldC5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhhc2hTZXQuaAkod29ya2luZyBjb3B5KQ0KQEAg
LTI0LDYgKzI0LDcgQEANCiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIg0KICNpbmNsdWRlICJIYXNo
U2V0LmgiDQogI2luY2x1ZGUgIk93blB0ci5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KIA0KIG5hbWVzcGFjZSBXVEYgew0KIA0KQEAgLTUxLDcgKzUyLDcgQEANCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWVBcmc+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I7
DQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1
Y3QgTGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9uczsNCiANCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1
ZUFyZz46Okhhc2g+IGNsYXNzIExpc3RIYXNoU2V0IHsNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFy
Zz46Okhhc2g+IGNsYXNzIExpc3RIYXNoU2V0IDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIHByaXZhdGU6DQogICAgICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFy
Zz4gTm9kZTsNCiAgICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlQWxsb2NhdG9yPFZhbHVl
QXJnPiBOb2RlQWxsb2NhdG9yOw0KQEAgLTE4Niw3ICsxODcsNyBAQA0KICAgICAgICAgfSBtX3Bv
b2w7DQogICAgIH07DQogDQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnPiBzdHJ1Y3Qg
TGlzdEhhc2hTZXROb2RlIHsNCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmc+IHN0cnVj
dCBMaXN0SGFzaFNldE5vZGUgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgICAg
IHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlQWxsb2NhdG9yPFZhbHVlQXJnPiBOb2RlQWxsb2NhdG9y
Ow0KIA0KICAgICAgICAgTGlzdEhhc2hTZXROb2RlKFZhbHVlQXJnIHZhbHVlKQ0KSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBK
YXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
MzAsNiArMzAsNyBAQA0KICNkZWZpbmUgV1RGX0NvbGxhdG9yX2gNCiANCiAjaW5jbHVkZSA8bWVt
b3J5Pg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4NCiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPg0KIA0KQEAgLTM5
LDcgKzQwLDcgQEANCiANCiBuYW1lc3BhY2UgV1RGIHsNCiANCi0gICAgY2xhc3MgQ29sbGF0b3Ig
OiBOb25jb3B5YWJsZSB7DQorICAgIGNsYXNzIENvbGxhdG9yIDogTm9uY29weWFibGUsIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBlbnVtIFJlc3Vs
dCB7IEVxdWFsID0gMCwgR3JlYXRlciA9IDEsIExlc3MgPSAtMSB9Ow0KIA0KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3d0Zi9WZWN0b3IuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9WZWN0b3IuaAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1ZlY3Rv
ci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjMsNiArMjMsNyBAQA0KIA0KICNpbmNsdWRlICJBc3Nl
cnRpb25zLmgiDQogI2luY2x1ZGUgIkZhc3RNYWxsb2MuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSAiTm9uY29weWFibGUuaCINCiAjaW5jbHVkZSAiTm90Rm91
bmQuaCINCiAjaW5jbHVkZSAiVmVjdG9yVHJhaXRzLmgiDQpAQCAtNDE4LDcgKzQxOSw3IEBADQog
ICAgIH07DQogDQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSA9IDA+DQotICAgIGNsYXNzIFZlY3RvciB7DQorICAgIGNsYXNzIFZlY3RvciA6IHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwcml2YXRlOg0KICAgICAgICAgdHlwZWRlZiBWZWN0
b3JCdWZmZXI8VCwgaW5saW5lQ2FwYWNpdHk+IEJ1ZmZlcjsNCiAgICAgICAgIHR5cGVkZWYgVmVj
dG9yVHlwZU9wZXJhdGlvbnM8VD4gVHlwZU9wZXJhdGlvbnM7DQpJbmRleDogSmF2YVNjcmlwdENv
cmUvd3RmL0hhc2hUcmFpdHMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9I
YXNoVHJhaXRzLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNo
VHJhaXRzLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMyw2ICsyMyw3IEBADQogDQogI2luY2x1ZGUg
IkFzc2VydGlvbnMuaCINCiAjaW5jbHVkZSAiSGFzaEZ1bmN0aW9ucy5oIg0KKyNpbmNsdWRlICJU
eXBlVHJhaXRzLmgiDQogI2luY2x1ZGUgPHV0aWxpdHk+DQogI2luY2x1ZGUgPGxpbWl0cz4NCiAN
CkBAIC0zMSw0NyArMzIsNiBAQA0KICAgICB1c2luZyBzdGQ6OnBhaXI7DQogICAgIHVzaW5nIHN0
ZDo6bWFrZV9wYWlyOw0KIA0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSXNJbnRl
Z2VyICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07DQotICAg
IHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxib29sPiAgICAgICAgICAgICAgIHsgc3RhdGlj
IGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0lu
dGVnZXI8Y2hhcj4gICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1
ZTsgfTsNCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHNpZ25lZCBjaGFyPiAgICAg
ICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQotICAgIHRlbXBsYXRlPD4g
c3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBjaGFyPiAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wg
dmFsdWUgPSB0cnVlOyB9Ow0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8c2hvcnQ+
ICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCi0gICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIHNob3J0PiAgICAgeyBzdGF0aWMg
Y29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQotICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50
ZWdlcjxpbnQ+ICAgICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVl
OyB9Ow0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgaW50PiAgICAg
ICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCi0gICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgSXNJbnRlZ2VyPGxvbmc+ICAgICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2
YWx1ZSA9IHRydWU7IH07DQotICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25l
ZCBsb25nPiAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KLSAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8bG9uZyBsb25nPiAgICAgICAgICB7IHN0YXRpYyBj
b25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRl
Z2VyPHVuc2lnbmVkIGxvbmcgbG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7
IH07DQotDQotI2lmICFDT01QSUxFUihNU1ZDKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9E
RUZJTkVEKQ0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8d2NoYXJfdD4gICAgICAg
ICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCi0jZW5kaWYNCi0NCi0g
ICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPGJvb2w+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9i
b29sX3RydWUpOw0KLSAgICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8Y2hhcj46OnZhbHVlLCBX
VEZfSXNJbnRlZ2VyX2NoYXJfdHJ1ZSk7DQotICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjxz
aWduZWQgY2hhcj46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3NpZ25lZF9jaGFyX3RydWUpOw0KLSAg
ICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8dW5zaWduZWQgY2hhcj46OnZhbHVlLCBXVEZfSXNJ
bnRlZ2VyX3Vuc2lnbmVkX2NoYXJfdHJ1ZSk7DQotICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdl
cjxzaG9ydD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Nob3J0X3RydWUpOw0KLSAgICBDT01QSUxF
X0FTU0VSVChJc0ludGVnZXI8dW5zaWduZWQgc2hvcnQ+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl91
bnNpZ25lZF9zaG9ydF90cnVlKTsNCi0gICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPGludD46
OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2ludF90cnVlKTsNCi0gICAgQ09NUElMRV9BU1NFUlQoSXNJ
bnRlZ2VyPHVuc2lnbmVkIGludD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX2ludF90
cnVlKTsNCi0gICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPGxvbmc+Ojp2YWx1ZSwgV1RGX0lz
SW50ZWdlcl9sb25nX3RydWUpOw0KLSAgICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8dW5zaWdu
ZWQgbG9uZz46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX2xvbmdfdHJ1ZSk7DQotICAg
IENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjxsb25nIGxvbmc+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdl
cl9sb25nX2xvbmdfdHJ1ZSk7DQotICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjx1bnNpZ25l
ZCBsb25nIGxvbmc+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl91bnNpZ25lZF9sb25nX2xvbmdfdHJ1
ZSk7DQotDQotI2lmICFDT01QSUxFUihNU1ZDKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9E
RUZJTkVEKQ0KLSAgICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8d2NoYXJfdD46OnZhbHVlLCBX
VEZfSXNJbnRlZ2VyX3djaGFyX3RfdHJ1ZSk7DQotI2VuZGlmDQotDQotICAgIENPTVBJTEVfQVNT
RVJUKCFJc0ludGVnZXI8Y2hhcio+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9jaGFyX3BvaW50ZXJf
ZmFsc2UpOw0KLSAgICBDT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPGNvbnN0IGNoYXIqID46OnZh
bHVlLCBXVEZfSXNJbnRlZ2VyX2NvbnN0X2NoYXJfcG9pbnRlcl9mYWxzZSk7DQotICAgIENPTVBJ
TEVfQVNTRVJUKCFJc0ludGVnZXI8dm9sYXRpbGUgY2hhciogPjo6dmFsdWUsIFdURl9Jc0ludGVn
ZXJfdm9sYXRpbGVfY2hhcl9wb2ludGVyX19mYWxzZSk7DQotICAgIENPTVBJTEVfQVNTRVJUKCFJ
c0ludGVnZXI8ZG91YmxlPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfZG91YmxlX2ZhbHNlKTsNCi0g
ICAgQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxmbG9hdD46OnZhbHVlLCBXVEZfSXNJbnRlZ2Vy
X2Zsb2F0X2ZhbHNlKTsNCi0NCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hU
cmFpdHM7DQogDQogICAgIHRlbXBsYXRlPGJvb2wgaXNJbnRlZ2VyLCB0eXBlbmFtZSBUPiBzdHJ1
Y3QgR2VuZXJpY0hhc2hUcmFpdHNCYXNlOw0KQEAgLTg5LDcgKzQ5LDcgQEANCiAgICAgICAgIHN0
YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IHN0YXRp
Y19jYXN0PFQ+KC0xKTsgfQ0KICAgICB9Ow0KIA0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8SXNJbnRlZ2Vy
PFQ+Ojp2YWx1ZSwgVD4gew0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJp
Y0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8aXNfaW50ZWdyYWw8VD46OnZhbHVl
LCBUPiB7DQogICAgICAgICB0eXBlZGVmIFQgVHJhaXRUeXBlOw0KICAgICAgICAgc3RhdGljIFQg
ZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFQoKTsgfQ0KICAgICB9Ow0KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3d0Zi9SZWZQdHIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZQ
dHIuaAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ci5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjMsNiArMjMsNyBAQA0KIA0KICNpbmNsdWRlIDxhbGdvcml0aG0+
DQogI2luY2x1ZGUgIkFsd2F5c0lubGluZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KIA0KIG5hbWVzcGFjZSBXVEYgew0KIA0KQEAgLTMyLDcgKzMzLDcgQEANCiANCiAgICAg
ZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07
DQogDQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBSZWZQdHIgew0KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUmVmUHRyIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFJlZlB0cigpIDogbV9wdHIoMCkgeyB9DQogICAg
ICAgICBSZWZQdHIoVCogcHRyKSA6IG1fcHRyKHB0cikgeyBpZiAocHRyKSBwdHItPnJlZigpOyB9
DQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hNYXAuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEph
dmFTY3JpcHRDb3JlL3d0Zi9IYXNoTWFwLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3Jp
cHRDb3JlL3d0Zi9IYXNoTWFwLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMiw2ICsyMiw3IEBADQog
I2RlZmluZSBXVEZfSGFzaE1hcF9oDQogDQogI2luY2x1ZGUgIkhhc2hUYWJsZS5oIg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXVEYgew0KIA0KQEAgLTI5
LDcgKzMwLDcgQEANCiANCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBN
YXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxLZXlBcmc+
OjpIYXNoLA0KICAgICAgICAgdHlwZW5hbWUgS2V5VHJhaXRzQXJnID0gSGFzaFRyYWl0czxLZXlB
cmc+LCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPE1hcHBlZEFyZz4gPg0K
LSAgICBjbGFzcyBIYXNoTWFwIHsNCisgICAgY2xhc3MgSGFzaE1hcCA6IHB1YmxpYyBXVEY6OkZh
c3RBbGxvY0Jhc2Ugew0KICAgICBwcml2YXRlOg0KICAgICAgICAgdHlwZWRlZiBLZXlUcmFpdHNB
cmcgS2V5VHJhaXRzOw0KICAgICAgICAgdHlwZWRlZiBNYXBwZWRUcmFpdHNBcmcgTWFwcGVkVHJh
aXRzOw0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2pzYy5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAzODMzNCkNCisrKyBKYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTUyLDcgKzE1Miw3IEBADQogICAgIEdsb2JhbE9i
amVjdChjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cyk7DQogICAgIHZpcnR1YWwgVVN0
cmluZyBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiZ2xvYmFsIjsgfQ0KIH07DQotQ09NUElM
RV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9H
bG9iYWxPYmplY3RfZmFsc2UpOw0KK0NPTVBJTEVfQVNTRVJUKCFpc19pbnRlZ3JhbDxHbG9iYWxP
YmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOw0KIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoR2xvYmFsT2JqZWN0KTsNCiANCiBHbG9iYWxPYmplY3Q6Okds
b2JhbE9iamVjdChjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cykNCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2xhc3NSZWYuaAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2xhc3NSZWYuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMxLDEwICszMSwxMSBAQA0KICNp
bmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+DQogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5o
Pg0KICNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxv
Y0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4NCiANCi1zdHJ1Y3QgU3RhdGljVmFsdWVFbnRyeSB7DQorc3RydWN0IFN0YXRpY1Zh
bHVlRW50cnkgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgU3RhdGljVmFsdWVF
bnRyeShKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgX2dldFByb3BlcnR5LCBKU09iamVjdFNl
dFByb3BlcnR5Q2FsbGJhY2sgX3NldFByb3BlcnR5LCBKU1Byb3BlcnR5QXR0cmlidXRlcyBfYXR0
cmlidXRlcykNCiAgICAgICAgIDogZ2V0UHJvcGVydHkoX2dldFByb3BlcnR5KSwgc2V0UHJvcGVy
dHkoX3NldFByb3BlcnR5KSwgYXR0cmlidXRlcyhfYXR0cmlidXRlcykNCiAgICAgew0KQEAgLTQ1
LDcgKzQ2LDcgQEANCiAgICAgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlczsNCiB9Ow0K
IA0KLXN0cnVjdCBTdGF0aWNGdW5jdGlvbkVudHJ5IHsNCitzdHJ1Y3QgU3RhdGljRnVuY3Rpb25F
bnRyeSA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UgIHsNCiAgICAgU3RhdGljRnVuY3Rpb25F
bnRyeShKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgX2NhbGxBc0Z1bmN0aW9uLCBKU1By
b3BlcnR5QXR0cmlidXRlcyBfYXR0cmlidXRlcykNCiAgICAgICAgIDogY2FsbEFzRnVuY3Rpb24o
X2NhbGxBc0Z1bmN0aW9uKSwgYXR0cmlidXRlcyhfYXR0cmlidXRlcykNCiAgICAgew0KQEAgLTYy
LDcgKzYzLDcgQEANCiANCiAvLyBBbiBPcGFxdWVKU0NsYXNzIChKU0NsYXNzKSBpcyBjcmVhdGVk
IHdpdGhvdXQgYSBjb250ZXh0LCBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIGFueSBjb250ZXh0LCBl
dmVuIGFjcm9zcyBjb250ZXh0IGdyb3Vwcy4NCiAvLyBUaGlzIHN0cnVjdHVyZSBob2xkcyBkYXRh
IG1lbWJlcnMgdGhhdCB2YXJ5IGFjcm9zcyBjb250ZXh0IGdyb3Vwcy4NCi1zdHJ1Y3QgT3BhcXVl
SlNDbGFzc0NvbnRleHREYXRhIDogTm9uY29weWFibGUgew0KK3N0cnVjdCBPcGFxdWVKU0NsYXNz
Q29udGV4dERhdGEgOiBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSAgew0K
ICAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoT3BhcXVlSlNDbGFzcyopOw0KICAgICB+T3Bh
cXVlSlNDbGFzc0NvbnRleHREYXRhKCk7DQogDQpAQCAtNzksNyArODAsNyBAQA0KICAgICBKU0M6
OkpTT2JqZWN0KiBjYWNoZWRQcm90b3R5cGU7DQogfTsNCiANCi1zdHJ1Y3QgT3BhcXVlSlNDbGFz
cyA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPE9wYXF1ZUpTQ2xhc3M+IHsNCitzdHJ1Y3QgT3Bh
cXVlSlNDbGFzcyA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPE9wYXF1ZUpTQ2xhc3M+LCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlND
bGFzcz4gY3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKik7DQogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE9wYXF1ZUpTQ2xhc3M+IGNyZWF0ZU5vQXV0b21hdGljUHJvdG90eXBlKGNvbnN0IEpT
Q2xhc3NEZWZpbml0aW9uKik7DQogICAgIH5PcGFxdWVKU0NsYXNzKCk7DQpJbmRleDogSmF2YVNj
cmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0
Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlw
dENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMyArMjcs
MTQgQEANCiAjZGVmaW5lIE9wYXF1ZUpTU3RyaW5nX2gNCiANCiAjaW5jbHVkZSA8cnVudGltZS9V
U3RyaW5nLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNl
IEpTQyB7DQogICAgIGNsYXNzIElkZW50aWZpZXI7DQogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsN
CiB9DQogDQotc3RydWN0IE9wYXF1ZUpTU3RyaW5nIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8
T3BhcXVlSlNTdHJpbmc+IHsNCitzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFk
U2FmZVNoYXJlZDxPcGFxdWVKU1N0cmluZz4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
IA0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKCkgLy8gbnVs
bA0KICAgICB7DQpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9u
IDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHdvcmtpbmcg
Y29weSkNCkBAIC00Niw2ICs0Niw3IEBADQogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIg0K
ICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIg0KICNpbmNsdWRlICJSZWdFeHBDb25zdHJ1
Y3Rvci5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4NCiANCiB1c2luZyBuYW1lc3BhY2UgSlNDOw0KQEAgLTQzOSw3ICs0NDAsNyBA
QA0KICAgICByZXR1cm4gcmVzdWx0Ow0KIH0NCiANCi1zdHJ1Y3QgT3BhcXVlSlNQcm9wZXJ0eU5h
bWVBcnJheSB7DQorc3RydWN0IE9wYXF1ZUpTUHJvcGVydHlOYW1lQXJyYXkgOiBwdWJsaWMgV1RG
OjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJheShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpDQogICAgICAgICA6IHJlZkNvdW50KDApDQogICAgICAgICAsIGds
b2JhbERhdGEoZ2xvYmFsRGF0YSkNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmgJKHJldmlzaW9uIDM4
MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuaAkod29ya2luZyBjb3B5KQ0KQEAg
LTM0LDYgKzM0LDcgQEANCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIg0KICNpbmNsdWRlICJPcGNvZGUu
aCINCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+DQogDQogbmFtZXNwYWNlIEpTQyB7DQpA
QCAtMTAxLDcgKzEwMiw3IEBADQogDQogICAgIGVudW0geyBNYXhSZWVudHJ5RGVwdGggPSAxMjgg
fTsNCiANCi0gICAgY2xhc3MgTWFjaGluZSB7DQorICAgIGNsYXNzIE1hY2hpbmUgOiBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgICAgIGZyaWVuZCBjbGFzcyBDVEk7DQogICAgIHB1
YmxpYzoNCiAgICAgICAgIE1hY2hpbmUoKTsNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9TYW1w
bGluZ1Rvb2wuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL1NhbXBsaW5nVG9v
bC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9TYW1wbGluZ1Rvb2wu
aAkod29ya2luZyBjb3B5KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjZGVmaW5lIFNhbXBsaW5nVG9v
bF9oDQogDQogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0
QWxsb2NCYXNlLmg+IA0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+DQogDQpAQCAtNDQsNyArNDUsNyBAQA0KICAgICBjbGFzcyBTY29wZU5vZGU7
DQogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsNCiANCi0gICAgc3RydWN0IFNjb3BlU2FtcGxlUmVj
b3JkIHsNCisgICAgc3RydWN0IFNjb3BlU2FtcGxlUmVjb3JkIDogcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogICAgICAgICBTY29wZVNhbXBsZVJlY29yZChTY29wZU5vZGUqIHNjb3BlKQ0K
ICAgICAgICAgICAgIDogbV9zY29wZShzY29wZSkNCiAgICAgICAgICAgICAsIG1fY29kZUJsb2Nr
KDApDQpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vUmVnaXN0ZXIuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IEphdmFTY3JpcHRDb3JlL1ZNL1JlZ2lzdGVyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFT
Y3JpcHRDb3JlL1ZNL1JlZ2lzdGVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw3IEBA
DQogDQogI2luY2x1ZGUgIkpTVmFsdWUuaCINCiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5o
Pg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBKU0Mgew0K
IA0KQEAgLTQ2LDcgKzQ3LDcgQEANCiANCiAgICAgdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1l
Ow0KIA0KLSAgICBjbGFzcyBSZWdpc3RlciB7DQorICAgIGNsYXNzIFJlZ2lzdGVyIDogcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFJlZ2lzdGVyKCk7
DQogICAgICAgICBSZWdpc3RlcihKU1ZhbHVlKik7DQpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0v
Q29kZUJsb2NrLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9WTS9Db2RlQmxvY2su
aAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkNCkBAIC0zNiw2ICszNiw3IEBADQogI2luY2x1ZGUgIk5vZGVzLmgiDQogI2lu
Y2x1ZGUgIlJlZ0V4cC5oIg0KICNpbmNsdWRlICJVU3RyaW5nLmgiDQorI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPg0KIA0KQEAgLTIxMCw3ICsyMTEsNyBAQA0KICNlbmRpZg0KICAgICB9Ow0KIA0K
LSAgICBzdHJ1Y3QgQ29kZUJsb2NrIHsNCisgICAgc3RydWN0IENvZGVCbG9jayA6IHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAgICAgQ29kZUJsb2NrKFNjb3BlTm9kZSogb3duZXJO
b2RlLCBDb2RlVHlwZSBjb2RlVHlwZSwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNl
UHJvdmlkZXIsIHVuc2lnbmVkIHNvdXJjZU9mZnNldCkNCiAgICAgICAgICAgICA6IG93bmVyTm9k
ZShvd25lck5vZGUpDQogICAgICAgICAgICAgLCBnbG9iYWxEYXRhKDApDQpJbmRleDogSmF2YVNj
cmlwdENvcmUvcGNyZS9wY3JlX2V4ZWMuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENv
cmUvcGNyZS9wY3JlX2V4ZWMuY3BwCShyZXZpc2lvbiAzODMzNCkNCisrKyBKYXZhU2NyaXB0Q29y
ZS9wY3JlL3BjcmVfZXhlYy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC00Nyw2ICs0Nyw3IEBADQog
DQogI2luY2x1ZGUgPGxpbWl0cy5oPg0KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPg0KKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+DQog
DQogI2lmIFJFR0VYUF9ISVNUT0dSQU0NCkBAIC0xMTIsNyArMTEzLDcgQEANCiAgICAgY29uc3Qg
VUNoYXIqIGJyYWNrZXRTdGFydDsNCiB9Ow0KIA0KLXN0cnVjdCBNYXRjaEZyYW1lIHsNCitzdHJ1
Y3QgTWF0Y2hGcmFtZSA6IHB1YmxpYyBGYXN0QWxsb2NCYXNlIHsNCiAgICAgUmV0dXJuTG9jYXRp
b24gcmV0dXJuTG9jYXRpb247DQogICAgIHN0cnVjdCBNYXRjaEZyYW1lKiBwcmV2aW91c0ZyYW1l
Ow0KICAgICANCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCShy
ZXZpc2lvbiAzODMzNCkNCisrKyBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIu
aAkod29ya2luZyBjb3B5KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjZGVmaW5lIFNvdXJjZVByb3Zp
ZGVyX2gNCiANCiAjaW5jbHVkZSAiVVN0cmluZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KIA0KIG5hbWVzcGFjZSBKU0Mg
ew0KQEAgLTUzLDcgKzU0LDcgQEANCiAgICAgICAgIFVTdHJpbmcgbV91cmw7DQogICAgIH07DQog
DQotICAgIGNsYXNzIFVTdHJpbmdTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBTb3VyY2VQcm92aWRl
ciB7DQorICAgIGNsYXNzIFVTdHJpbmdTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBTb3VyY2VQcm92
aWRlciwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmdTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFVT
dHJpbmcmIHNvdXJjZSwgY29uc3QgVVN0cmluZyYgdXJsKQ0KICAgICAgICAgew0KSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAkocmV2aXNpb24gMzgzMzQpDQorKysgSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsNiArMjYsNyBAQA0KICNpbmNs
dWRlICJTb3VyY2VQcm92aWRlci5oIg0KICNpbmNsdWRlICJEZWJ1Z2dlci5oIg0KICNpbmNsdWRl
ICJOb2Rlcy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPg0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4NCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPg0KQEAgLTQ3LDcgKzQ4LDcgQEANCiAgICAgICAgIFQgZGF0YTsNCiAgICAg
fTsNCiANCi0gICAgY2xhc3MgUGFyc2VyIDogTm9uY29weWFibGUgew0KKyAgICBjbGFzcyBQYXJz
ZXIgOiBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1Ymxp
YzoNCiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPiBQYXNzUmVmUHRyPFBhcnNl
ZE5vZGU+IHBhcnNlKEV4ZWNTdGF0ZSosIERlYnVnZ2VyKiwgY29uc3QgU291cmNlQ29kZSYsIGlu
dCogZXJyTGluZSA9IDAsIFVTdHJpbmcqIGVyck1zZyA9IDApOw0KIA0KSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjUsNiArMjUsNyBAQA0KIA0KICNpbmNsdWRlICJM
b29rdXAuaCINCiAjaW5jbHVkZSAiVVN0cmluZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+DQogI2luY2x1ZGUgIlNvdXJjZUNvZGUu
aCINCiANCkBAIC0zMyw3ICszNCw3IEBADQogICAgIGNsYXNzIElkZW50aWZpZXI7DQogICAgIGNs
YXNzIFJlZ0V4cDsNCiANCi0gICAgY2xhc3MgTGV4ZXIgOiBOb25jb3B5YWJsZSB7DQorICAgIGNs
YXNzIExleGVyIDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAg
ICBwdWJsaWM6DQogICAgICAgICB2b2lkIHNldENvZGUoY29uc3QgU291cmNlQ29kZSYpOw0KICAg
ICAgICAgaW50IGxleCh2b2lkKiBsdmFscCwgdm9pZCogbGxvY3ApOw0KSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIEphdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsNiArMzEsNyBAQA0KICNpbmNsdWRlICJSZXN1
bHRUeXBlLmgiDQogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCINCiAjaW5jbHVkZSAiU3ltYm9sVGFi
bGUuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4NCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPg0KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+DQpAQCAtMTk5LDcgKzIwMCw3IEBADQogICAgICAgICBpbnQgbV9sYXN0TGluZTsNCiAg
ICAgfTsNCiANCi0gICAgY2xhc3MgTnVsbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgew0K
KyAgICBjbGFzcyBOdWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFdURjo6
RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIE51bGxOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6bnVsbFR5cGUoKSkNCkBAIC0yMTEsNyArMjEy
LDcgQEANCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsNCiAgICAgfTsNCiANCi0gICAgY2xh
c3MgQm9vbGVhbk5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgew0KKyAgICBjbGFzcyBCb29s
ZWFuTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIEJvb2xlYW5Ob2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgYm9vbCB2YWx1ZSkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6Ym9vbGVhbigpKQ0KQEAgLTIyNyw3ICsy
MjgsNyBAQA0KICAgICAgICAgYm9vbCBtX3ZhbHVlOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBO
dW1iZXJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsNCisgICAgY2xhc3MgTnVtYmVyTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHB1YmxpYzoNCiAgICAgICAgIE51bWJlck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBkb3VibGUgdikgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
Z2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6Y29uc3ROdW1iZXIoKSkNCkBAIC0yNDYsNyArMjQ3LDcg
QEANCiAgICAgICAgIGRvdWJsZSBtX2RvdWJsZTsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgU3Ry
aW5nTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7DQorICAgIGNsYXNzIFN0cmluZ05vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAg
ICBwdWJsaWM6DQogICAgICAgICBTdHJpbmdOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgdikgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6c3RyaW5nKCkpDQpAQCAtMzYxLDcgKzM2
Miw3IEBADQogICAgICAgICB1aW50MTZfdCBtX3N1YmV4cHJlc3Npb25TdGFydE9mZnNldDsNCiAg
ICAgfTsNCiANCi0gICAgY2xhc3MgUmVnRXhwTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsNCisgICAgY2xhc3MgUmVnRXhwTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhLCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgUmVnRXhw
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGNv
bnN0IFVTdHJpbmcmIGZsYWdzKSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShnbG9iYWxEYXRhKQ0KQEAgLTM3Nyw3ICszNzgsNyBAQA0KICAgICAgICAgVVN0cmlu
ZyBtX2ZsYWdzOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBUaGlzTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7DQorICAgIGNsYXNzIFRoaXNOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgVGhp
c05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQ0KQEAgLTM4Nyw3ICszODgsNyBAQA0KICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBSZXNvbHZl
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7DQorICAgIGNsYXNzIFJlc29sdmVOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAg
cHVibGljOg0KICAgICAgICAgUmVzb2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IHN0YXJ0T2Zmc2V0KSBKU0NfRkFTVF9DQUxMDQog
ICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQ0KQEAgLTQwOCw3ICs0MDks
NyBAQA0KICAgICAgICAgaW50MzJfdCBtX3N0YXJ0T2Zmc2V0Ow0KICAgICB9Ow0KIA0KLSAgICBj
bGFzcyBFbGVtZW50Tm9kZSA6IHB1YmxpYyBQYXJzZXJSZWZDb3VudGVkIHsNCisgICAgY2xhc3Mg
RWxlbWVudE5vZGUgOiBwdWJsaWMgUGFyc2VyUmVmQ291bnRlZCwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIEVsZW1lbnROb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50IGVsaXNpb24sIEV4cHJlc3Npb25Ob2RlKiBub2RlKSBKU0NfRkFT
VF9DQUxMDQogICAgICAgICAgICAgOiBQYXJzZXJSZWZDb3VudGVkKGdsb2JhbERhdGEpDQpAQCAt
NDM5LDcgKzQ0MCw3IEBADQogICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fbm9kZTsN
CiAgICAgfTsNCiANCi0gICAgY2xhc3MgQXJyYXlOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
IHsNCisgICAgY2xhc3MgQXJyYXlOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgQXJyYXlOb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGVsaXNpb24pIEpTQ19GQVNUX0NBTEwNCiAgICAg
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpDQpAQCAtNDc1LDcgKzQ3Niw3IEBA
DQogICAgICAgICBib29sIG1fb3B0aW9uYWw7DQogICAgIH07DQogDQotICAgIGNsYXNzIFByb3Bl
cnR5Tm9kZSA6IHB1YmxpYyBQYXJzZXJSZWZDb3VudGVkIHsNCisgICAgY2xhc3MgUHJvcGVydHlO
b2RlIDogcHVibGljIFBhcnNlclJlZkNvdW50ZWQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ug
ew0KICAgICBwdWJsaWM6DQogICAgICAgICBlbnVtIFR5cGUgeyBDb25zdGFudCwgR2V0dGVyLCBT
ZXR0ZXIgfTsNCiANCkBAIC00OTksNyArNTAwLDcgQEANCiAgICAgICAgIFR5cGUgbV90eXBlOw0K
ICAgICB9Ow0KIA0KLSAgICBjbGFzcyBQcm9wZXJ0eUxpc3ROb2RlIDogcHVibGljIE5vZGUgew0K
KyAgICBjbGFzcyBQcm9wZXJ0eUxpc3ROb2RlIDogcHVibGljIE5vZGUsIHB1YmxpYyBXVEY6OkZh
c3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgUHJvcGVydHlOb2RlKiBub2RlKSBKU0NfRkFTVF9DQUxM
DQogICAgICAgICAgICAgOiBOb2RlKGdsb2JhbERhdGEpDQpAQCAtNTI0LDcgKzUyNSw3IEBADQog
ICAgICAgICBSZWZQdHI8UHJvcGVydHlMaXN0Tm9kZT4gbV9uZXh0Ow0KICAgICB9Ow0KIA0KLSAg
ICBjbGFzcyBPYmplY3RMaXRlcmFsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7DQorICAg
IGNsYXNzIE9iamVjdExpdGVyYWxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgT2JqZWN0TGl0ZXJh
bE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQ0KQEAgLTU0Niw3ICs1NDcsNyBAQA0KICAg
ICAgICAgUmVmUHRyPFByb3BlcnR5TGlzdE5vZGU+IG1fbGlzdDsNCiAgICAgfTsNCiAgICAgDQot
ICAgIGNsYXNzIEJyYWNrZXRBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7DQorICAgIGNsYXNzIEJyYWNrZXRBY2Nlc3Nv
ck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAg
IEJyYWNrZXRBY2Nlc3Nvck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNB
c3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
Z2xvYmFsRGF0YSkNCkBAIC01NzIsNyArNTczLDcgQEANCiAgICAgICAgIGJvb2wgbV9zdWJzY3Jp
cHRIYXNBc3NpZ25tZW50czsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgRG90QWNjZXNzb3JOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ew0KKyAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIHB1YmxpYzoNCiAgICAgICAgIERvdEFjY2Vzc29yTm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkg
SlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkN
CkBAIC01OTYsNyArNTk3LDcgQEANCiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsNCiAgICAg
fTsNCiANCi0gICAgY2xhc3MgQXJndW1lbnRMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsNCisgICAg
Y2xhc3MgQXJndW1lbnRMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByKSBKU0NfRkFTVF9DQUxMDQog
ICAgICAgICAgICAgOiBOb2RlKGdsb2JhbERhdGEpDQpAQCAtNjIwLDcgKzYyMSw3IEBADQogICAg
ICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjsNCiAgICAgfTsNCiANCi0gICAgY2xh
c3MgQXJndW1lbnRzTm9kZSA6IHB1YmxpYyBQYXJzZXJSZWZDb3VudGVkIHsNCisgICAgY2xhc3Mg
QXJndW1lbnRzTm9kZSA6IHB1YmxpYyBQYXJzZXJSZWZDb3VudGVkLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgQXJndW1lbnRzTm9kZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IFBhcnNlclJl
ZkNvdW50ZWQoZ2xvYmFsRGF0YSkNCkBAIC02MzksNyArNjQwLDcgQEANCiAgICAgICAgIFJlZlB0
cjxBcmd1bWVudExpc3ROb2RlPiBtX2xpc3ROb2RlOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBO
ZXdFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhIHsNCisgICAgY2xhc3MgTmV3RXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSwgcHVibGljIFdURjo6RmFzdEFsbG9j
QmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIE5ld0V4cHJOb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpDQpAQCAtNjY0LDcgKzY2NSw3IEBADQog
ICAgICAgICBSZWZQdHI8QXJndW1lbnRzTm9kZT4gbV9hcmdzOw0KICAgICB9Ow0KIA0KLSAgICBj
bGFzcyBFdmFsRnVuY3Rpb25DYWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsNCisgICAgY2xhc3MgRXZhbEZ1bmN0aW9uQ2FsbE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIEV2
YWxGdW5jdGlvbkNhbGxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQXJndW1lbnRzTm9k
ZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGds
b2JhbERhdGEpDQpAQCAtNjgyLDcgKzY4Myw3IEBADQogICAgICAgICBSZWZQdHI8QXJndW1lbnRz
Tm9kZT4gbV9hcmdzOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBGdW5jdGlvbkNhbGxWYWx1ZU5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7DQorICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhLCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShn
bG9iYWxEYXRhKQ0KQEAgLTcwMiw3ICs3MDMsNyBAQA0KICAgICAgICAgUmVmUHRyPEFyZ3VtZW50
c05vZGU+IG1fYXJnczsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2
ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7DQorICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEsIHB1YmxpYyBXVEY6OkZh
c3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZl
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBB
cmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUoZ2xvYmFsRGF0YSkNCkBAIC03MjQsNyArNzI1LDcgQEANCiAgICAgICAgIHNpemVf
dCBtX3Njb3BlRGVwdGg7IC8vIFVzZWQgYnkgU2NvcGVkVmFyRnVuY3Rpb25DYWxsTm9kZSBhbmQg
Tm9uTG9jYWxWYXJGdW5jdGlvbkNhbGxOb2RlDQogICAgIH07DQogICAgIA0KLSAgICBjbGFzcyBG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRo
cm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsNCisgICAgY2xhc3MgRnVuY3Rpb25DYWxsQnJhY2tl
dE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAg
ICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShn
bG9iYWxEYXRhKQ0KQEAgLTc0Niw3ICs3NDcsNyBAQA0KICAgICAgICAgUmVmUHRyPEFyZ3VtZW50
c05vZGU+IG1fYXJnczsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25E
YXRhIHsNCisgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwNCiAgICAg
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpDQpAQCAtNzgxLDcgKzc4Miw3IEBA
DQogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7DQogICAgIH07DQogDQotICAgIGNsYXNzIFBv
c3RmaXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBQcmVQb3N0UmVzb2x2ZU5vZGUgew0KKyAgICBjbGFz
cyBQb3N0Zml4UmVzb2x2ZU5vZGUgOiBwdWJsaWMgUHJlUG9zdFJlc29sdmVOb2RlLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgUG9zdGZpeFJlc29s
dmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBQcmVQb3N0UmVz
b2x2ZU5vZGUoZ2xvYmFsRGF0YSwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
KQ0KQEAgLTc5NSw3ICs3OTYsNyBAQA0KICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRvcjsNCiAg
ICAgfTsNCiANCi0gICAgY2xhc3MgUG9zdGZpeEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgew0KKyAgICBjbGFzcyBQ
b3N0Zml4QnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2Fi
bGVTdWJFeHByZXNzaW9uRGF0YSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1
YmxpYzoNCiAgICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVy
YXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
Z2xvYmFsRGF0YSkNCkBAIC04MTcsNyArODE4LDcgQEANCiAgICAgICAgIE9wZXJhdG9yIG1fb3Bl
cmF0b3I7DQogICAgIH07DQogDQotICAgIGNsYXNzIFBvc3RmaXhEb3ROb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgew0KKyAgICBj
bGFzcyBQb3N0Zml4RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZVN1YkV4cHJlc3Npb25EYXRhLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAg
cHVibGljOg0KICAgICAgICAgUG9zdGZpeERvdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9y
IG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9i
YWxEYXRhKQ0KQEAgLTgzOSw3ICs4NDAsNyBAQA0KICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRv
cjsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgUG9zdGZpeEVycm9yTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsNCisgICAgY2xh
c3MgUG9zdGZpeEVycm9yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZVN1YkV4cHJlc3Npb25EYXRhLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAg
cHVibGljOg0KICAgICAgICAgUG9zdGZpeEVycm9yTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTA0K
ICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkNCkBAIC04NTksNyArODYw
LDcgQEANCiAgICAgICAgIE9wZXJhdG9yIG1fb3BlcmF0b3I7DQogICAgIH07DQogDQotICAgIGNs
YXNzIERlbGV0ZVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgew0KKyAgICBjbGFzcyBEZWxldGVSZXNvbHZlTm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhLCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgRGVsZXRlUmVz
b2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERh
dGEpDQpAQCAtODc0LDcgKzg3NSw3IEBADQogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7DQog
ICAgIH07DQogDQotICAgIGNsYXNzIERlbGV0ZUJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgew0KKyAgICBjbGFzcyBEZWxl
dGVCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0K
ICAgICAgICAgRGVsZXRlQnJhY2tldE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEpTQ19GQVNUX0NB
TEwNCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpDQpAQCAtODk0LDcg
Kzg5NSw3IEBADQogICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fc3Vic2NyaXB0Ow0K
ICAgICB9Ow0KIA0KLSAgICBjbGFzcyBEZWxldGVEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgew0KKyAgICBjbGFzcyBEZWxldGVE
b3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAg
ICBEZWxldGVEb3ROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkNCkBAIC05MTQsNyArOTE1LDcgQEANCiAg
ICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgRGVsZXRl
VmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsNCisgICAgY2xhc3MgRGVsZXRlVmFs
dWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNl
IHsNCiAgICAgcHVibGljOg0KICAgICAgICAgRGVsZXRlVmFsdWVOb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpDQpAQCAtOTMxLDcgKzkzMiw3IEBADQog
ICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjsNCiAgICAgfTsNCiANCi0gICAg
Y2xhc3MgVm9pZE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgew0KKyAgICBjbGFzcyBWb2lk
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFZvaWROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpDQpAQCAtOTQ4LDcgKzk0OSw3IEBADQogICAgICAgICBS
ZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgVHlw
ZU9mUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgew0KKyAgICBjbGFzcyBUeXBl
T2ZSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFR5cGVPZlJlc29sdmVOb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIEpTQ19GQVNUX0NB
TEwNCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEsIFJlc3VsdFR5cGU6
OnN0cmluZygpKQ0KQEAgLTk2NCw3ICs5NjUsNyBAQA0KICAgICAgICAgSWRlbnRpZmllciBtX2lk
ZW50Ow0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBUeXBlT2ZWYWx1ZU5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUgew0KKyAgICBjbGFzcyBUeXBlT2ZWYWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAg
ICAgICBUeXBlT2ZWYWx1ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
Z2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6c3RyaW5nKCkpDQpAQCAtOTgxLDcgKzk4Miw3IEBADQog
ICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjsNCiAgICAgfTsNCiANCi0gICAg
Y2xhc3MgUHJlZml4UmVzb2x2ZU5vZGUgOiBwdWJsaWMgUHJlUG9zdFJlc29sdmVOb2RlIHsNCisg
ICAgY2xhc3MgUHJlZml4UmVzb2x2ZU5vZGUgOiBwdWJsaWMgUHJlUG9zdFJlc29sdmVOb2RlLCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgUHJlZml4
UmVzb2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IFByZVBv
c3RSZXNvbHZlTm9kZShnbG9iYWxEYXRhLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpDQpAQCAtOTk1LDcgKzk5Niw3IEBADQogICAgICAgICBPcGVyYXRvciBtX29wZXJhdG9y
Ow0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBQcmVmaXhCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEgew0K
KyAgICBjbGFzcyBQcmVmaXhCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVi
bGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEsIHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkNCkBAIC0xMDE3LDcgKzEwMTgsNyBAQA0KICAg
ICAgICAgT3BlcmF0b3IgbV9vcGVyYXRvcjsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgUHJlZml4
RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVk
U3ViRXhwcmVzc2lvbkRhdGEgew0KKyAgICBjbGFzcyBQcmVmaXhEb3ROb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFByZWZp
eERvdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMDQog
ICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQ0KQEAgLTEwMzksNyArMTA0
MCw3IEBADQogICAgICAgICBPcGVyYXRvciBtX29wZXJhdG9yOw0KICAgICB9Ow0KIA0KLSAgICBj
bGFzcyBQcmVmaXhFcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7DQorICAgIGNsYXNzIFByZWZpeEVycm9yTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgUHJlZml4RXJyb3JO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJh
dG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShn
bG9iYWxEYXRhKQ0KQEAgLTEwODMsNyArMTA4NCw3IEBADQogICAgICAgICBSZWZQdHI8RXhwcmVz
c2lvbk5vZGU+IG1fZXhwcjsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgVW5hcnlQbHVzTm9kZSA6
IHB1YmxpYyBVbmFyeU9wTm9kZSB7DQorICAgIGNsYXNzIFVuYXJ5UGx1c05vZGUgOiBwdWJsaWMg
VW5hcnlPcE5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQog
ICAgICAgICBVbmFyeVBsdXNOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IFVuYXJ5T3BOb2RlKGds
b2JhbERhdGEsIFJlc3VsdFR5cGU6OmNvbnN0TnVtYmVyKCksIGV4cHIpDQpAQCAtMTA5NSw3ICsx
MDk2LDcgQEANCiAgICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgSlNDX0ZB
U1RfQ0FMTCB7IHJldHVybiBvcF90b19qc251bWJlcjsgfQ0KICAgICB9Ow0KIA0KLSAgICBjbGFz
cyBOZWdhdGVOb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsNCisgICAgY2xhc3MgTmVnYXRlTm9k
ZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAg
IHB1YmxpYzoNCiAgICAgICAgIE5lZ2F0ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eHByZXNzaW9uTm9kZSogZXhwcikgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogVW5hcnlP
cE5vZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6cmV1c2FibGVOdW1iZXIoKSwgZXhwcikNCkBA
IC0xMTA1LDcgKzExMDYsNyBAQA0KICAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBj
b25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX25lZ2F0ZTsgfQ0KICAgICB9Ow0KIA0KLSAg
ICBjbGFzcyBCaXR3aXNlTm90Tm9kZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7DQorICAgIGNsYXNz
IEJpdHdpc2VOb3ROb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgQml0d2lzZU5vdE5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcikgSlNDX0ZBU1RfQ0FMTA0KICAg
ICAgICAgICAgIDogVW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6cmV1c2FibGVO
dW1iZXIoKSwgZXhwcikNCkBAIC0xMTE1LDcgKzExMTYsNyBAQA0KICAgICAgICAgdmlydHVhbCBP
cGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2JpdG5vdDsg
fQ0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBMb2dpY2FsTm90Tm9kZSA6IHB1YmxpYyBVbmFyeU9w
Tm9kZSB7DQorICAgIGNsYXNzIExvZ2ljYWxOb3ROb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlLCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgTG9naWNh
bE5vdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcikg
SlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogVW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgUmVz
dWx0VHlwZTo6Ym9vbGVhbigpLCBleHByKQ0KQEAgLTExNzAsNyArMTE3MSw3IEBADQogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIEpTQ19GQVNUX0NBTEw7DQogICAgIH07DQogDQotICAgIGNsYXNzIE11bHROb2RlIDog
cHVibGljIEJpbmFyeU9wTm9kZSB7DQorICAgIGNsYXNzIE11bHROb2RlIDogcHVibGljIEJpbmFy
eU9wTm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAg
ICAgIE11bHROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgSlND
X0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIFJlc3Vs
dFR5cGU6OnJldXNhYmxlTnVtYmVyKCksIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50
cykNCkBAIC0xMTgwLDcgKzExODEsNyBAQA0KICAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNv
ZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX211bDsgfQ0KICAgICB9Ow0KIA0K
LSAgICBjbGFzcyBEaXZOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7DQorICAgIGNsYXNzIERp
dk5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiAgICAgcHVibGljOg0KICAgICAgICAgRGl2Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IEJpbmFyeU9wTm9k
ZShnbG9iYWxEYXRhLCBSZXN1bHRUeXBlOjpyZXVzYWJsZU51bWJlcigpLCBleHByMSwgZXhwcjIs
IHJpZ2h0SGFzQXNzaWdubWVudHMpDQpAQCAtMTE5MCw3ICsxMTkxLDcgQEANCiAgICAgICAgIHZp
cnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9k
aXY7IH0NCiAgICAgfTsNCiANCi0gICAgY2xhc3MgTW9kTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5v
ZGUgew0KKyAgICBjbGFzcyBNb2ROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSwgcHVibGljIFdU
Rjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIE1vZE5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKSBKU0NfRkFTVF9DQUxMDQogICAgICAg
ICAgICAgOiBCaW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6cmV1c2FibGVOdW1i
ZXIoKSwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQ0KQEAgLTEyMDAsNyArMTIw
MSw3IEBADQogICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEpTQ19GQVNU
X0NBTEwgeyByZXR1cm4gb3BfbW9kOyB9DQogICAgIH07DQogDQotICAgIGNsYXNzIEFkZE5vZGUg
OiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsNCisgICAgY2xhc3MgQWRkTm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAg
ICAgICBBZGROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgSlND
X0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIFJlc3Vs
dFR5cGU6OmZvckFkZChleHByMS0+cmVzdWx0RGVzY3JpcHRvcigpLCBleHByMi0+cmVzdWx0RGVz
Y3JpcHRvcigpKSwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQ0KQEAgLTEyMTAs
NyArMTIxMSw3IEBADQogICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEpT
Q19GQVNUX0NBTEwgeyByZXR1cm4gb3BfYWRkOyB9DQogICAgIH07DQogDQotICAgIGNsYXNzIFN1
Yk5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsNCisgICAgY2xhc3MgU3ViTm9kZSA6IHB1Ymxp
YyBCaW5hcnlPcE5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6
DQogICAgICAgICBTdWJOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEs
IFJlc3VsdFR5cGU6OnJldXNhYmxlTnVtYmVyKCksIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3Np
Z25tZW50cykNCkBAIC0xMjIwLDcgKzEyMjEsNyBAQA0KICAgICAgICAgdmlydHVhbCBPcGNvZGVJ
RCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX3N1YjsgfQ0KICAgICB9
Ow0KIA0KLSAgICBjbGFzcyBMZWZ0U2hpZnROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7DQor
ICAgIGNsYXNzIExlZnRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlLCBwdWJsaWMgV1RG
OjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgTGVmdFNoaWZ0Tm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwNCiAg
ICAgICAgICAgICA6IEJpbmFyeU9wTm9kZShnbG9iYWxEYXRhLCBSZXN1bHRUeXBlOjpyZXVzYWJs
ZU51bWJlcigpLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpDQpAQCAtMTIzMCw3
ICsxMjMxLDcgQEANCiAgICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgSlND
X0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9sc2hpZnQ7IH0NCiAgICAgfTsNCiANCi0gICAgY2xhc3Mg
UmlnaHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsNCisgICAgY2xhc3MgUmlnaHRT
aGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNl
IHsNCiAgICAgcHVibGljOg0KICAgICAgICAgUmlnaHRTaGlmdE5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBC
aW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6cmV1c2FibGVOdW1iZXIoKSwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQ0KQEAgLTEyNDAsNyArMTI0MSw3IEBADQog
ICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyBy
ZXR1cm4gb3BfcnNoaWZ0OyB9DQogICAgIH07DQogDQotICAgIGNsYXNzIFVuc2lnbmVkUmlnaHRT
aGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsNCisgICAgY2xhc3MgVW5zaWduZWRSaWdo
dFNoaWZ0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTA0KICAgICAg
ICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIFJlc3VsdFR5cGU6OnJldXNhYmxlTnVt
YmVyKCksIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cykNCkBAIC0xMjUwLDcgKzEy
NTEsNyBAQA0KICAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFT
VF9DQUxMIHsgcmV0dXJuIG9wX3Vyc2hpZnQ7IH0NCiAgICAgfTsNCiANCi0gICAgY2xhc3MgTGVz
c05vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsNCisgICAgY2xhc3MgTGVzc05vZGUgOiBwdWJs
aWMgQmluYXJ5T3BOb2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGlj
Og0KICAgICAgICAgTGVzc05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBCaW5hcnlPcE5vZGUoZ2xvYmFsRGF0
YSwgUmVzdWx0VHlwZTo6Ym9vbGVhbigpLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpDQpAQCAtMTI2MCw3ICsxMjYxLDcgQEANCiAgICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bj
b2RlKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9sZXNzOyB9DQogICAgIH07DQog
DQotICAgIGNsYXNzIEdyZWF0ZXJOb2RlIDogcHVibGljIFJldmVyc2VCaW5hcnlPcE5vZGUgew0K
KyAgICBjbGFzcyBHcmVhdGVyTm9kZSA6IHB1YmxpYyBSZXZlcnNlQmluYXJ5T3BOb2RlLCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgR3JlYXRlck5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKSBKU0NfRkFTVF9DQUxM
DQogICAgICAgICAgICAgOiBSZXZlcnNlQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIFJlc3VsdFR5
cGU6OmJvb2xlYW4oKSwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQ0KQEAgLTEy
NzAsNyArMTI3MSw3IEBADQogICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0
IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gb3BfbGVzczsgfQ0KICAgICB9Ow0KIA0KLSAgICBjbGFz
cyBMZXNzRXFOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7DQorICAgIGNsYXNzIExlc3NFcU5v
ZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAg
ICAgcHVibGljOg0KICAgICAgICAgTGVzc0VxTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IEJpbmFyeU9wTm9k
ZShnbG9iYWxEYXRhLCBSZXN1bHRUeXBlOjpib29sZWFuKCksIGV4cHIxLCBleHByMiwgcmlnaHRI
YXNBc3NpZ25tZW50cykNCkBAIC0xMjgwLDcgKzEyODEsNyBAQA0KICAgICAgICAgdmlydHVhbCBP
cGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2xlc3NlcTsg
fQ0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBHcmVhdGVyRXFOb2RlIDogcHVibGljIFJldmVyc2VC
aW5hcnlPcE5vZGUgew0KKyAgICBjbGFzcyBHcmVhdGVyRXFOb2RlIDogcHVibGljIFJldmVyc2VC
aW5hcnlPcE5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQog
ICAgICAgICBHcmVhdGVyRXFOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogUmV2ZXJzZUJpbmFyeU9wTm9kZShn
bG9iYWxEYXRhLCBSZXN1bHRUeXBlOjpib29sZWFuKCksIGV4cHIxLCBleHByMiwgcmlnaHRIYXNB
c3NpZ25tZW50cykNCkBAIC0xMzAzLDcgKzEzMDQsNyBAQA0KICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFT
VF9DQUxMOw0KICAgICB9Ow0KICAgICANCi0gICAgY2xhc3MgSW5zdGFuY2VPZk5vZGUgOiBwdWJs
aWMgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIHsNCisgICAgY2xhc3MgSW5zdGFuY2VPZk5vZGUgOiBw
dWJsaWMgVGhyb3dhYmxlQmluYXJ5T3BOb2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiAgICAgcHVibGljOg0KICAgICAgICAgSW5zdGFuY2VPZk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBUaHJv
d2FibGVCaW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6Ym9vbGVhbigpLCBleHBy
MSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpDQpAQCAtMTMxNSw3ICsxMzE2LDcgQEANCiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgSW5Ob2Rl
IDogcHVibGljIFRocm93YWJsZUJpbmFyeU9wTm9kZSB7DQorICAgIGNsYXNzIEluTm9kZSA6IHB1
YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
ICAgICBwdWJsaWM6DQogICAgICAgICBJbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBUaHJvd2FibGVCaW5h
cnlPcE5vZGUoZ2xvYmFsRGF0YSwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQ0K
QEAgLTEzMjUsNyArMTMyNiw3IEBADQogICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgp
IGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gb3BfaW47IH0NCiAgICAgfTsNCiANCi0gICAg
Y2xhc3MgRXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7DQorICAgIGNsYXNzIEVxdWFs
Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
ICAgICBwdWJsaWM6DQogICAgICAgICBFcXVhbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBCaW5hcnlPcE5v
ZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6Ym9vbGVhbigpLCBleHByMSwgZXhwcjIsIHJpZ2h0
SGFzQXNzaWdubWVudHMpDQpAQCAtMTMzNiw3ICsxMzM3LDcgQEANCiAgICAgICAgIHZpcnR1YWwg
T3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9lcTsgfQ0K
ICAgICB9Ow0KIA0KLSAgICBjbGFzcyBOb3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2Rl
IHsNCisgICAgY2xhc3MgTm90RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSwgcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIE5vdEVxdWFsTm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwN
CiAgICAgICAgICAgICA6IEJpbmFyeU9wTm9kZShnbG9iYWxEYXRhLCBSZXN1bHRUeXBlOjpib29s
ZWFuKCksIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cykNCkBAIC0xMzQ2LDcgKzEz
NDcsNyBAQA0KICAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFT
VF9DQUxMIHsgcmV0dXJuIG9wX25lcTsgfQ0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBTdHJpY3RF
cXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsNCisgICAgY2xhc3MgU3RyaWN0RXF1YWxO
b2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHB1YmxpYzoNCiAgICAgICAgIFN0cmljdEVxdWFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IEJpbmFy
eU9wTm9kZShnbG9iYWxEYXRhLCBSZXN1bHRUeXBlOjpib29sZWFuKCksIGV4cHIxLCBleHByMiwg
cmlnaHRIYXNBc3NpZ25tZW50cykNCkBAIC0xMzU3LDcgKzEzNTgsNyBAQA0KICAgICAgICAgdmly
dHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX3N0
cmljdGVxOyB9DQogICAgIH07DQogDQotICAgIGNsYXNzIE5vdFN0cmljdEVxdWFsTm9kZSA6IHB1
YmxpYyBCaW5hcnlPcE5vZGUgew0KKyAgICBjbGFzcyBOb3RTdHJpY3RFcXVhbE5vZGUgOiBwdWJs
aWMgQmluYXJ5T3BOb2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGlj
Og0KICAgICAgICAgTm90U3RyaWN0RXF1YWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogQmluYXJ5T3BOb2Rl
KGdsb2JhbERhdGEsIFJlc3VsdFR5cGU6OmJvb2xlYW4oKSwgZXhwcjEsIGV4cHIyLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQ0KQEAgLTEzNjcsNyArMTM2OCw3IEBADQogICAgICAgICB2aXJ0dWFsIE9w
Y29kZUlEIG9wY29kZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gb3BfbnN0cmljdGVx
OyB9DQogICAgIH07DQogDQotICAgIGNsYXNzIEJpdEFuZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BO
b2RlIHsNCisgICAgY2xhc3MgQml0QW5kTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUsIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBCaXRBbmROb2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTA0K
ICAgICAgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIFJlc3VsdFR5cGU6OnJldXNh
YmxlTnVtYmVyKCksIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cykNCkBAIC0xMzc3
LDcgKzEzNzgsNyBAQA0KICAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBK
U0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2JpdGFuZDsgfQ0KICAgICB9Ow0KIA0KLSAgICBjbGFz
cyBCaXRPck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsNCisgICAgY2xhc3MgQml0T3JOb2Rl
IDogcHVibGljIEJpbmFyeU9wTm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAg
IHB1YmxpYzoNCiAgICAgICAgIEJpdE9yTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IEJpbmFyeU9wTm9kZShn
bG9iYWxEYXRhLCBSZXN1bHRUeXBlOjpyZXVzYWJsZU51bWJlcigpLCBleHByMSwgZXhwcjIsIHJp
Z2h0SGFzQXNzaWdubWVudHMpDQpAQCAtMTM4Nyw3ICsxMzg4LDcgQEANCiAgICAgICAgIHZpcnR1
YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9iaXRv
cjsgfQ0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBCaXRYT3JOb2RlIDogcHVibGljIEJpbmFyeU9w
Tm9kZSB7DQorICAgIGNsYXNzIEJpdFhPck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlLCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgQml0WE9yTm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwN
CiAgICAgICAgICAgICA6IEJpbmFyeU9wTm9kZShnbG9iYWxEYXRhLCBSZXN1bHRUeXBlOjpyZXVz
YWJsZU51bWJlcigpLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpDQpAQCAtMTQw
MCw3ICsxNDAxLDcgQEANCiAgICAgLyoqDQogICAgICAqIG1fZXhwcjEgJiYgbV9leHByMiwgbV9l
eHByMSB8fCBtX2V4cHIyDQogICAgICAqLw0KLSAgICBjbGFzcyBMb2dpY2FsT3BOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsNCisgICAgY2xhc3MgTG9naWNhbE9wTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoN
CiAgICAgICAgIExvZ2ljYWxPcE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9wZXJhdG9yIG9w
ZXIpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERh
dGEsIFJlc3VsdFR5cGU6OmJvb2xlYW4oKSkNCkBAIC0xNDI0LDcgKzE0MjUsNyBAQA0KICAgICAv
KioNCiAgICAgICogVGhlIHRlcm5hcnkgb3BlcmF0b3IsICJtX2xvZ2ljYWwgPyBtX2V4cHIxIDog
bV9leHByMiINCiAgICAgICovDQotICAgIGNsYXNzIENvbmRpdGlvbmFsTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSB7DQorICAgIGNsYXNzIENvbmRpdGlvbmFsTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAg
ICAgICAgIENvbmRpdGlvbmFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Np
b25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMikgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFs
RGF0YSkNCkBAIC0xNDQ1LDcgKzE0NDYsNyBAQA0KICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25O
b2RlPiBtX2V4cHIyOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBSZWFkTW9kaWZ5UmVzb2x2ZU5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7DQorICAgIGNsYXNzIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhLCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9y
IG9wZXIsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
IEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEp
DQpAQCAtMTQ3MCw3ICsxNDcxLDcgQEANCiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1l
bnRzIDogMTsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgQXNzaWduUmVzb2x2ZU5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7DQorICAg
IGNsYXNzIEFzc2lnblJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAg
ICBwdWJsaWM6DQogICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkNCkBAIC0xNDkyLDcgKzE0OTMsNyBAQA0KICAgICAgICAg
Ym9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHM7DQogICAgIH07DQogDQotICAgIGNsYXNzIFJlYWRN
b2RpZnlCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZVN1YkV4cHJlc3Npb25EYXRhIHsNCisgICAgY2xhc3MgUmVhZE1vZGlmeUJyYWNrZXROb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEs
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBSZWFk
TW9kaWZ5QnJhY2tldE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShnbG9iYWxEYXRhKQ0KQEAgLTE1MjAsNyArMTUyMSw3IEBADQogICAgICAgICBib29sIG1f
cmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7DQogICAgIH07DQogDQotICAgIGNsYXNzIEFzc2lnbkJy
YWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgew0KKyAgICBjbGFzcyBBc3NpZ25CcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgQXNzaWduQnJhY2tldE5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fz
c2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMDQogICAg
ICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQ0KQEAgLTE1NDYsNyArMTU0Nyw3
IEBADQogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7DQogICAgIH07DQog
DQotICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7DQorICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSwgcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIEFzc2lnbkRv
dE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUoZ2xvYmFsRGF0YSkNCkBAIC0xNTcwLDcgKzE1NzEsNyBAQA0KICAgICAgICAgYm9vbCBtX3Jp
Z2h0SGFzQXNzaWdubWVudHM7DQogICAgIH07DQogDQotICAgIGNsYXNzIFJlYWRNb2RpZnlEb3RO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEgew0KKyAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUoZ2xvYmFsRGF0YSkNCkBAIC0xNTk2LDcgKzE1OTcsNyBAQA0KICAgICAgICAgYm9v
bCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBBc3Np
Z25FcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSB7DQorICAgIGNsYXNzIEFzc2lnbkVycm9yTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgQXNzaWduRXJyb3JOb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yIG9wZXIs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpDQpAQCAtMTYxOCw3ICsxNjE5LDcgQEANCiAgICAgICAg
IFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9yaWdodDsNCiAgICAgfTsNCiANCi0gICAgY2xhc3Mg
Q29tbWFOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsNCisgICAgY2xhc3MgQ29tbWFOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAg
ICAgcHVibGljOg0KICAgICAgICAgQ29tbWFOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpIEpTQ19GQVNUX0NB
TEwNCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpDQpAQCAtMTY0NSw3
ICsxNjQ2LDcgQEANCiAgICAgICAgIH0NCiAgICAgfTsNCiANCi0gICAgY2xhc3MgQ29uc3REZWNs
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7DQorICAgIGNsYXNzIENvbnN0RGVjbE5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAg
ICBwdWJsaWM6DQogICAgICAgICBDb25zdERlY2xOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbikgSlNDX0ZBU1Rf
Q0FMTDsNCiANCkBAIC0xNjYwLDcgKzE2NjEsNyBAQA0KICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Q29kZVNpbmdsZShDb2RlR2VuZXJhdG9yJikgSlNDX0ZBU1RfQ0FMTDsNCiAgICAg
fTsNCiANCi0gICAgY2xhc3MgQ29uc3RTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5v
ZGUgew0KKyAgICBjbGFzcyBDb25zdFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIENv
bnN0U3RhdGVtZW50Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvbnN0RGVjbE5vZGUq
IG5leHQpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFs
RGF0YSkNCkBAIC0xNjc5LDcgKzE2ODAsNyBAQA0KIA0KICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8U3RhdGVtZW50Tm9kZT4gPiBTdGF0ZW1lbnRWZWN0b3I7DQogDQotICAgIGNsYXNzIFNvdXJj
ZUVsZW1lbnRzIDogcHVibGljIFBhcnNlclJlZkNvdW50ZWQgew0KKyAgICBjbGFzcyBTb3VyY2VF
bGVtZW50cyA6IHB1YmxpYyBQYXJzZXJSZWZDb3VudGVkLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NC
YXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgU291cmNlRWxlbWVudHMoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKSA6IFBhcnNlclJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkge30NCiANCkBAIC0x
Njk1LDcgKzE2OTYsNyBAQA0KICAgICAgICAgU3RhdGVtZW50VmVjdG9yIG1fc3RhdGVtZW50czsN
CiAgICAgfTsNCiANCi0gICAgY2xhc3MgQmxvY2tOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUg
ew0KKyAgICBjbGFzcyBCbG9ja05vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFdU
Rjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIEJsb2NrTm9kZShKU0ds
b2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4pIEpTQ19GQVNUX0NBTEw7DQogDQpA
QCAtMTcxMiw3ICsxNzEzLDcgQEANCiAgICAgICAgIFN0YXRlbWVudFZlY3RvciBtX2NoaWxkcmVu
Ow0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBFbXB0eVN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3Rh
dGVtZW50Tm9kZSB7DQorICAgIGNsYXNzIEVtcHR5U3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0
ZW1lbnROb2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAg
ICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkgSlNDX0ZB
U1RfQ0FMTCAvLyBkZWJ1Zw0KICAgICAgICAgICAgIDogU3RhdGVtZW50Tm9kZShnbG9iYWxEYXRh
KQ0KQEAgLTE3MjQsNyArMTcyNSw3IEBADQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVN0
YXRlbWVudCgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQ0KICAgICB9Ow0K
ICAgICANCi0gICAgY2xhc3MgRGVidWdnZXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUgew0KKyAgICBjbGFzcyBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVt
ZW50Tm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAg
ICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpIEpTQ19G
QVNUX0NBTEwNCiAgICAgICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0YSkNCkBAIC0x
NzM0LDcgKzE3MzUsNyBAQA0KICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShD
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOw0KICAgICB9Ow0K
IA0KLSAgICBjbGFzcyBFeHByU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsN
CisgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIEV4cHJTdGF0
ZW1lbnROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIp
IEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0YSkN
CkBAIC0xNzQ4LDcgKzE3NDksNyBAQA0KICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBt
X2V4cHI7DQogICAgIH07DQogDQotICAgIGNsYXNzIFZhclN0YXRlbWVudE5vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7DQorICAgIGNsYXNzIFZhclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3Rh
dGVtZW50Tm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAg
ICAgICAgIFZhclN0YXRlbWVudE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNz
aW9uTm9kZSogZXhwcikgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogU3RhdGVtZW50Tm9k
ZShnbG9iYWxEYXRhKQ0KQEAgLTE3NjUsNyArMTc2Niw3IEBADQogICAgICAgICBSZWZQdHI8RXhw
cmVzc2lvbk5vZGU+IG1fZXhwcjsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgSWZOb2RlIDogcHVi
bGljIFN0YXRlbWVudE5vZGUgew0KKyAgICBjbGFzcyBJZk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAg
IElmTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6
IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0YSkNCkBAIC0xODAxLDcgKzE4MDIsNyBAQA0KICAgICAg
ICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+IG1fZWxzZUJsb2NrOw0KICAgICB9Ow0KIA0KLSAgICBj
bGFzcyBEb1doaWxlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsNCisgICAgY2xhc3MgRG9X
aGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIERvV2hpbGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwcikg
SlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogU3RhdGVtZW50Tm9kZShnbG9iYWxEYXRhKQ0K
QEAgLTE4MjIsNyArMTgyMyw3IEBADQogICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1f
ZXhwcjsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgV2hpbGVOb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUgew0KKyAgICBjbGFzcyBXaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFdoaWxlTm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1l
bnROb2RlKiBzdGF0ZW1lbnQpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IFN0YXRlbWVu
dE5vZGUoZ2xvYmFsRGF0YSkNCkBAIC0xODQzLDcgKzE4NDQsNyBAQA0KICAgICAgICAgUmVmUHRy
PFN0YXRlbWVudE5vZGU+IG1fc3RhdGVtZW50Ow0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBGb3JO
b2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgew0KKyAgICBjbGFzcyBGb3JOb2RlIDogcHVibGlj
IFN0YXRlbWVudE5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6
DQogICAgICAgICBGb3JOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHByMywg
U3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBib29sIGV4cHIxV2FzVmFyRGVjbCkgSlNDX0ZBU1Rf
Q0FMTA0KICAgICAgICAgICAgIDogU3RhdGVtZW50Tm9kZShnbG9iYWxEYXRhKQ0KQEAgLTE4NzEs
NyArMTg3Miw3IEBADQogICAgICAgICBib29sIG1fZXhwcjFXYXNWYXJEZWNsOw0KICAgICB9Ow0K
IA0KLSAgICBjbGFzcyBGb3JJbk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhIHsNCisgICAgY2xhc3MgRm9ySW5Ob2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSwgcHVibGljIFdURjo6
RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIEZvckluTm9kZShKU0dsb2Jh
bERhdGEqLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSop
IEpTQ19GQVNUX0NBTEw7DQogICAgICAgICBGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnRO
b2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpIEpTQ19GQVNU
X0NBTEw7DQpAQCAtMTg5Miw3ICsxODkzLDcgQEANCiAgICAgICAgIGJvb2wgbV9pZGVudElzVmFy
RGVjbDsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgQ29udGludWVOb2RlIDogcHVibGljIFN0YXRl
bWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7DQorICAgIGNsYXNzIENv
bnRpbnVlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAg
ICAgICBDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKSBKU0NfRkFTVF9DQUxM
DQogICAgICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGdsb2JhbERhdGEpDQpAQCAtMTkxMSw3ICsx
OTEyLDcgQEANCiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsNCiAgICAgfTsNCiANCi0gICAg
Y2xhc3MgQnJlYWtOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7DQorICAgIGNsYXNzIEJyZWFrTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnRO
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEsIHB1YmxpYyBXVEY6OkZhc3RBbGxv
Y0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBCcmVha05vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGds
b2JhbERhdGEpDQpAQCAtMTkzMCw3ICsxOTMxLDcgQEANCiAgICAgICAgIElkZW50aWZpZXIgbV9p
ZGVudDsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgUmV0dXJuTm9kZSA6IHB1YmxpYyBTdGF0ZW1l
bnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgew0KKyAgICBjbGFzcyBSZXR1
cm5Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAg
IFJldHVybk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogdmFs
dWUpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0
YSkNCkBAIC0xOTQ4LDcgKzE5NDksNyBAQA0KICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2Rl
PiBtX3ZhbHVlOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBXaXRoTm9kZSA6IHB1YmxpYyBTdGF0
ZW1lbnROb2RlIHsNCisgICAgY2xhc3MgV2l0aE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFdpdGhO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRl
bWVudE5vZGUqIHN0YXRlbWVudCwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25M
ZW5ndGgpIEpTQ19GQVNUX0NBTEwNCiAgICAgICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFs
RGF0YSkNCkBAIC0xOTcxLDcgKzE5NzIsNyBAQA0KICAgICAgICAgdWludDMyX3QgbV9leHByZXNz
aW9uTGVuZ3RoOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBMYWJlbE5vZGUgOiBwdWJsaWMgU3Rh
dGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsNCisgICAgY2xhc3Mg
TGFiZWxOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAg
ICAgIExhYmVsTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAg
ICAgIDogU3RhdGVtZW50Tm9kZShnbG9iYWxEYXRhKQ0KQEAgLTE5OTAsNyArMTk5MSw3IEBADQog
ICAgICAgICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4gbV9zdGF0ZW1lbnQ7DQogICAgIH07DQogDQot
ICAgIGNsYXNzIFRocm93Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgew0KKyAgICBjbGFzcyBUaHJvd05vZGUgOiBwdWJsaWMgU3RhdGVt
ZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgVGhyb3dOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwNCiAgICAg
ICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0YSkNCkBAIC0yMDA3LDcgKzIwMDgsNyBA
QA0KICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4cHI7DQogICAgIH07DQogDQot
ICAgIGNsYXNzIFRyeU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7DQorICAgIGNsYXNzIFRy
eU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFRyeU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRl
bnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9j
aykgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogU3RhdGVtZW50Tm9kZShnbG9iYWxEYXRh
KQ0KQEAgLTIwMzAsNyArMjAzMSw3IEBADQogICAgICAgICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4g
bV9maW5hbGx5QmxvY2s7DQogICAgIH07DQogDQotICAgIGNsYXNzIFBhcmFtZXRlck5vZGUgOiBw
dWJsaWMgUGFyc2VyUmVmQ291bnRlZCB7DQorICAgIGNsYXNzIFBhcmFtZXRlck5vZGUgOiBwdWJs
aWMgUGFyc2VyUmVmQ291bnRlZCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1
YmxpYzoNCiAgICAgICAgIFBhcmFtZXRlck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogUGFy
c2VyUmVmQ291bnRlZChnbG9iYWxEYXRhKQ0KQEAgLTIyMDYsNyArMjIwNyw3IEBADQogICAgICAg
ICB1bnNpZ25lZCBtX3JlZkNvdW50Ow0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBGdW5jRXhwck5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgew0KKyAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBw
dWJsaWM6DQogICAgICAgICBGdW5jRXhwck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIgPSAwKSBKU0NfRkFTVF9D
QUxMDQogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQ0KQEAgLTIyMzEs
NyArMjIzMiw3IEBADQogICAgICAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbV9ib2R5Ow0K
ICAgICB9Ow0KIA0KLSAgICBjbGFzcyBGdW5jRGVjbE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSB7DQorICAgIGNsYXNzIEZ1bmNEZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgRnVuY0RlY2xO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVy
Tm9kZSogcGFyYW1ldGVyID0gMCkgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAgIDogU3RhdGVt
ZW50Tm9kZShnbG9iYWxEYXRhKQ0KQEAgLTIyNTgsNyArMjI1OSw3IEBADQogICAgICAgICBSZWZQ
dHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbV9ib2R5Ow0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBDYXNl
Q2xhdXNlTm9kZSA6IHB1YmxpYyBQYXJzZXJSZWZDb3VudGVkIHsNCisgICAgY2xhc3MgQ2FzZUNs
YXVzZU5vZGUgOiBwdWJsaWMgUGFyc2VyUmVmQ291bnRlZCwgcHVibGljIFdURjo6RmFzdEFsbG9j
QmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIENhc2VDbGF1c2VOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwNCiAgICAg
ICAgICAgICA6IFBhcnNlclJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkNCkBAIC0yMjg1LDcgKzIyODYs
NyBAQA0KICAgICAgICAgU3RhdGVtZW50VmVjdG9yIG1fY2hpbGRyZW47DQogICAgIH07DQogDQot
ICAgIGNsYXNzIENsYXVzZUxpc3ROb2RlIDogcHVibGljIFBhcnNlclJlZkNvdW50ZWQgew0KKyAg
ICBjbGFzcyBDbGF1c2VMaXN0Tm9kZSA6IHB1YmxpYyBQYXJzZXJSZWZDb3VudGVkLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgQ2xhdXNlTGlzdE5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYXNlQ2xhdXNlTm9kZSogY2xhdXNlKSBKU0Nf
RkFTVF9DQUxMDQogICAgICAgICAgICAgOiBQYXJzZXJSZWZDb3VudGVkKGdsb2JhbERhdGEpDQpA
QCAtMjMxMSw3ICsyMzEyLDcgQEANCiAgICAgICAgIFJlZlB0cjxDbGF1c2VMaXN0Tm9kZT4gbV9u
ZXh0Ow0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBDYXNlQmxvY2tOb2RlIDogcHVibGljIFBhcnNl
clJlZkNvdW50ZWQgew0KKyAgICBjbGFzcyBDYXNlQmxvY2tOb2RlIDogcHVibGljIFBhcnNlclJl
ZkNvdW50ZWQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAg
ICAgICBDYXNlQmxvY2tOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2xhdXNlTGlzdE5v
ZGUqIGxpc3QxLCBDYXNlQ2xhdXNlTm9kZSogZGVmYXVsdENsYXVzZSwgQ2xhdXNlTGlzdE5vZGUq
IGxpc3QyKSBKU0NfRkFTVF9DQUxMDQogICAgICAgICAgICAgOiBQYXJzZXJSZWZDb3VudGVkKGds
b2JhbERhdGEpDQpAQCAtMjMzMyw3ICsyMzM0LDcgQEANCiAgICAgICAgIFJlZlB0cjxDbGF1c2VM
aXN0Tm9kZT4gbV9saXN0MjsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgU3dpdGNoTm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlIHsNCisgICAgY2xhc3MgU3dpdGNoTm9kZSA6IHB1YmxpYyBTdGF0
ZW1lbnROb2RlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAg
ICAgICAgU3dpdGNoTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBDYXNlQmxvY2tOb2RlKiBibG9jaykgSlNDX0ZBU1RfQ0FMTA0KICAgICAgICAgICAg
IDogU3RhdGVtZW50Tm9kZShnbG9iYWxEYXRhKQ0KSW5kZXg6IFdlYktpdC9xdC90ZXN0cy9xd2Vi
ZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvcXQvdGVzdHMv
cXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJLaXQv
cXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjcsNiArMjcsOCBAQA0KICNpbmNsdWRlIDxxd2ViaGlzdG9yeS5oPg0KICNpbmNsdWRlIDxRUmVn
RXhwPg0KICNpbmNsdWRlIDxRTmV0d29ya1JlcXVlc3Q+DQorDQorI2luY2x1ZGUgPHd0Zi9GYXN0
QWxsb2NCYXNlLmg+DQogLy9URVNURURfQ0xBU1M9DQogLy9URVNURURfRklMRVM9DQogDQpAQCAt
NjksNyArNzEsNyBAQA0KIFFfREVDTEFSRV9NRVRBVFlQRShRVmFyaWFudExpc3QpDQogUV9ERUNM
QVJFX01FVEFUWVBFKFFWYXJpYW50TWFwKQ0KIA0KLWNsYXNzIE15UU9iamVjdCA6IHB1YmxpYyBR
T2JqZWN0DQorY2xhc3MgTXlRT2JqZWN0IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBXVEY6OkZh
c3RBbGxvY0Jhc2UNCiB7DQogICAgIFFfT0JKRUNUDQogDQpAQCAtMjAzNyw3ICsyMDM5LDcgQEAN
CiAgICAgUUNPTVBBUkUobV92aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT50b0h0bWwoKSwgaHRt
bCk7DQogfQ0KIA0KLWNsYXNzIFRlc3ROZXR3b3JrTWFuYWdlciA6IHB1YmxpYyBRTmV0d29ya0Fj
Y2Vzc01hbmFnZXINCitjbGFzcyBUZXN0TmV0d29ya01hbmFnZXIgOiBwdWJsaWMgUU5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlDQogew0KIHB1YmxpYzoNCiAg
ICAgVGVzdE5ldHdvcmtNYW5hZ2VyKFFPYmplY3QqIHBhcmVudCkgOiBRTmV0d29ya0FjY2Vzc01h
bmFnZXIocGFyZW50KSB7fQ0KSW5kZXg6IFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvcXdlYmZy
YW1lLnBybw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvcXdlYmZy
YW1lLnBybwkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9x
d2ViZnJhbWUucHJvCSh3b3JraW5nIGNvcHkpDQpAQCAtNCwzICs0LDYgQEANCiBTT1VSQ0VTICAr
PSB0c3RfcXdlYmZyYW1lLmNwcA0KIFFUICs9IHRlc3RsaWIgbmV0d29yaw0KIFFNQUtFX1JQQVRI
RElSID0gJCRPVVRQVVRfRElSL2xpYiAkJFFNQUtFX1JQQVRIRElSDQorDQorTElCUyArPSAtTC4u
Ly4uLy4uLy4uL0phdmFTY3JpcHRDb3JlDQorTElCUyArPSAtbEphdmFTY3JpcHRDb3JlDQpJbmRl
eDogV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3F3ZWJwYWdlLnBybw0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9xd2VicGFnZS5wcm8JKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9xd2VicGFnZS5wcm8JKHdvcmtpbmcgY29weSkN
CkBAIC00LDMgKzQsNiBAQA0KIFNPVVJDRVMgICs9IHRzdF9xd2VicGFnZS5jcHANCiBRVCArPSB0
ZXN0bGliIG5ldHdvcmsNCiBRTUFLRV9SUEFUSERJUiA9ICQkT1VUUFVUX0RJUi9saWIgJCRRTUFL
RV9SUEFUSERJUg0KKw0KK0xJQlMgKz0gLUwuLi8uLi8uLi8uLi9KYXZhU2NyaXB0Q29yZQ0KK0xJ
QlMgKz0gLWxKYXZhU2NyaXB0Q29yZQ0KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9F
ZGl0Q29tbWFuZFF0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RWRpdENvbW1hbmRRdC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdENvbW1hbmRRdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTAgKzI3LDExIEBA
DQogDQogI2luY2x1ZGUgPFFVbmRvQ29tbWFuZD4NCiAjaW5jbHVkZSA8RWRpdENvbW1hbmQuaD4N
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCi1jbGFzcyBFZGl0Q29tbWFuZFF0
DQorY2xhc3MgRWRpdENvbW1hbmRRdCA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UNCiAjaWZu
ZGVmIFFUX05PX1VORE9DT01NQU5EDQotICAgIDogcHVibGljIFFVbmRvQ29tbWFuZA0KKyAgICAs
IHB1YmxpYyBRVW5kb0NvbW1hbmQNCiAjZW5kaWYNCiB7DQogICAgIHB1YmxpYzoNCkluZGV4OiBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCShyZXZpc2lvbiAzODMz
NCkNCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTMzLDEzICszMywxNCBAQA0KICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIN
CiAjaW5jbHVkZSAiUmVmQ291bnRlZC5oIg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPg0KIA0KIGNsYXNzIFFXZWJQYWdlOw0KIA0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBFZGl0b3JDbGllbnRRdCA6IHB1YmxpYyBF
ZGl0b3JDbGllbnQgew0KK2NsYXNzIEVkaXRvckNsaWVudFF0IDogcHVibGljIEVkaXRvckNsaWVu
dCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBFZGl0b3JDbGll
bnRRdChRV2ViUGFnZSogcGFnZSk7DQogICAgIA0KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMzMsNiArMzMsNyBAQA0KICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCINCiAjaW5jbHVk
ZSAiT3duUHRyLmgiDQogI2luY2x1ZGUgPFF0Q29yZS9RU3RyaW5nPg0KKyNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPg0KIA0KIGNsYXNzIFFXZWJQYWdlOw0KIA0KQEAgLTQyLDcgKzQzLDcg
QEANCiAgICAgY2xhc3MgU3RyaW5nOw0KICAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnRXZWJQYWdl
Ow0KIA0KLSAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnRRdCA6IHB1YmxpYyBJbnNwZWN0b3JDbGll
bnQgew0KKyAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnRRdCA6IHB1YmxpYyBJbnNwZWN0b3JDbGll
bnQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBJ
bnNwZWN0b3JDbGllbnRRdChRV2ViUGFnZSopOw0KIA0KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjMs
NiArMjMsNyBAQA0KICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIA0KICAqLw0KIA0KKyNpbmNsdWRlICJjb25maWcu
aCINCiAjaW5jbHVkZSAiRHJhZ0NsaWVudFF0LmgiDQogDQogI2luY2x1ZGUgIkNsaXBib2FyZFF0
LmgiDQpAQCAtMzEsNiArMzIsNyBAQA0KICNpbmNsdWRlIDxRRHJhZz4NCiAjaW5jbHVkZSA8UU1p
bWVEYXRhPg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsNCiANCkBAIC00NSw3ICs0Nyw3IEBADQogDQogdm9pZCBEcmFnQ2xpZW50UXQ6
OmRyYWdDb250cm9sbGVyRGVzdHJveWVkKCkNCiB7DQotICAgIGRlbGV0ZSB0aGlzOw0KKyAgICBX
VEY6OmZhc3REZWxldGUodGhpcyk7DQogfQ0KIA0KIERyYWdTb3VyY2VBY3Rpb24gRHJhZ0NsaWVu
dFF0OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikNCkBAIC02
NCw3ICs2Niw3IEBADQogICAgIHN0YXRpY19jYXN0PENsaXBib2FyZFF0Kj4oY2xpcGJvYXJkKS0+
aW52YWxpZGF0ZVdyaXRhYmxlRGF0YSgpOw0KICAgICBRV2lkZ2V0KiB2aWV3ID0gbV93ZWJQYWdl
LT52aWV3KCk7DQogICAgIGlmICh2aWV3KSB7DQotICAgICAgICBRRHJhZyAqZHJhZyA9IG5ldyBR
RHJhZyh2aWV3KTsNCisgICAgICAgIFFEcmFnICpkcmFnID0gV1RGOjpmYXN0TmV3PFFEcmFnPih2
aWV3KTsNCiAgICAgICAgIGRyYWctPnNldE1pbWVEYXRhKGNsaXBib2FyZERhdGEpOw0KICAgICAg
ICAgZHJhZy0+c3RhcnQoKTsNCiAgICAgfQ0KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9Db250ZXh0TWVudUNsaWVudFF0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjgsMTIgKzI4LDEzIEBADQogDQogI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50Lmgi
DQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPFJlZkNvdW50
ZWQuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogICAgIGNsYXNzIENvbnRleHRNZW51Ow0K
IA0KLSAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudFF0IDogcHVibGljIENvbnRleHRNZW51Q2xp
ZW50DQorICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50UXQgOiBwdWJsaWMgQ29udGV4dE1lbnVD
bGllbnQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UNCiAgICAgew0KICAgICBwdWJsaWM6DQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKTsNCkluZGV4OiBXZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTY4LDYgKzY4LDggQEANCiAjZW5kaWYNCiAj
aW5jbHVkZSAicXdlYmhpc3RvcnlfcC5oIg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KKw0KIHN0YXRpYyBib29sIGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcyA9IGZhbHNlOw0K
IHN0YXRpYyBib29sIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsNCiANCkBAIC0x
MDA3LDcgKzEwMDksNyBAQA0KIA0KIGNvbnN0IHVuc2lnbmVkIG51bXFTdHlsZVNoZWV0UHJvcGVy
dGllcyA9IHNpemVvZihxc3R5bGVTaGVldFByb3BlcnRpZXMpIC8gc2l6ZW9mKHFzdHlsZVNoZWV0
UHJvcGVydGllc1swXSk7DQogDQotY2xhc3MgUXRQbHVnaW5XaWRnZXQ6IHB1YmxpYyBXaWRnZXQN
CitjbGFzcyBRdFBsdWdpbldpZGdldDogcHVibGljIFdpZGdldCwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZQ0KIHsNCiBwdWJsaWM6DQogICAgIFF0UGx1Z2luV2lkZ2V0KFFXaWRnZXQqIHcgPSAw
KTogV2lkZ2V0KHcpIHt9DQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw2ICszMyw3IEBADQogI2lu
Y2x1ZGUgIlJlZkNvdW50ZWQuaCINCiAjaW5jbHVkZSAiS1VSTC5oIg0KICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIGNsYXNz
IFFXZWJQYWdlOw0KIA0KQEAgLTQzLDcgKzQ0LDcgQEANCiAgICAgY2xhc3MgUGFnZTsNCiAgICAg
c3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7DQogDQotICAgIGNsYXNzIENocm9tZUNsaWVudFF0IDog
cHVibGljIENocm9tZUNsaWVudA0KKyAgICBjbGFzcyBDaHJvbWVDbGllbnRRdCA6IHB1YmxpYyBD
aHJvbWVDbGllbnQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UNCiAgICAgew0KICAgICBwdWJs
aWM6DQogICAgICAgICBDaHJvbWVDbGllbnRRdChRV2ViUGFnZSogd2ViUGFnZSk7DQpJbmRleDog
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmgJKHdvcmtpbmcgY29w
eSkNCkBAIC0yNCwxMCArMjQsMTEgQEANCiAgKi8NCiANCiAjaW5jbHVkZSAiRHJhZ0NsaWVudC5o
Ig0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIGNsYXNzIFFXZWJQYWdlOw0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBEcmFnQ2xpZW50UXQgOiBwdWJsaWMgRHJhZ0Ns
aWVudCB7DQorY2xhc3MgRHJhZ0NsaWVudFF0IDogcHVibGljIERyYWdDbGllbnQsIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgRHJhZ0NsaWVudFF0KFFXZWJQYWdl
KiB3ZWJQYWdlKSA6IG1fd2ViUGFnZSh3ZWJQYWdlKSB7fTsNCiAgICAgdmlydHVhbCB2b2lkIHdp
bGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwNCklu
ZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
aAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTQwLDYgKzQwLDcgQEANCiAjaW5jbHVk
ZSAiUmVmQ291bnRlZC5oIg0KICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiDQogI2luY2x1
ZGUgIlBsdWdpblZpZXcuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiBjbGFz
cyBRV2ViRnJhbWU7DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KQEAgLTU0LDcgKzU1LDcgQEAN
CiANCiAgICAgc3RydWN0IExvYWRFcnJvclJlc2V0VG9rZW47DQogDQotICAgIGNsYXNzIEZyYW1l
TG9hZGVyQ2xpZW50UXQgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50
IHsNCisgICAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRRdCA6IHB1YmxpYyBRT2JqZWN0LCBwdWJs
aWMgRnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAg
ICAgUV9PQkpFQ1QNCiANCiAgICAgICAgIGZyaWVuZCBjbGFzcyA6OlFXZWJGcmFtZTsNCkluZGV4
OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAko
cmV2aXNpb24gMzgzMzQpDQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQxLDYgKzQxLDcgQEANCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCINCiAjaW5jbHVkZSAiUGFnZS5oIg0KICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsNCiANCkBAIC02NCw3ICs2NSw3IEBADQogfTsNCiANCiANCi1jbGFzcyBJbnNw
ZWN0b3JDbGllbnRWaWV3IDogcHVibGljIFFXZWJWaWV3IHsNCitjbGFzcyBJbnNwZWN0b3JDbGll
bnRWaWV3IDogcHVibGljIFFXZWJWaWV3LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBw
dWJsaWM6DQogICAgIEluc3BlY3RvckNsaWVudFZpZXcoSW5zcGVjdG9yQ29udHJvbGxlciogY29u
dHJvbGxlcikNCiAgICAgICAgIDogUVdlYlZpZXcoMCkNCkluZGV4OiBXZWJLaXQvcXQvUXRMYXVu
Y2hlci9RdExhdW5jaGVyLnBybw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9xdC9RdExhdW5jaGVy
L1F0TGF1bmNoZXIucHJvCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJLaXQvcXQvUXRMYXVuY2hl
ci9RdExhdW5jaGVyLnBybwkod29ya2luZyBjb3B5KQ0KQEAgLTgsMyArOCw1IEBADQogDQogbWFj
eDpRVCs9eG1sIG5ldHdvcmsNCiBRTUFLRV9SUEFUSERJUiA9ICQkT1VUUFVUX0RJUi9saWIgJCRR
TUFLRV9SUEFUSERJUg0KK0xJQlMgKz0gLUwuLi8uLi8uLi9KYXZhU2NyaXB0Q29yZQ0KK0xJQlMg
Kz0gLWxKYXZhU2NyaXB0Q29yZQ0KSW5kZXg6IFdlYktpdC9xdC9RdExhdW5jaGVyL21haW4uY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L3F0L1F0TGF1bmNoZXIvbWFpbi5jcHAJKHJldmlzaW9u
IDM4MzM0KQ0KKysrIFdlYktpdC9xdC9RdExhdW5jaGVyL21haW4uY3BwCSh3b3JraW5nIGNvcHkp
DQpAQCAtNDIsNiArNDIsOCBAQA0KIA0KICNpbmNsdWRlIDxRdFVpVG9vbHMvUVVpTG9hZGVyPg0K
IA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KKw0KIGNsYXNzIFdlYlBhZ2UgOiBw
dWJsaWMgUVdlYlBhZ2UNCiB7DQogcHVibGljOg0KQEAgLTUxLDcgKzUzLDcgQEANCiAgICAgdmly
dHVhbCBRT2JqZWN0KiBjcmVhdGVQbHVnaW4oY29uc3QgUVN0cmluZyYsIGNvbnN0IFFVcmwmLCBj
b25zdCBRU3RyaW5nTGlzdCYsIGNvbnN0IFFTdHJpbmdMaXN0Jik7DQogfTsNCiANCi1jbGFzcyBN
YWluV2luZG93IDogcHVibGljIFFNYWluV2luZG93DQorY2xhc3MgTWFpbldpbmRvdyA6IHB1Ymxp
YyBRTWFpbldpbmRvdywgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZQ0KIHsNCiAgICAgUV9PQkpF
Q1QNCiBwdWJsaWM6DQpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViS2l0L3F0L0FwaS9xd2Vidmlldy5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJL
aXQvcXQvQXBpL3F3ZWJ2aWV3LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw2ICsyOSw3IEBADQog
I2lmIFFUX1ZFUlNJT04gPj0gMHgwNDA0MDANCiAjaW5jbHVkZSA8UXROZXR3b3JrL3FuZXR3b3Jr
YWNjZXNzbWFuYWdlci5oPg0KICNlbmRpZg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
Pg0KIA0KIFFUX0JFR0lOX05BTUVTUEFDRQ0KIGNsYXNzIFFOZXR3b3JrUmVxdWVzdDsNCkBAIC0z
OSw3ICs0MCw3IEBADQogY2xhc3MgUVdlYlZpZXdQcml2YXRlOw0KIGNsYXNzIFFXZWJOZXR3b3Jr
UmVxdWVzdDsNCiANCi1jbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViVmlldyA6IHB1YmxpYyBRV2lk
Z2V0DQorY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYlZpZXcgOiBwdWJsaWMgUVdpZGdldCwgcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZQ0KIHsNCiAgICAgUV9PQkpFQ1QNCiAgICAgUV9QUk9QRVJU
WShRU3RyaW5nIHRpdGxlIFJFQUQgdGl0bGUpDQpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCShyZXZpc2lvbiAz
ODMzNCkNCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
Nyw2ICsyNyw4IEBADQogI2luY2x1ZGUgPFF0Q29yZS9xb2JqZWN0Lmg+DQogI2luY2x1ZGUgPFF0
R3VpL3F3aWRnZXQuaD4NCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCisNCiBR
VF9CRUdJTl9OQU1FU1BBQ0UNCiBjbGFzcyBRTmV0d29ya1Byb3h5Ow0KIGNsYXNzIFFVbmRvU3Rh
Y2s7DQpAQCAtNTcsNyArNTksNyBAQA0KICAgICBjbGFzcyBIaXRUZXN0UmVzdWx0Ow0KIH0NCiAN
Ci1jbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViUGFnZSA6IHB1YmxpYyBRT2JqZWN0DQorY2xhc3Mg
UVdFQktJVF9FWFBPUlQgUVdlYlBhZ2UgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZQ0KIHsNCiAgICAgUV9PQkpFQ1QNCiANCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3
ZWJoaXN0b3J5X3AuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmhpc3Rvcnlf
cC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5X3AuaAko
d29ya2luZyBjb3B5KQ0KQEAgLTIyLDggKzIyLDkgQEANCiANCiAjaW5jbHVkZSAiQmFja0Zvcndh
cmRMaXN0LmgiDQogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0
QWxsb2NCYXNlLmg+DQogDQotY2xhc3MgUVdlYkhpc3RvcnlJdGVtUHJpdmF0ZSA6IHB1YmxpYyBR
U2hhcmVkRGF0YQ0KK2NsYXNzIFFXZWJIaXN0b3J5SXRlbVByaXZhdGUgOiBwdWJsaWMgUVNoYXJl
ZERhdGEsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UNCiB7DQogcHVibGljOg0KICAgICBRV2Vi
SGlzdG9yeUl0ZW1Qcml2YXRlKFdlYkNvcmU6Okhpc3RvcnlJdGVtICppKQ0KQEAgLTQwLDcgKzQx
LDcgQEANCiAgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKml0ZW07DQogfTsNCiANCi1jbGFzcyBR
V2ViSGlzdG9yeVByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGENCitjbGFzcyBRV2ViSGlzdG9y
eVByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UN
CiB7DQogcHVibGljOg0KICAgICBRV2ViSGlzdG9yeVByaXZhdGUoV2ViQ29yZTo6QmFja0Zvcndh
cmRMaXN0ICpsKQ0KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksNiArMjksNyBAQA0K
ICNpbmNsdWRlIDxRdE5ldHdvcmsvcW5ldHdvcmthY2Nlc3NtYW5hZ2VyLmg+DQogI2VuZGlmDQog
I2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2Uu
aD4NCiANCiBRVF9CRUdJTl9OQU1FU1BBQ0UNCiBjbGFzcyBRUmVjdDsNCkBAIC05NSw3ICs5Niw3
IEBADQogICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZTsNCiB9Ow0KIA0KLWNsYXNzIFFXRUJLSVRf
RVhQT1JUIFFXZWJGcmFtZSA6IHB1YmxpYyBRT2JqZWN0DQorY2xhc3MgUVdFQktJVF9FWFBPUlQg
UVdlYkZyYW1lIDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UNCiB7
DQogICAgIFFfT0JKRUNUDQogICAgIFFfUFJPUEVSVFkocXJlYWwgdGV4dFNpemVNdWx0aXBsaWVy
IFJFQUQgdGV4dFNpemVNdWx0aXBsaWVyIFdSSVRFIHNldFRleHRTaXplTXVsdGlwbGllciBERVNJ
R05BQkxFIGZhbHNlKQ0KQEAgLTEwNywxMCArMTA4LDEwIEBADQogICAgIFFfUFJPUEVSVFkoUVBv
aW50IHNjcm9sbE9mZnNldCBSRUFEIHNjcm9sbE9mZnNldCBXUklURSBzZXRTY3JvbGxPZmZzZXQp
DQogcHJpdmF0ZToNCiAgICAgUVdlYkZyYW1lKFFXZWJQYWdlICpwYXJlbnQsIFFXZWJGcmFtZURh
dGEgKmZyYW1lRGF0YSk7DQotICAgIFFXZWJGcmFtZShRV2ViRnJhbWUgKnBhcmVudCwgUVdlYkZy
YW1lRGF0YSAqZnJhbWVEYXRhKTsNCiAgICAgflFXZWJGcmFtZSgpOw0KIA0KIHB1YmxpYzoNCisg
ICAgUVdlYkZyYW1lKFFXZWJGcmFtZSAqcGFyZW50LCBRV2ViRnJhbWVEYXRhICpmcmFtZURhdGEp
Ow0KICAgICBRV2ViUGFnZSAqcGFnZSgpIGNvbnN0Ow0KIA0KICAgICB2b2lkIGxvYWQoY29uc3Qg
UVVybCAmdXJsKTsNCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTMyLDEzICszMiwxNCBAQA0KICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCINCiAjaW5jbHVkZSAi
SW1hZ2UuaCINCiAjaW5jbHVkZSAiSW50U2l6ZS5oIg0KKyNpbmNsdWRlICJ3dGYvRmFzdEFsbG9j
QmFzZS5oIg0KIA0KICNpbmNsdWRlIDxRSGFzaD4NCiAjaW5jbHVkZSA8UVNoYXJlZERhdGE+DQog
I2luY2x1ZGUgPFFVcmw+DQogI2luY2x1ZGUgPFFGaWxlSW5mbz4NCiANCi1jbGFzcyBRV2ViU2V0
dGluZ3NQcml2YXRlDQorY2xhc3MgUVdlYlNldHRpbmdzUHJpdmF0ZSA6IHB1YmxpYyBXVEY6OkZh
c3RBbGxvY0Jhc2UNCiB7DQogcHVibGljOg0KICAgICBRV2ViU2V0dGluZ3NQcml2YXRlKFdlYkNv
cmU6OlNldHRpbmdzICp3Y1NldHRpbmdzID0gMCkNCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlX3AuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTMzLDYgKzMzLDcgQEANCiAjaW5jbHVkZSAiS1VSTC5oIg0KICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUNCkBAIC00Nyw3ICs0OCw3
IEBADQogICAgIGNsYXNzIFBhZ2U7DQogDQogI2lmbmRlZiBRVF9OT19DVVJTT1INCi0gICAgY2xh
c3MgU2V0Q3Vyc29yRXZlbnQgOiBwdWJsaWMgUUV2ZW50IHsNCisgICAgY2xhc3MgU2V0Q3Vyc29y
RXZlbnQgOiBwdWJsaWMgUUV2ZW50LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAg
cHVibGljOg0KICAgICAgICAgc3RhdGljIGNvbnN0IGludCBFdmVudFR5cGUgPSA3MjQ7DQogICAg
ICAgICBTZXRDdXJzb3JFdmVudChjb25zdCBRQ3Vyc29yJik7DQpAQCAtNjUsNyArNjYsNyBAQA0K
IGNsYXNzIFFCaXRBcnJheTsNCiBRVF9FTkRfTkFNRVNQQUNFDQogDQotY2xhc3MgUVdlYlBhZ2VQ
cml2YXRlDQorY2xhc3MgUVdlYlBhZ2VQcml2YXRlIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZQ0KIHsNCiBwdWJsaWM6DQogICAgIFFXZWJQYWdlUHJpdmF0ZShRV2ViUGFnZSAqKTsNCkluZGV4
OiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2LDcgQEANCiAjaW5jbHVk
ZSA8UXRHdWkvcXBpeG1hcC5oPg0KICNpbmNsdWRlIDxRdEd1aS9xaWNvbi5oPg0KICNpbmNsdWRl
IDxRdENvcmUvcXNoYXJlZGRhdGEuaD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4N
CiANCiBuYW1lc3BhY2UgV2ViQ29yZQ0KIHsNCkBAIC0zOCw3ICszOSw3IEBADQogY2xhc3MgUVVy
bDsNCiBRVF9FTkRfTkFNRVNQQUNFDQogDQotY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYlNldHRp
bmdzDQorY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYlNldHRpbmdzIDogcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZQ0KIHsNCiBwdWJsaWM6DQogICAgIGVudW0gRm9udEZhbWlseSB7DQpAQCAtMTAz
LDYgKzEwNCw3IEBADQogICAgIHN0YXRpYyB2b2lkIHNldE1heGltdW1QYWdlc0luQ2FjaGUoaW50
IHBhZ2VzKTsNCiAgICAgc3RhdGljIGludCBtYXhpbXVtUGFnZXNJbkNhY2hlKCk7DQogICAgIHN0
YXRpYyB2b2lkIHNldE9iamVjdENhY2hlQ2FwYWNpdGllcyhpbnQgY2FjaGVNaW5EZWFkQ2FwYWNp
dHksIGludCBjYWNoZU1heERlYWQsIGludCB0b3RhbENhcGFjaXR5KTsNCisgICAgUVdlYlNldHRp
bmdzKCk7DQogDQogcHJpdmF0ZToNCiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZTsN
CkBAIC0xMTAsNyArMTEyLDYgQEANCiANCiAgICAgUV9ESVNBQkxFX0NPUFkoUVdlYlNldHRpbmdz
KQ0KIA0KLSAgICBRV2ViU2V0dGluZ3MoKTsNCiAgICAgUVdlYlNldHRpbmdzKFdlYkNvcmU6OlNl
dHRpbmdzICpzZXR0aW5ncyk7DQogICAgIH5RV2ViU2V0dGluZ3MoKTsNCiANCkluZGV4OiBXZWJL
aXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9xdC9BcGkvcXdl
YnZpZXcuY3BwCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTI3LDggKzI3LDkgQEANCiAjaW5jbHVkZSAicWV2ZW50Lmgi
DQogI2luY2x1ZGUgInFwYWludGVyLmgiDQogI2luY2x1ZGUgInFwcmludGVyLmgiDQorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQotY2xhc3MgUVdlYlZpZXdQcml2YXRlDQorY2xh
c3MgUVdlYlZpZXdQcml2YXRlIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZQ0KIHsNCiBwdWJs
aWM6DQogICAgIFFXZWJWaWV3UHJpdmF0ZShRV2ViVmlldyAqdmlldykNCkluZGV4OiBXZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAko
d29ya2luZyBjb3B5KQ0KQEAgLTkzLDYgKzkzLDggQEANCiAjaW5jbHVkZSAicXdlYm5ldHdvcmtp
bnRlcmZhY2UuaCINCiAjZW5kaWYNCiANCisjaW5jbHVkZSAid3RmL0Zhc3RBbGxvY0Jhc2UuaCIN
CisNCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsNCiANCiAvLyBMb29rdXAgdGFibGUgbWFwcGlu
ZyBRV2ViUGFnZTo6V2ViQWN0aW9ucyB0byB0aGUgYXNzb2NpYXRlZCBFZGl0b3IgY29tbWFuZHMN
CkBAIC0yNjAsNyArMjYyLDcgQEANCiAgICAgZGVsZXRlIGN1cnJlbnRDb250ZXh0TWVudTsNCiAj
ZW5kaWYNCiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSw0KLSAgICBkZWxldGUgdW5kb1N0YWNrOw0K
KyAgICBXVEY6OmZhc3REZWxldGUodW5kb1N0YWNrKTsNCiAjZW5kaWYNCiAgICAgZGVsZXRlIHNl
dHRpbmdzOw0KICAgICBkZWxldGUgcGFnZTsNCkBAIC0xNzE1LDggKzE3MTcsNyBAQA0KIFFVbmRv
U3RhY2sgKlFXZWJQYWdlOjp1bmRvU3RhY2soKSBjb25zdA0KIHsNCiAgICAgaWYgKCFkLT51bmRv
U3RhY2spDQotICAgICAgICBkLT51bmRvU3RhY2sgPSBuZXcgUVVuZG9TdGFjayhjb25zdF9jYXN0
PFFXZWJQYWdlICo+KHRoaXMpKTsNCi0NCisgICAgICAgIGQtPnVuZG9TdGFjayA9IFdURjo6ZmFz
dE5ldzxRVW5kb1N0YWNrPihjb25zdF9jYXN0PFFXZWJQYWdlICo+KHRoaXMpKTsNCiAgICAgcmV0
dXJuIGQtPnVuZG9TdGFjazsNCiB9DQogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSw0KSW5kZXg6
IFdlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9xdC9B
cGkvcXdlYmZyYW1lX3AuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViS2l0L3F0L0FwaS9xd2Vi
ZnJhbWVfcC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiArMjcsNyBAQA0KICNpbmNsdWRlICJF
dmVudEhhbmRsZXIuaCINCiAjaW5jbHVkZSAiS1VSTC5oIg0KICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIg0KKyNpbmNsdWRlICJ3dGYvRmFzdEFsbG9jQmFzZS5oIg0KICNpbmNsdWRlICJ3dGYv
UmVmUHRyLmgiDQogI2luY2x1ZGUgIkZyYW1lLmgiDQogDQpAQCAtNTMsNyArNTQsNyBAQA0KICAg
ICBpbnQgbWFyZ2luSGVpZ2h0Ow0KIH07DQogDQotY2xhc3MgUVdlYkZyYW1lUHJpdmF0ZQ0KK2Ns
YXNzIFFXZWJGcmFtZVByaXZhdGUgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlDQogew0KIHB1
YmxpYzoNCiAgICAgUVdlYkZyYW1lUHJpdmF0ZSgpDQpAQCAtOTMsNyArOTQsNyBAQA0KICAgICBp
bnQgbWFyZ2luSGVpZ2h0Ow0KIH07DQogDQotY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRl
DQorY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlIDogcHVibGljIFdURjo6RmFzdEFsbG9j
QmFzZQ0KIHsNCiBwdWJsaWM6DQogICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSgpIDogaXND
b250ZW50RWRpdGFibGUoZmFsc2UpLCBpc0NvbnRlbnRTZWxlY3RlZChmYWxzZSkge30NCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dENvZGVjUXQuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dENvZGVjUXQuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTI5LDEwICsyOSwxMSBAQA0KICNpbmNsdWRlICJUZXh0Q29kZWMuaCINCiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiDQogI2luY2x1ZGUgPFFUZXh0Q29kZWM+DQorI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLSAgICBjbGFz
cyBUZXh0Q29kZWNRdCA6IHB1YmxpYyBUZXh0Q29kZWMgew0KKyAgICBjbGFzcyBUZXh0Q29kZWNR
dCA6IHB1YmxpYyBUZXh0Q29kZWMsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBw
dWJsaWM6DQogICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2Rp
bmdOYW1lUmVnaXN0cmFyKTsNCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ29kZWNzKFRl
eHRDb2RlY1JlZ2lzdHJhcik7DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y1VURjE2LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VVRGMTYuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VURjE2LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMCArMjcsMTEgQEANCiAjZGVmaW5l
IFRleHRDb2RlY1VURjE2X2gNCiANCiAjaW5jbHVkZSAiVGV4dENvZGVjLmgiDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLSAgICBj
bGFzcyBUZXh0Q29kZWNVVEYxNiA6IHB1YmxpYyBUZXh0Q29kZWMgew0KKyAgICBjbGFzcyBUZXh0
Q29kZWNVVEYxNiA6IHB1YmxpYyBUZXh0Q29kZWMsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ug
ew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckVuY29kaW5nTmFt
ZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyKTsNCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
Q29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhcik7DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1BsYXRmb3JtU3RyaW5nLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQv
UGxhdGZvcm1TdHJpbmcuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1BsYXRmb3JtU3RyaW5nLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQog
DQogI2luY2x1ZGUgIlN0cmluZ0ltcGwuaCINCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiANCiAjaWYgVVNFKEpTQykNCkBA
IC01Nyw3ICs1OCw3IEBADQogY2xhc3MgU2hhcmVkQnVmZmVyOw0KIHN0cnVjdCBTdHJpbmdIYXNo
Ow0KIA0KLWNsYXNzIFN0cmluZyB7DQorY2xhc3MgU3RyaW5nIDogcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogcHVibGljOg0KICAgICBTdHJpbmcoKSB7IH0gLy8gZ2l2ZXMgbnVsbCBzdHJp
bmcsIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGVtcHR5IHN0cmluZw0KICAgICBTdHJpbmcoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOw0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3Jt
L3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjksNiArMjksNyBAQA0KIA0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KICNpbmNsdWRl
ICJMb2dnaW5nLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+DQogI2luY2x1ZGUgPHBjcmUvcGNyZS5oPg0KICNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4NCkBAIC0zOCw3ICszOSw3IEBADQogY29uc3Qgc2l6ZV90IG1heFN1YnN0cmlu
Z3MgPSAxMDsNCiBjb25zdCBzaXplX3QgbWF4T2Zmc2V0cyA9IDMgKiBtYXhTdWJzdHJpbmdzOw0K
IA0KLWNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOjpQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8
UHJpdmF0ZT4gew0KK2NsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOjpQcml2YXRlIDogcHVibGljIFJl
ZkNvdW50ZWQ8UHJpdmF0ZT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoN
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJpdmF0ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFByaXZhdGUpOyB9DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByaXZhdGU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgY2FzZVNlbnNpdGl2ZSkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IFByaXZhdGUocGF0dGVybiwgY2FzZVNlbnNpdGl2ZSkpOyB9DQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMywxMyAr
MjMsMTQgQEANCiAjZGVmaW5lIEJpZGlDb250ZXh0X2gNCiANCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+DQogDQogbmFtZXNw
YWNlIFdlYkNvcmUgew0KIA0KIC8vIFVzZWQgdG8ga2VlcCB0cmFjayBvZiBleHBsaWNpdCBlbWJl
ZGRpbmdzLg0KLWNsYXNzIEJpZGlDb250ZXh0IHsNCitjbGFzcyBCaWRpQ29udGV4dCA6IHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgQmlkaUNvbnRleHQodW5zaWdu
ZWQgY2hhciBsZXZlbCwgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIG92
ZXJyaWRlID0gZmFsc2UsIEJpZGlDb250ZXh0KiBwYXJlbnQgPSAwKQ0KICAgICAgICAgOiBtX2xl
dmVsKGxldmVsKQ0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lv
biAzODMzNCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjgsNiArMjgsNyBAQA0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+DQogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUu
aD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiAjaWYgUExBVEZPUk0oQ0Yp
IHx8IChQTEFURk9STShRVCkgJiYgUExBVEZPUk0oREFSV0lOKSkNCiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpbmdSZWY7DQpAQCAtNDksNyArNTAsNyBAQA0KIA0KIHR5
cGVkZWYgYm9vbCAoKkNoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpKFVDaGFyKTsNCiANCi1jbGFz
cyBTdHJpbmdJbXBsIDogcHVibGljIFJlZkNvdW50ZWQ8U3RyaW5nSW1wbD4gew0KK2NsYXNzIFN0
cmluZ0ltcGwgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJpbmdJbXBsPiwgcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZSB7DQogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmc7DQogICAgIGZyaWVu
ZCBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0b3I7DQogICAgIGZyaWVuZCBzdHJ1Y3QgSGFzaEFuZENo
YXJhY3RlcnNUcmFuc2xhdG9yOw0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNMYXRpbjEuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNMYXRpbjEuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0xhdGluMS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTAgKzI3LDExIEBADQogI2Rl
ZmluZSBUZXh0Q29kZWNMYXRpbjFfaA0KIA0KICNpbmNsdWRlICJUZXh0Q29kZWMuaCINCisjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQot
ICAgIGNsYXNzIFRleHRDb2RlY0xhdGluMSA6IHB1YmxpYyBUZXh0Q29kZWMgew0KKyAgICBjbGFz
cyBUZXh0Q29kZWNMYXRpbjEgOiBwdWJsaWMgVGV4dENvZGVjLCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJFbmNv
ZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhcik7DQogICAgICAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIpOw0KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjcsMTAgKzI3LDExIEBADQogI2RlZmluZSBUZXh0Q29kZWNVc2VyRGVmaW5lZF9o
DQogDQogI2luY2x1ZGUgIlRleHRDb2RlYy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi0gICAgY2xhc3MgVGV4dENvZGVjVXNl
ckRlZmluZWQgOiBwdWJsaWMgVGV4dENvZGVjIHsNCisgICAgY2xhc3MgVGV4dENvZGVjVXNlckRl
ZmluZWQgOiBwdWJsaWMgVGV4dENvZGVjLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAg
ICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVu
Y29kaW5nTmFtZVJlZ2lzdHJhcik7DQogICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNvZGVj
cyhUZXh0Q29kZWNSZWdpc3RyYXIpOw0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9t
aWNTdHJpbmcuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNT
dHJpbmcuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21p
Y1N0cmluZy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjMsMTIgKzIzLDEzIEBADQogDQogI2luY2x1
ZGUgIkF0b21pY1N0cmluZ0ltcGwuaCINCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCisj
aW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQog
DQogc3RydWN0IEF0b21pY1N0cmluZ0hhc2g7DQogDQotY2xhc3MgQXRvbWljU3RyaW5nIHsNCitj
bGFzcyBBdG9taWNTdHJpbmcgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6
DQogICAgIHN0YXRpYyB2b2lkIGluaXQoKTsNCiANCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvQ1N0cmluZy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0NTdHJp
bmcuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0NTdHJpbmcu
aAkod29ya2luZyBjb3B5KQ0KQEAgLTI4LDEzICsyOCwxNCBAQA0KIA0KICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCINCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi0gICAgY2xh
c3MgQ1N0cmluZ0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPENTdHJpbmdCdWZmZXI+IHsNCisg
ICAgY2xhc3MgQ1N0cmluZ0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPENTdHJpbmdCdWZmZXI+
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q1N0cmluZ0J1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IENTdHJpbmdCdWZmZXIobGVuZ3RoKSk7IH0NCiANCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAzODMz
NCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTI3LDEyICsyNywxMyBAQA0KICNkZWZpbmUgUmVndWxhckV4cHJlc3Npb25f
aA0KIA0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KIGNsYXNzIFN0cmluZzsNCiANCi1j
bGFzcyBSZWd1bGFyRXhwcmVzc2lvbiB7DQorY2xhc3MgUmVndWxhckV4cHJlc3Npb24gOiBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIFJlZ3VsYXJFeHByZXNzaW9u
KCk7DQogICAgIFJlZ3VsYXJFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYsIGJvb2wgY2FzZVNlbnNp
dGl2ZSA9IGZhbHNlKTsNCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L1NoYXJlZFRpbWVyUXQu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvU2hhcmVkVGltZXJRdC5oCShy
ZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L1NoYXJlZFRpbWVyUXQuaAko
d29ya2luZyBjb3B5KQ0KQEAgLTMzLDEwICszMywxMSBAQA0KIA0KICNpbmNsdWRlIDxRVGltZXI+
DQogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIFNoYXJlZFRpbWVyUXQg
OiBwdWJsaWMgUVRpbWVyIHsNCitjbGFzcyBTaGFyZWRUaW1lclF0IDogcHVibGljIFFUaW1lciwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogUV9PQkpFQ1QNCiBwcm90ZWN0ZWQ6DQogICAg
IFNoYXJlZFRpbWVyUXQoKQ0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAJKHJldmlz
aW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtMzgsNiArMzgsNyBAQA0KIA0KICNpbmNsdWRlIDxzdGRpby5oPg0KICNpbmNs
dWRlIDxzdGRsaWIuaD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiAjdW5k
ZWYgQ29weUN1cnNvcg0KIA0KQEAgLTczLDcgKzc0LDcgQEANCiBuYW1lc3BhY2Ugew0KIA0KIC8v
IEZJWE1FOiBzdGF0aWMgZGVsZXRlcg0KLWNsYXNzIEN1cnNvcnMgew0KK2NsYXNzIEN1cnNvcnMg
OiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwcm90ZWN0ZWQ6DQogICAgIEN1cnNvcnMo
KQ0KICNpZm5kZWYgUVRfTk9fQ1VSU09SDQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlw
Ym9hcmRRdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRR
dC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0
LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogDQogI2luY2x1ZGUgIkNsaXBi
b2FyZC5oIg0KICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIg0KKyNpbmNsdWRlIDx3
dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIFFUX0JFR0lOX05BTUVTUEFDRQ0KIGNsYXNzIFFNaW1l
RGF0YTsNCkBAIC0zOCw3ICszOSw3IEBADQogICAgIGNsYXNzIENhY2hlZEltYWdlOw0KIA0KICAg
ICAvLyBTdGF0ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFuZCBkcm9w
IGFuZCBjb3B5L3Bhc3RlDQotICAgIGNsYXNzIENsaXBib2FyZFF0IDogcHVibGljIENsaXBib2Fy
ZCwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsNCisgICAgY2xhc3MgQ2xpcGJvYXJkUXQg
OiBwdWJsaWMgQ2xpcGJvYXJkLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDbGlwYm9hcmRRdD4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGNv
bnN0IFFNaW1lRGF0YSogcmVhZGFibGVDbGlwYm9hcmQpDQogICAgICAgICB7DQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9RV2ViUG9wdXAuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vcXQvUVdlYlBvcHVwLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZv
cm0vcXQvUVdlYlBvcHVwLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNCwxMCArMjQsMTEgQEANCiAj
aW5jbHVkZSA8UUNvbWJvQm94Pg0KIA0KICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCINCisj
aW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQog
DQotY2xhc3MgUVdlYlBvcHVwIDogcHVibGljIFFDb21ib0JveCB7DQorY2xhc3MgUVdlYlBvcHVw
IDogcHVibGljIFFDb21ib0JveCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIFFf
T0JKRUNUDQogcHVibGljOg0KICAgICBRV2ViUG9wdXAoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQp
Ow0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFB0ckxpc3RJbXBsLmNwcA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFB0ckxpc3RJbXBsLmNwcAko
cmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkUHRyTGlzdElt
cGwuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksMTAgKzI5LDExIEBADQogI2luY2x1ZGUgPGNz
dGRkZWY+DQogI2luY2x1ZGUgPGFsZ29yaXRobT4NCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7DQogDQotY2xhc3MgRGVwcmVjYXRlZExpc3ROb2RlDQorY2xhc3MgRGVwcmVjYXRlZExpc3RO
b2RlIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZQ0KIHsNCiBwdWJsaWM6DQogICAgIERlcHJl
Y2F0ZWRMaXN0Tm9kZSh2b2lkICpkKSA6IGRhdGEoZCksIG5leHQoMCksIHByZXYoMCkgeyB9DQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNiw2ICsyNiw3
IEBADQogI2RlZmluZSBTaGFyZWRCdWZmZXJfaA0KIA0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPg0KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPg0KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+DQpAQCAtNDUsNyArNDYsNyBAQA0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1j
bGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsNCitj
bGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+LCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZl
cik7IH0NCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
Y2hhciogYywgaW50IGkpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoYywgaSkp
OyB9DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkVmFsdWVMaXN0SW1wbC5jcHAN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL0RlcHJlY2F0ZWRWYWx1ZUxpc3RJbXBs
LmNwcAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkVmFs
dWVMaXN0SW1wbC5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yNiwxMyArMjYsMTQgQEANCiAjaW5j
bHVkZSAiY29uZmlnLmgiDQogI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1ZUxpc3RJbXBsLmgiDQog
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogI2luY2x1ZGUgPHN0ZGxpYi5o
Pg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBEZXByZWNhdGVkVmFsdWVMaXN0
SW1wbDo6UHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPERlcHJlY2F0ZWRWYWx1ZUxpc3RJbXBs
OjpQcml2YXRlPiB7DQorY2xhc3MgRGVwcmVjYXRlZFZhbHVlTGlzdEltcGw6OlByaXZhdGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxEZXByZWNhdGVkVmFsdWVMaXN0SW1wbDo6UHJpdmF0ZT4sIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgUHJpdmF0ZSh2b2lkICgqZGVs
ZXRlRnVuYykoRGVwcmVjYXRlZFZhbHVlTGlzdEltcGxOb2RlICopLCBEZXByZWNhdGVkVmFsdWVM
aXN0SW1wbE5vZGUgKigqY29weUZ1bmMpKERlcHJlY2F0ZWRWYWx1ZUxpc3RJbXBsTm9kZSAqKSk7
DQogICAgIFByaXZhdGUoY29uc3QgUHJpdmF0ZSAmb3RoZXIpOw0KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vQ29udGV4dE1lbnUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQ29u
dGV4dE1lbnUuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0
TWVudS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsNiArMjYsNyBAQA0KICNpZm5kZWYgQ29udGV4
dE1lbnVfaA0KICNkZWZpbmUgQ29udGV4dE1lbnVfaA0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFs
bG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4NCiANCiAjaW5jbHVkZSAi
Q29udGV4dE1lbnVJdGVtLmgiDQpAQCAtNDMsNyArNDQsNyBAQA0KIA0KICAgICBjbGFzcyBDb250
ZXh0TWVudUNvbnRyb2xsZXI7DQogDQotICAgIGNsYXNzIENvbnRleHRNZW51IDogTm9uY29weWFi
bGUNCisgICAgY2xhc3MgQ29udGV4dE1lbnUgOiBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZQ0KICAgICB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIENvbnRleHRNZW51KGNv
bnN0IEhpdFRlc3RSZXN1bHQmKTsNCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAkocmV2aXNpb24g
MzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTMwLDYgKzMwLDcgQEANCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCINCiAjaW5jbHVkZSAi
VGltZXIuaCINCiAjaW5jbHVkZSAiV2lkZ2V0LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+DQogDQpAQCAtNDYsNyArNDcsNyBAQA0KIGNvbnN0IGZsb2F0IGNNb3VzZVdoZWVs
UGl4ZWxzUGVyTGluZVN0ZXAgPSA0MC4wZiAvIDMuMGY7DQogY29uc3QgaW50IGNBbW91bnRUb0tl
ZXBXaGVuUGFnaW5nID0gNDA7DQogDQotY2xhc3MgU2Nyb2xsYmFyIDogcHVibGljIFdpZGdldCwg
cHVibGljIFJlZkNvdW50ZWQ8U2Nyb2xsYmFyPiB7DQorY2xhc3MgU2Nyb2xsYmFyIDogcHVibGlj
IFdpZGdldCwgcHVibGljIFJlZkNvdW50ZWQ8U2Nyb2xsYmFyPiwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogcHJvdGVjdGVkOg0KICAgICBTY3JvbGxiYXIoU2Nyb2xsYmFyQ2xpZW50Kiwg
U2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplLCBTY3JvbGxiYXJUaGVt
ZSogPSAwKTsNCiANCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAkod29ya2luZyBjb3B5KQ0KQEAg
LTMxLDYgKzMxLDcgQEANCiAjZGVmaW5lIEZpbGVDaG9vc2VyX2gNCiANCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCkBAIC00NSw3ICs0Niw3
IEBADQogICAgIHZpcnR1YWwgfkZpbGVDaG9vc2VyQ2xpZW50KCk7DQogfTsNCiANCi1jbGFzcyBG
aWxlQ2hvb3NlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVDaG9vc2VyPiB7DQorY2xhc3MgRmls
ZUNob29zZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlQ2hvb3Nlcj4sIHB1YmxpYyBXVEY6OkZh
c3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZUNob29z
ZXI+IGNyZWF0ZShGaWxlQ2hvb3NlckNsaWVudCosIGNvbnN0IFN0cmluZyYgaW5pdGlhbEZpbGVu
YW1lKTsNCiAgICAgfkZpbGVDaG9vc2VyKCk7DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVTdGF0ZW1lbnQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQog
I2RlZmluZSBTUUxpdGVTdGF0ZW1lbnRfaA0KIA0KICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5o
Ig0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIHN0cnVjdCBzcWxpdGUzX3N0
bXQ7DQogDQpAQCAtMzQsNyArMzUsNyBAQA0KIA0KIGNsYXNzIFNRTFZhbHVlOw0KIA0KLWNsYXNz
IFNRTGl0ZVN0YXRlbWVudCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7DQorY2xhc3MgU1FMaXRlU3Rh
dGVtZW50IDogcHVibGljIE5vbmNvcHlhYmxlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiBwdWJsaWM6DQogICAgIFNRTGl0ZVN0YXRlbWVudChTUUxpdGVEYXRhYmFzZSYsIGNvbnN0IFN0
cmluZyYpOw0KICAgICB+U1FMaXRlU3RhdGVtZW50KCk7DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNiwx
MyArMjYsMTQgQEANCiAjaWZuZGVmIFNRTGl0ZVRyYW5zYWN0aW9uX2gNCiAjZGVmaW5lIFNRTGl0
ZVRyYW5zYWN0aW9uX2gNCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KIGNs
YXNzIFNRTGl0ZURhdGFiYXNlOw0KIA0KLWNsYXNzIFNRTGl0ZVRyYW5zYWN0aW9uIDogcHVibGlj
IE5vbmNvcHlhYmxlDQorY2xhc3MgU1FMaXRlVHJhbnNhY3Rpb24gOiBwdWJsaWMgTm9uY29weWFi
bGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UNCiB7DQogcHVibGljOg0KICAgICBTUUxpdGVU
cmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZSYgZGIpOw0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvUGF0aFF0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvUGF0aFF0LmNwcAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzksMjggKzM5
LDMwIEBADQogI2RlZmluZSBfVVNFX01BVEhfREVGSU5FUw0KICNpbmNsdWRlIDxtYXRoLmg+DQog
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQorDQogbmFtZXNwYWNlIFdlYkNvcmUg
ew0KIA0KIFBhdGg6OlBhdGgoKQ0KLSAgICA6IG1fcGF0aChuZXcgUVBhaW50ZXJQYXRoKCkpDQor
ICAgIDogbV9wYXRoKFdURjo6ZmFzdE5ldzxRUGFpbnRlclBhdGg+KCkpDQogew0KIH0NCiANCiBQ
YXRoOjp+UGF0aCgpDQogew0KLSAgICBkZWxldGUgbV9wYXRoOw0KKyAgICBXVEY6OmZhc3REZWxl
dGUobV9wYXRoKTsNCiB9DQogDQogUGF0aDo6UGF0aChjb25zdCBQYXRoJiBvdGhlcikNCi0gICAg
OiBtX3BhdGgobmV3IFFQYWludGVyUGF0aCgqb3RoZXIucGxhdGZvcm1QYXRoKCkpKQ0KKyAgICA6
IG1fcGF0aChXVEY6OmZhc3ROZXc8UVBhaW50ZXJQYXRoPigqb3RoZXIucGxhdGZvcm1QYXRoKCkp
KQ0KIHsNCiB9DQogDQogUGF0aCYgUGF0aDo6b3BlcmF0b3I9KGNvbnN0IFBhdGgmIG90aGVyKQ0K
IHsNCiAgICAgaWYgKCZvdGhlciAhPSB0aGlzKSB7DQotICAgICAgICBkZWxldGUgbV9wYXRoOw0K
LSAgICAgICAgbV9wYXRoID0gbmV3IFFQYWludGVyUGF0aCgqb3RoZXIucGxhdGZvcm1QYXRoKCkp
Ow0KKyAgICAgICAgV1RGOjpmYXN0RGVsZXRlKG1fcGF0aCk7DQorICAgICAgICBtX3BhdGggPSBX
VEY6OmZhc3ROZXc8UVBhaW50ZXJQYXRoPigqb3RoZXIucGxhdGZvcm1QYXRoKCkpOw0KICAgICB9
DQogDQogICAgIHJldHVybiAqdGhpczsNCkBAIC0yNjgsOCArMjcwLDggQEANCiAgICAgaWYgKG1f
cGF0aCkgew0KICAgICAgICAgUU1hdHJpeCBtYXQgPSB0cmFuc2Zvcm07DQogICAgICAgICBRUGFp
bnRlclBhdGggdGVtcCA9IG1hdC5tYXAoKm1fcGF0aCk7DQotICAgICAgICBkZWxldGUgbV9wYXRo
Ow0KLSAgICAgICAgbV9wYXRoID0gbmV3IFFQYWludGVyUGF0aCh0ZW1wKTsNCisgICAgICAgIFdU
Rjo6ZmFzdERlbGV0ZShtX3BhdGgpOw0KKyAgICAgICAgbV9wYXRoID0gV1RGOjpmYXN0TmV3PFFQ
YWludGVyUGF0aD4odGVtcCk7DQogICAgIH0NCiB9DQogDQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFkaWVudFF0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhZGllbnRRdC5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhZGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkN
CkBAIC0zNiw3ICszNiw3IEBADQogDQogdm9pZCBHcmFkaWVudDo6cGxhdGZvcm1EZXN0cm95KCkN
CiB7DQotICAgIGRlbGV0ZSBtX2dyYWRpZW50Ow0KKyAgICBXVEY6OmZhc3REZWxldGUobV9ncmFk
aWVudCk7DQogICAgIG1fZ3JhZGllbnQgPSAwOw0KIH0NCiANCkBAIC00Niw5ICs0Niw5IEBADQog
ICAgICAgICByZXR1cm4gbV9ncmFkaWVudDsNCiANCiAgICAgaWYgKG1fcmFkaWFsKQ0KLSAgICAg
ICAgbV9ncmFkaWVudCA9IG5ldyBRUmFkaWFsR3JhZGllbnQobV9wMS54KCksIG1fcDEueSgpLCBt
X3IxLCBtX3AwLngoKSwgbV9wMC55KCkpOw0KKyAgICAgICAgbV9ncmFkaWVudCA9IGZhc3ROZXc8
UVJhZGlhbEdyYWRpZW50PihtX3AxLngoKSwgbV9wMS55KCksIG1fcjEsIG1fcDAueCgpLCBtX3Aw
LnkoKSk7DQogICAgIGVsc2UNCi0gICAgICAgIG1fZ3JhZGllbnQgPSBuZXcgUUxpbmVhckdyYWRp
ZW50KG1fcDAueCgpLCBtX3AwLnkoKSwgbV9wMS54KCksIG1fcDEueSgpKTsNCisgICAgICAgIG1f
Z3JhZGllbnQgPSBmYXN0TmV3PFFMaW5lYXJHcmFkaWVudD4obV9wMC54KCksIG1fcDAueSgpLCBt
X3AxLngoKSwgbV9wMS55KCkpOw0KIA0KICAgICBRQ29sb3Igc3RvcENvbG9yOw0KICAgICBWZWN0
b3I8Q29sb3JTdG9wPjo6aXRlcmF0b3Igc3RvcEl0ZXJhdG9yID0gbV9zdG9wcy5iZWdpbigpOw0K
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCShy
ZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1h
Z2VRdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksMTAgKzI5LDExIEBADQogI2RlZmluZSBTdGls
bEltYWdlUXRfaA0KIA0KICNpbmNsdWRlICJJbWFnZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFs
bG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi0gICAgY2xhc3MgU3RpbGxJ
bWFnZSA6IHB1YmxpYyBJbWFnZSB7DQorICAgIGNsYXNzIFN0aWxsSW1hZ2UgOiBwdWJsaWMgSW1h
Z2UsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdGlsbEltYWdlPiBjcmVhdGUoY29uc3QgUVBpeG1hcCYgcGl4bWFw
KQ0KICAgICAgICAgew0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMjMsNiArMjMsNyBAQA0KICNkZWZpbmUgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YV9oXw0KIA0KICNpbmNsdWRlICJGb250UmVuZGVyaW5nTW9kZS5oIg0KKyNpbmNsdWRlIDx3
dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4NCiANCiBu
YW1lc3BhY2UgV2ViQ29yZSB7DQpAQCAtMzAsNyArMzEsNyBAQA0KIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsNCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOw0KIA0KLXN0cnVjdCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhIDogTm9uY29weWFibGUgew0KK3N0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIDog
Tm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICB+Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSgpOw0KIA0KICAgICBpbnQgaGFuZGxlOyAvLyBmb3IgdXNlIHdpdGggUUZv
bnREYXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250L3JlbW92ZUFwcGxpY2F0aW9uRm9udA0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNjIsNiArNjIsOCBA
QA0KICNpbmNsdWRlIDxRU3RhY2s+DQogI2luY2x1ZGUgPFFWZWN0b3I+DQogDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQorDQogI2lmbmRlZiBNX1BJDQogI2RlZmluZSBNX1BJIDMu
MTQxNTkyNjUzNTg5NzkzMjM4NDYNCiAjZW5kaWYNCkBAIC0xNjgsNyArMTcwLDcgQEANCiAgICAg
cmV0dXJuIGdyYWRpZW50Ow0KIH0NCiANCi1zdHJ1Y3QgVHJhbnNwYXJlbmN5TGF5ZXINCitzdHJ1
Y3QgVHJhbnNwYXJlbmN5TGF5ZXIgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlDQogew0KICAg
ICBUcmFuc3BhcmVuY3lMYXllcihjb25zdCBRUGFpbnRlciogcCwgY29uc3QgUVJlY3QgJnJlY3Qp
DQogICAgICAgICA6IHBpeG1hcChyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpDQpAQCAtMjAx
LDcgKzIwMyw3IEBADQogICAgIFRyYW5zcGFyZW5jeUxheWVyICYgb3BlcmF0b3I9KGNvbnN0IFRy
YW5zcGFyZW5jeUxheWVyICYpIHsgcmV0dXJuICp0aGlzOyB9DQogfTsNCiANCi1jbGFzcyBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUNCitjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGUgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlDQogew0KIHB1YmxpYzoNCiAgICAg
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWludGVyKiBwYWludGVyKTsNCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmgJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNv
ZGVyUXQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMyLDExICszMiwxMiBAQA0KICNpbmNsdWRlIDxR
dEd1aS9RUGl4bWFwPg0KICNpbmNsdWRlIDxRdENvcmUvUUxpc3Q+DQogI2luY2x1ZGUgPFF0Q29y
ZS9RSGFzaD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7DQogDQogDQotY2xhc3MgSW1hZ2VEZWNvZGVyUXQgOiBwdWJsaWMgSW1hZ2VEZWNv
ZGVyDQorY2xhc3MgSW1hZ2VEZWNvZGVyUXQgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlDQogew0KICAgICBJbWFnZURlY29kZXJRdChjb25zdCBJbWFnZURl
Y29kZXJRdCYpOw0KICAgICBJbWFnZURlY29kZXJRdCAmb3BlcmF0b3I9KGNvbnN0IEltYWdlRGVj
b2RlclF0Jik7DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMiw2ICszMiw3IEBADQogI2lu
Y2x1ZGUgIkludFJlY3QuaCINCiAjaW5jbHVkZSAiUGF0aC5oIg0KICNpbmNsdWRlICJUZXh0RGly
ZWN0aW9uLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPg0KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4NCiANCkBAIC0xMzMs
NyArMTM0LDcgQEANCiAgICAgICAgIFNwcmVhZE1ldGhvZFJlcGVhdCA9IDMNCiAgICAgfTsNCiAN
Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0IDogTm9uY29weWFibGUgew0KKyAgICBjbGFzcyBH
cmFwaGljc0NvbnRleHQgOiBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIHB1YmxpYzoNCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dCopOw0KICAgICAgICAgfkdyYXBoaWNzQ29udGV4dCgpOw0KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJKHJldmlzaW9u
IDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjUsNiArMjUsNyBAQA0KICNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpDQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIg0KICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0K
IA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCkBAIC0zOCw3ICszOSw3IEBADQogICAgICAgICBG
RUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDID0gNg0KICAgICB9Ow0KIA0KLSAgICBjbGFz
cyBGRUNvbXBvc2l0ZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgew0KKyAgICBjbGFzcyBGRUNvbXBv
c2l0ZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
ICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUNvbXBvc2l0ZT4gY3Jl
YXRlKEZpbHRlckVmZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlv
blR5cGUmLA0KICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwgY29u
c3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOw0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCShyZXZpc2lvbiAzODMzNCkNCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMjQsNiArMjQsNyBAQA0KIA0KICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpDQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIg0KKyNpbmNsdWRlIDx3
dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+DQogDQogbmFtZXNw
YWNlIFdlYkNvcmUgew0KQEAgLTM2LDcgKzM3LDcgQEANCiAgICAgICAgIEZFQ09MT1JNQVRSSVhf
VFlQRV9MVU1JTkFOQ0VUT0FMUEhBID0gNA0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBGRUNvbG9y
TWF0cml4IDogcHVibGljIEZpbHRlckVmZmVjdCB7DQorICAgIGNsYXNzIEZFQ29sb3JNYXRyaXgg
OiBwdWJsaWMgRmlsdGVyRWZmZWN0LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAg
cHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVDb2xvck1hdHJpeD4gY3JlYXRl
KEZpbHRlckVmZmVjdCosIENvbG9yTWF0cml4VHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYpOw0K
IA0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5o
CShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjQsNiArMjQsNyBAQA0KIA0KICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpDQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5o
Ig0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsNCiANCkBAIC0zNiw3ICszNyw3IEBADQogICAgICAgICBGRUJMRU5EX01PREVfTElHSFRFTiAg
PSA1DQogICAgIH07DQogDQotICAgIGNsYXNzIEZFQmxlbmQgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
IHsNCisgICAgY2xhc3MgRkVCbGVuZCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QsIHB1YmxpYyBXVEY6
OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGRUJsZW5kPiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgRmlsdGVyRWZmZWN0KiwgQmxlbmRNb2Rl
VHlwZSk7DQogICAgICAgICANCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb25lbnRUcmFuc2Zlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAkocmV2aXNpb24gMzgzMzQp
DQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNm
ZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2LDcgQEANCiAjaW5jbHVkZSAiRmlsdGVy
RWZmZWN0LmgiDQogI2luY2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiDQogDQorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4NCiANCiBu
YW1lc3BhY2UgV2ViQ29yZSB7DQpAQCAtNjEsNyArNjIsNyBAQA0KICAgICAgICAgVmVjdG9yPGZs
b2F0PiB0YWJsZVZhbHVlczsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgRkVDb21wb25lbnRUcmFu
c2ZlciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgew0KKyAgICBjbGFzcyBGRUNvbXBvbmVudFRyYW5z
ZmVyIDogcHVibGljIEZpbHRlckVmZmVjdCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFQ29tcG9uZW50VHJhbnNm
ZXI+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
JiwgDQogICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mLCBj
b25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiYpOw0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWZmaW5lVHJhbnNm
b3JtLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FmZmluZVRy
YW5zZm9ybS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0FmZmluZVRyYW5zZm9ybS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsNiArMjYsOCBAQA0KICNp
Zm5kZWYgQWZmaW5lVHJhbnNmb3JtX2gNCiAjZGVmaW5lIEFmZmluZVRyYW5zZm9ybV9oDQogDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQorDQogI2lmIFBMQVRGT1JNKENHKQ0KICNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dBZmZpbmVUcmFuc2Zvcm0uaD4NCiB0eXBlZGVmIENHQWZm
aW5lVHJhbnNmb3JtIFBsYXRmb3JtQWZmaW5lVHJhbnNmb3JtOw0KQEAgLTUxLDcgKzUzLDcgQEAN
CiBjbGFzcyBGbG9hdFBvaW50Ow0KIGNsYXNzIEZsb2F0UmVjdDsNCiANCi1jbGFzcyBBZmZpbmVU
cmFuc2Zvcm0gew0KK2NsYXNzIEFmZmluZVRyYW5zZm9ybSA6IHB1YmxpYyBXVEY6OkZhc3RBbGxv
Y0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgQWZmaW5lVHJhbnNmb3JtKCk7DQogICAgIEFmZmluZVRy
YW5zZm9ybShkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUs
IGRvdWJsZSBmKTsNCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCShyZXZpc2lvbiAz
ODMzNCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAkod29ya2luZyBjb3B5
KQ0KQEAgLTIxLDYgKzIxLDcgQEANCiAjaWZuZGVmIEljb25faA0KICNkZWZpbmUgSWNvbl9oDQog
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+DQpAQCAtNDksNyArNTAsNyBAQA0KIGNsYXNzIEludFJlY3Q7DQogY2xhc3MgU3RyaW5n
Ow0KICAgICANCi1jbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gew0KK2NsYXNz
IEljb24gOiBwdWJsaWMgUmVmQ291bnRlZDxJY29uPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9y
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SWNv
bj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOw0K
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkocmV2aXNpb24gMzgzMzQp
DQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjksNiArMjksOCBAQA0KIA0KICNpbmNsdWRlICJGbG9hdFBvaW50LmgiDQogI2luY2x1
ZGUgIkdlbmVyYXRvci5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KKyNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+DQogDQpAQCAtNTUsNyArNTcsNyBAQA0KIA0KICAgICBjbGFz
cyBDb2xvcjsNCiANCi0gICAgY2xhc3MgR3JhZGllbnQgOiBwdWJsaWMgR2VuZXJhdG9yIHsNCisg
ICAgY2xhc3MgR3JhZGllbnQgOiBwdWJsaWMgR2VuZXJhdG9yLCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhZGll
bnQ+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEpDQog
ICAgICAgICB7DQpAQCAtODgsNiArOTAsMzggQEANCiANCiAgICAgICAgIHZpcnR1YWwgdm9pZCBm
aWxsKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOw0KIA0KKyAgICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdHlwZW5hbWUg
QXJnMywgdHlwZW5hbWUgQXJnND4NCisgICAgICAgaW5saW5lIFQqIGZhc3ROZXcoQXJnMSBhcmcx
LCBBcmcyIGFyZzIsIEFyZzMgYXJnMywgQXJnNCBhcmc0KQ0KKyAgICAgICB7DQorICAgICAgICAg
ICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoVCkpOw0KKyAgIA0KKyAgICAgICAgICAgaWYg
KHApIHsNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgICAg
ICAgICAgICAgIGlmIChwKQ0KKyAgICAgICAgICAgICAgICAgICAgV1RGOjpzZXRGYXN0TWFsbG9j
TWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBXVEY6OkFsbG9jVHlwZUZhc3ROZXcpOw0KKyNlbmRpZg0K
KyAgICAgICAgICAgICAgICByZXR1cm4gOjpuZXcocCkgVChhcmcxLCBhcmcyLCBhcmczLCBhcmc0
KTsNCisgICAgICAgICAgIH0NCisNCisgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICB9DQor
DQorICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBB
cmcyLCB0eXBlbmFtZSBBcmczLCB0eXBlbmFtZSBBcmc0LCB0eXBlbmFtZSBBcmc1Pg0KKyAgICAg
ICBpbmxpbmUgVCogZmFzdE5ldyhBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJnMyBhcmczLCBBcmc0
IGFyZzQsIEFyZzUgYXJnNSkNCisgICAgICAgew0KKyAgICAgICAgICAgdm9pZCogcCA9IGZhc3RN
YWxsb2Moc2l6ZW9mKFQpKTsNCisgICANCisgICAgICAgICAgIGlmIChwKSB7DQorI2lmIEVOQUJM
RShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICAgICAgICAgICAgICBpZiAocCkN
CisgICAgICAgICAgICAgICAgICAgIFdURjo6c2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5
cGUocCwgV1RGOjpBbGxvY1R5cGVGYXN0TmV3KTsNCisjZW5kaWYNCisgICAgICAgICAgICAgICAg
cmV0dXJuIDo6bmV3KHApIFQoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7DQorICAgICAg
ICAgICB9DQorDQorICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgfQ0KKw0KICAgICBwcml2
YXRlOg0KICAgICAgICAgR3JhZGllbnQoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0
UG9pbnQmIHAxKTsNCiAgICAgICAgIEdyYWRpZW50KGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBmbG9h
dCByMCwgY29uc3QgRmxvYXRQb2ludCYgcDEsIGZsb2F0IHIxKTsNCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dFByaXZhdGUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW5jbHVkZSAi
R3JhZGllbnQuaCINCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiDQogI2luY2x1ZGUgIlBh
dHRlcm4uaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7DQogDQpAQCAtOTAsNyArOTEsNyBAQA0KICAgICAgICAgQ29sb3Igc2hhZG93Q29s
b3I7DQogICAgIH07DQogDQotICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFByaXZhdGUgew0KKyAg
ICBjbGFzcyBHcmFwaGljc0NvbnRleHRQcml2YXRlIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFByaXZhdGUoKQ0KICAg
ICAgICAgICAgIDogbV9mb2N1c1JpbmdXaWR0aCgwKQ0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
MzAsMTEgKzMwLDEyIEBADQogDQogI2luY2x1ZGUgIkdlbmVyYXRvci5oIg0KICNpbmNsdWRlICJJ
bnRTaXplLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgR2VuZXJhdGVk
SW1hZ2UgOiBwdWJsaWMgSW1hZ2Ugew0KK2NsYXNzIEdlbmVyYXRlZEltYWdlIDogcHVibGljIElt
YWdlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEdlbmVyYXRlZEltYWdlPiBjcmVhdGUoUGFzc1JlZlB0cjxHZW5lcmF0b3I+IGdl
bmVyYXRvciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuaAkocmV2aXNpb24gMzgzMzQp
DQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMjksNiArMjksNyBAQA0KICNpZm5kZWYgR2x5cGhQYWdlVHJlZU5vZGVf
aA0KICNkZWZpbmUgR2x5cGhQYWdlVHJlZU5vZGVfaA0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFs
bG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KQEAgLTU3LDcgKzU4LDcg
QEANCiAvLyBtaXNzaW5nIGluIHRoZSBwYXJpbWFyeSBmb250LiBJdCBpcyBvd25lZCBieSBleGFj
dGx5IG9uZSBHbHlwaFBhZ2VUcmVlTm9kZSwNCiAvLyBhbHRob3VnaCBtdWx0aXBsZSBub2RlcyBt
YXkgcmVmZXJlbmNlIGl0IGFzIHRoZWlyICJwYWdlIiBpZiB0aGV5IGFyZSBzdXBwb3NlZA0KIC8v
IHRvIGJlIG92ZXJyaWRpbmcgdGhlIHBhcmVudCdzIG5vZGUsIGJ1dCBwcm92aWRlIG5vIGFkZGl0
aW9uYWwgaW5mb3JtYXRpb24uDQotc3RydWN0IEdseXBoUGFnZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEdseXBoUGFnZT4gew0KK3N0cnVjdCBHbHlwaFBhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHbHlw
aFBhZ2U+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R2x5cGhQYWdlPiBjcmVhdGUoR2x5cGhQYWdlVHJlZU5vZGUqIG93bmVyKQ0KICAgICB7DQog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdseXBoUGFnZShvd25lcikpOw0KSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMzgzMzQpDQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMzAsNiArMzAsNyBAQA0KICNpbmNsdWRlICJJbWFnZS5oIg0KICNpbmNsdWRlICJJbnRT
aXplLmgiDQogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPG1lbW9yeT4NCkBAIC00Miw3ICs0Myw3IEBADQogICAg
IGNsYXNzIEludFJlY3Q7DQogICAgIGNsYXNzIFN0cmluZzsNCiANCi0gICAgY2xhc3MgSW1hZ2VC
dWZmZXIgOiBOb25jb3B5YWJsZSB7DQorICAgIGNsYXNzIEltYWdlQnVmZmVyIDogTm9uY29weWFi
bGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICAv
LyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuDQogICAg
ICAgICBzdGF0aWMgc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgZ3JheVNjYWxlKQ0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRTaXplLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50U2l6ZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsNiArMjYsNyBAQA0KICNpZm5kZWYgSW50
U2l6ZV9oDQogI2RlZmluZSBJbnRTaXplX2gNCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+DQogDQogI2lmIFBMQVRGT1JNKENHKQ0K
QEAgLTU0LDcgKzU1LDcgQEANCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgSW50
U2l6ZSB7DQorY2xhc3MgSW50U2l6ZSA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1
YmxpYzoNCiAgICAgSW50U2l6ZSgpIDogbV93aWR0aCgwKSwgbV9oZWlnaHQoMCkgeyB9DQogICAg
IEludFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSA6IG1fd2lkdGgod2lkdGgpLCBtX2hlaWdo
dChoZWlnaHQpIHsgfQ0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9u
dERhdGEuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxl
Rm9udERhdGEuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaW1wbGVGb250RGF0YS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiArMjcsNyBAQA0KICNp
bmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiDQogI2luY2x1ZGUgIkdseXBoUGFnZVRyZWVOb2Rl
LmgiDQogI2luY2x1ZGUgIkdseXBoV2lkdGhNYXAuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxv
Y0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPg0KIA0KICNpZiBVU0UoQVRTVUkpDQpA
QCAtNTEsNyArNTIsNyBAQA0KIA0KIGVudW0gUGl0Y2ggeyBVbmtub3duUGl0Y2gsIEZpeGVkUGl0
Y2gsIFZhcmlhYmxlUGl0Y2ggfTsNCiANCi1jbGFzcyBTaW1wbGVGb250RGF0YSA6IHB1YmxpYyBG
b250RGF0YSB7DQorY2xhc3MgU2ltcGxlRm9udERhdGEgOiBwdWJsaWMgRm9udERhdGEsIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgU2ltcGxlRm9udERhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYsIGJvb2wgY3VzdG9tRm9udCA9IGZhbHNlLCBib29sIGxvYWRp
bmcgPSBmYWxzZSwgU1ZHRm9udERhdGEqIGRhdGEgPSAwKTsNCiAgICAgdmlydHVhbCB+U2ltcGxl
Rm9udERhdGEoKTsNCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAkod29y
a2luZyBjb3B5KQ0KQEAgLTI3LDYgKzI3LDcgQEANCiAjaWZuZGVmIFBhdHRlcm5faA0KICNkZWZp
bmUgUGF0dGVybl9oDQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCkBAIC01Nyw3ICs1OCw3IEBADQogICAgIGNsYXNzIEFmZmlu
ZVRyYW5zZm9ybTsNCiAgICAgY2xhc3MgSW1hZ2U7DQogDQotICAgIGNsYXNzIFBhdHRlcm4gOiBw
dWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7DQorICAgIGNsYXNzIFBhdHRlcm4gOiBwdWJsaWMg
UmVmQ291bnRlZDxQYXR0ZXJuPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1
YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBhdHRlcm4+IGNyZWF0ZShJbWFnZSog
dGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkNCiAgICAgICAgIHsNCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW5jbHVkZSAiSW1hZ2UuaCINCiAjaW5jbHVkZSAi
Q29sb3IuaCINCiAjaW5jbHVkZSAiSW50U2l6ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KIA0KICNpZiBQTEFURk9STShNQUMpDQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4NCkBAIC05MSw3ICs5Miw3IEBADQogLy8gQml0bWFwSW1hZ2UgQ2xhc3MNCiAvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogDQotY2xhc3MgQml0
bWFwSW1hZ2UgOiBwdWJsaWMgSW1hZ2Ugew0KK2NsYXNzIEJpdG1hcEltYWdlIDogcHVibGljIElt
YWdlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgZnJpZW5kIGNsYXNzIEdlbmVy
YXRlZEltYWdlOw0KICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0Ow0KIHB1YmxpYzoN
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRh
LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVu
dGVkRm9udERhdGEuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI3LDYgKzI3LDcgQEANCiAjZGVmaW5l
IFNlZ21lbnRlZEZvbnREYXRhX2gNCiANCiAjaW5jbHVkZSAiRm9udERhdGEuaCINCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KIA0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsNCkBAIC01MSw3ICs1Miw3IEBADQogICAgIGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBtX2ZvbnREYXRhOw0KIH07DQogDQotY2xhc3MgU2VnbWVudGVkRm9udERhdGEgOiBw
dWJsaWMgRm9udERhdGEgew0KK2NsYXNzIFNlZ21lbnRlZEZvbnREYXRhIDogcHVibGljIEZvbnRE
YXRhLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHZpcnR1YWwg
flNlZ21lbnRlZEZvbnREYXRhKCk7DQogDQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250RmFtaWx5LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRGYW1pbHkuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250RmFtaWx5LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQogI2Rl
ZmluZSBGb250RmFtaWx5X2gNCiANCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiDQorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQog
I2luY2x1ZGUgPHd0Zi9MaXN0UmVmUHRyLmg+DQogDQpAQCAtNTQsNyArNTUsNyBAQA0KICAgICBM
aXN0UmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG1fbmV4dDsNCiB9Ow0KIA0KLWNsYXNzIFNoYXJl
ZEZvbnRGYW1pbHkgOiBwdWJsaWMgRm9udEZhbWlseSwgcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVk
Rm9udEZhbWlseT4gew0KK2NsYXNzIFNoYXJlZEZvbnRGYW1pbHkgOiBwdWJsaWMgRm9udEZhbWls
eSwgcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkRm9udEZhbWlseT4sIHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkRm9udEZh
bWlseT4gY3JlYXRlKCkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiArMjcs
NyBAQA0KICNkZWZpbmUgS1VSTF9oDQogDQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogI2lmIFBMQVRGT1JNKENGKQ0KIHR5
cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkwqIENGVVJMUmVmOw0KQEAgLTU2LDcgKzU3LDcgQEAN
CiAvLyBXZSBzaG91bGQgZml4IHRoZSB0ZXJtaW5vbG9neSB0byBtYXRjaCB0aGUgVVJMIGFuZCBV
UkkgUkZDcyBhcyBjbG9zZWx5DQogLy8gYXMgcG9zc2libGUgdG8gcmVzb2x2ZSB0aGlzLg0KIA0K
LWNsYXNzIEtVUkwgew0KK2NsYXNzIEtVUkwgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiBwdWJsaWM6DQogICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwg
c3RyaW5nLg0KICAgICBLVVJMKCkgeyBpbnZhbGlkYXRlKCk7IH0NCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGgu
aAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTIyLDYgKzIyLDcgQEANCiAjZGVmaW5lIExlbmd0aF9oDQogDQogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KQEAg
LTMzLDcgKzM0LDcgQEANCiANCiBlbnVtIExlbmd0aFR5cGUgeyBBdXRvLCBSZWxhdGl2ZSwgUGVy
Y2VudCwgRml4ZWQsIFN0YXRpYywgSW50cmluc2ljLCBNaW5JbnRyaW5zaWMgfTsNCiANCi1zdHJ1
Y3QgTGVuZ3RoIHsNCitzdHJ1Y3QgTGVuZ3RoIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIExlbmd0aCgpDQogICAgICAgICA6IG1fdmFsdWUoMCkNCiAgICAgew0KSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFZhbHVlTGlzdC5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkVmFsdWVMaXN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFZhbHVlTGlzdC5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjcsMTMgKzI3LDE0IEBADQogI2RlZmluZSBEZXByZWNhdGVkVmFsdWVMaXN0X2gNCiANCiAj
aW5jbHVkZSAiRGVwcmVjYXRlZFZhbHVlTGlzdEltcGwuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogdGVtcGxhdGUgPGNsYXNz
IFQ+IGNsYXNzIERlcHJlY2F0ZWRWYWx1ZUxpc3Q7DQogdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNz
IERlcHJlY2F0ZWRWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yOw0KIA0KLXRlbXBsYXRlPGNsYXNzIFQ+
IGNsYXNzIERlcHJlY2F0ZWRWYWx1ZUxpc3ROb2RlIDogcHJpdmF0ZSBEZXByZWNhdGVkVmFsdWVM
aXN0SW1wbE5vZGUgew0KK3RlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIERlcHJlY2F0ZWRWYWx1ZUxp
c3ROb2RlIDogcHJpdmF0ZSBEZXByZWNhdGVkVmFsdWVMaXN0SW1wbE5vZGUsIHB1YmxpYyBXVEY6
OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgRGVwcmVjYXRlZFZhbHVlTGlzdE5vZGUo
Y29uc3QgVCAmdmFsKSA6IHZhbHVlKHZhbCkgeyB9DQogICAgIFQgdmFsdWU7DQpAQCAtODYsNyAr
ODcsNyBAQA0KIA0KIHRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZXBy
ZWNhdGVkVmFsdWVMaXN0PFQ+ICZhLCBjb25zdCBEZXByZWNhdGVkVmFsdWVMaXN0PFQ+ICZiKTsN
CiANCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRGVwcmVjYXRlZFZhbHVlTGlzdCB7DQordGVt
cGxhdGUgPGNsYXNzIFQ+IGNsYXNzIERlcHJlY2F0ZWRWYWx1ZUxpc3QgOiBwdWJsaWMgV1RGOjpG
YXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHR5cGVkZWYgRGVwcmVjYXRlZFZhbHVlTGlz
dEl0ZXJhdG9yPFQ+IEl0ZXJhdG9yOw0KICAgICB0eXBlZGVmIERlcHJlY2F0ZWRWYWx1ZUxpc3RJ
dGVyYXRvcjxUPiBpdGVyYXRvcjsNCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIxLDYgKzIxLDcgQEANCiAjZGVmaW5lIEZvcm1EYXRh
X2gNCiANCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPg0KIA0KQEAgLTYxLDcgKzYyLDcgQEANCiAgICAgcmV0dXJuICEoYSA9PSBiKTsN
CiB9DQogIA0KLWNsYXNzIEZvcm1EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9ybURhdGE+IHsN
CitjbGFzcyBGb3JtRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvcm1EYXRhPiwgcHVibGljIFdU
Rjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gY3JlYXRlKCk7DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUo
Y29uc3Qgdm9pZCosIHNpemVfdCk7DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAJ
KHdvcmtpbmcgY29weSkNCkBAIC0zOSw2ICszOSw3IEBADQogDQogI2luY2x1ZGUgPFFEZWJ1Zz4N
CiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQpAQCAtNTMsNyArNTQsNyBAQA0KIA0K
IEZvcm1EYXRhSU9EZXZpY2U6On5Gb3JtRGF0YUlPRGV2aWNlKCkNCiB7DQotICAgIGRlbGV0ZSBt
X2N1cnJlbnRGaWxlOw0KKyAgICBXVEY6OmZhc3REZWxldGUobV9jdXJyZW50RmlsZSk7DQogfQ0K
IA0KIHZvaWQgRm9ybURhdGFJT0RldmljZTo6bW92ZVRvTmV4dEVsZW1lbnQoKQ0KQEAgLTY4LDcg
KzY5LDcgQEANCiAgICAgICAgIHJldHVybjsNCiANCiAgICAgaWYgKCFtX2N1cnJlbnRGaWxlKQ0K
LSAgICAgICAgbV9jdXJyZW50RmlsZSA9IG5ldyBRRmlsZTsNCisgICAgICAgIG1fY3VycmVudEZp
bGUgPSBXVEY6OmZhc3ROZXc8UUZpbGU+KCk7DQogDQogICAgIG1fY3VycmVudEZpbGUtPnNldEZp
bGVOYW1lKG1fZm9ybUVsZW1lbnRzWzBdLm1fZmlsZW5hbWUpOw0KICAgICBtX2N1cnJlbnRGaWxl
LT5vcGVuKFFGaWxlOjpSZWFkT25seSk7DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAkocmV2aXNpb24gMzgzMzQpDQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgJKHdv
cmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQogI2luY2x1ZGUgPFFOZXR3b3JrQWNjZXNz
TWFuYWdlcj4NCiANCiAjaW5jbHVkZSAiRm9ybURhdGEuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiANCiBRVF9CRUdJTl9OQU1FU1BBQ0UNCiBjbGFzcyBRRmlsZTsNCkBAIC0z
Nyw3ICszOCw3IEBADQogDQogY2xhc3MgUmVzb3VyY2VIYW5kbGU7DQogDQotY2xhc3MgUU5ldHdv
cmtSZXBseUhhbmRsZXIgOiBwdWJsaWMgUU9iamVjdA0KK2NsYXNzIFFOZXR3b3JrUmVwbHlIYW5k
bGVyIDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UNCiB7DQogICAg
IFFfT0JKRUNUDQogcHVibGljOg0KQEAgLTg2LDcgKzg3LDcgQEANCiAvLyAgUUlPRGV2aWNlIGlz
IHZhbGlkIGFzIGxvbmcgZmluaXNoZWQoKSBvZiB0aGUgUU5ldHdvcmtSZXBseSBoYXMgbm90DQog
Ly8gIGJlZW4gZW1pdHRlZC4gV2l0aCB0aGUgcHJlc2VuY2Ugb2YgUU5ldHdvcmtSZXBseUhhbmRs
ZXI6OnJlbGVhc2UgSSBkbw0KIC8vICBub3Qgd2FudCB0byBndXJhbnRlZSB0aGlzLg0KLWNsYXNz
IEZvcm1EYXRhSU9EZXZpY2UgOiBwdWJsaWMgUUlPRGV2aWNlIHsNCitjbGFzcyBGb3JtRGF0YUlP
RGV2aWNlIDogcHVibGljIFFJT0RldmljZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIFFfT0JKRUNUDQogcHVibGljOg0KICAgICBGb3JtRGF0YUlPRGV2aWNlKEZvcm1EYXRhKik7
DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCw2ICszMCw3
IEBADQogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIg0KICNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oIg0KICNpbmNsdWRlICJUaW1lci5oIg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KIA0KICNpZiBVU0UoQ0ZORVRXT1JLKQ0KICNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPg0KQEAgLTc0LDcgKzc1LDcgQEANCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7DQogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50Ow0KIA0KLSAgICBjbGFz
cyBSZXNvdXJjZUhhbmRsZUludGVybmFsIDogTm9uY29weWFibGUgew0KKyAgICBjbGFzcyBSZXNv
dXJjZUhhbmRsZUludGVybmFsIDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKFJlc291
cmNlSGFuZGxlKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqIGMsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50
U25pZmYsIGJvb2wgbWlnaHREb3dubG9hZEZyb21IYW5kbGUpDQogICAgICAgICAgICAgOiBtX2Ns
aWVudChjKQ0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjgsNiArMjgsNyBAQA0KIA0KICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIg0KICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgi
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4NCiANCiAjaWYgUExBVEZPUk0oQ0YpDQpAQCAtODgsNyArODksNyBAQA0KIA0KIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBUaW1lcjsNCiANCi1jbGFzcyBSZXNvdXJjZUhhbmRsZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPiB7DQorY2xhc3MgUmVzb3VyY2VIYW5kbGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxv
Y0Jhc2Ugew0KIHByaXZhdGU6DQogICAgIFJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFJlc291cmNlSGFuZGxlQ2xpZW50KiwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNo
b3VsZENvbnRlbnRTbmlmZiwgYm9vbCBtaWdodERvd25sb2FkRnJvbUhhbmRsZSk7DQogDQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgJKHJldmlzaW9uIDM4
MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgJKHdvcmtp
bmcgY29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogI2RlZmluZSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnRfaA0KIA0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4NCiANCiAjaWYgUExBVEZP
Uk0oTUFDKQ0KQEAgLTYxLDcgKzYyLDcgQEANCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQot
ICAgIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCB7DQorICAgIGNsYXNzIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudCA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQog
ICAgICAgICBlbnVtIFR5cGUgew0KICAgICAgICAgICAgIC8vIEtleURvd24gaXMgc2VudCBieSBw
bGF0Zm9ybXMgc3VjaCBhcyBNYWMgT1MgWCwgZ3RrIGFuZCBRdCwgYW5kIGhhcyBpbmZvcm1hdGlv
biBhYm91dCBib3RoIHBoeXNpY2FsIHByZXNzZWQga2V5LCBhbmQgaXRzIHRyYW5zbGF0aW9uLg0K
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCShyZXZpc2lvbiAzODMzNCkNCisr
KyBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjgsNiArMjgsNyBAQA0KIA0KICNpbmNsdWRlICJQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oIg0K
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+DQogDQogI2lmIFBMQVRGT1JNKE1BQykNCkBA
IC0xNzMsNyArMTc0LDcgQEANCiAgICAgdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybU1lbnVJdGVtRGVz
Y3JpcHRpb247DQogI2VuZGlmDQogDQotICAgIGNsYXNzIENvbnRleHRNZW51SXRlbSB7DQorICAg
IGNsYXNzIENvbnRleHRNZW51SXRlbSA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAg
ICBwdWJsaWM6DQogICAgICAgICBDb250ZXh0TWVudUl0ZW0oUGxhdGZvcm1NZW51SXRlbURlc2Ny
aXB0aW9uKTsNCiAgICAgICAgIENvbnRleHRNZW51SXRlbShDb250ZXh0TWVudSogc3ViTWVudSA9
IDApOw0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51LmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1BvcHVwTWVudS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjMsNiArMjMsNyBA
QA0KIA0KICNpbmNsdWRlICJJbnRSZWN0LmgiDQogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5o
Ig0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KIA0KQEAgLTY2LDcgKzY3LDcg
QEANCiBjbGFzcyBGcmFtZVZpZXc7DQogY2xhc3MgU2Nyb2xsYmFyOw0KIA0KLWNsYXNzIFBvcHVw
TWVudSA6IHB1YmxpYyBSZWZDb3VudGVkPFBvcHVwTWVudT4NCitjbGFzcyBQb3B1cE1lbnUgOiBw
dWJsaWMgUmVmQ291bnRlZDxQb3B1cE1lbnU+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlDQog
I2lmIFBMQVRGT1JNKFdJTikNCiAgICAgICAgICAgICAgICAgLCBwcml2YXRlIFNjcm9sbGJhckNs
aWVudA0KICNlbmRpZg0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFB0ckxpc3Qu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFB0ckxpc3QuaAko
cmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkUHRyTGlzdC5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTIgKzI3LDEzIEBADQogI2RlZmluZSBEZXByZWNhdGVk
UHRyTGlzdF9oDQogDQogI2luY2x1ZGUgIkRlcHJlY2F0ZWRQdHJMaXN0SW1wbC5oIg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjsNCiANCi10
ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRGVwcmVjYXRlZFB0ckxpc3Qgew0KK3RlbXBsYXRlIDxj
bGFzcyBUPiBjbGFzcyBEZXByZWNhdGVkUHRyTGlzdCA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KIHB1YmxpYzoNCiAgICAgRGVwcmVjYXRlZFB0ckxpc3QoKSA6IGltcGwoZGVsZXRlRnVu
YyksIGRlbF9pdGVtKGZhbHNlKSB7IH0NCiAgICAgfkRlcHJlY2F0ZWRQdHJMaXN0KCkgeyBpbXBs
LmNsZWFyKGRlbF9pdGVtKTsgfQ0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgJKHJldmlzaW9u
IDM4MzM0KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjYsNiArMjYsNyBAQA0KICNpZm5kZWYgUGFzdGVib2FyZF9oDQogI2RlZmluZSBQYXN0
ZWJvYXJkX2gNCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4NCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+DQpAQCAtNzYsNyArNzcsNyBAQA0KIGNsYXNzIFJhbmdlOw0KIGNsYXNz
IFN0cmluZzsNCiAgICAgDQotY2xhc3MgUGFzdGVib2FyZCA6IE5vbmNvcHlhYmxlIHsNCitjbGFz
cyBQYXN0ZWJvYXJkIDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
IHB1YmxpYzoNCiAjaWYgUExBVEZPUk0oTUFDKQ0KICAgICAvL0hlbHBlciBmdW5jdGlvbnMgdG8g
YWxsb3cgQ2xpcGJvYXJkIHRvIHNoYXJlIGNvZGUNCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L1BhdXNlZFRpbWVvdXRzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1Bh
dXNlZFRpbWVvdXRzLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
UGF1c2VkVGltZW91dHMuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIwLDEzICsyMCwxNCBAQA0KICNp
Zm5kZWYgUGF1c2VkVGltZW91dHNfaA0KICNkZWZpbmUgUGF1c2VkVGltZW91dHNfaA0KIA0KKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlv
bjsNCiANCi0gICAgc3RydWN0IFBhdXNlZFRpbWVvdXQgew0KKyAgICBzdHJ1Y3QgUGF1c2VkVGlt
ZW91dCA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAgICAgaW50IHRpbWVvdXRJ
ZDsNCiAgICAgICAgIGludCBuZXN0aW5nTGV2ZWw7DQogICAgICAgICBkb3VibGUgbmV4dEZpcmVJ
bnRlcnZhbDsNCkBAIC0zNCw3ICszNSw3IEBADQogICAgICAgICBTY2hlZHVsZWRBY3Rpb24qIGFj
dGlvbjsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgUGF1c2VkVGltZW91dHMgOiBOb25jb3B5YWJs
ZSB7DQorICAgIGNsYXNzIFBhdXNlZFRpbWVvdXRzIDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6
OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBQYXVzZWRUaW1lb3V0cyhQ
YXVzZWRUaW1lb3V0KiBhcnJheSwgc2l6ZV90IGxlbmd0aCkNCiAgICAgICAgICAgICA6IG1fYXJy
YXkoYXJyYXkpDQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92aWRl
ci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92
aWRlci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1N0cmluZ1Nv
dXJjZVByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCwxMCArMzAsMTEgQEANCiAjZGVm
aW5lIFN0cmluZ1NvdXJjZVByb3ZpZGVyX2gNCiANCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNv
ZGUuaD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7DQogDQotICAgIGNsYXNzIFN0cmluZ1NvdXJjZVByb3ZpZGVyIDogcHVibGljIEpTQzo6
U291cmNlUHJvdmlkZXIgew0KKyAgICBjbGFzcyBTdHJpbmdTb3VyY2VQcm92aWRlciA6IHB1Ymxp
YyBKU0M6OlNvdXJjZVByb3ZpZGVyLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAg
cHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nU291cmNlUHJvdmlkZXI+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdHJpbmdTb3VyY2VQcm92aWRlcihzb3VyY2UsIHVybCkpOyB9DQogDQpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNr
LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3Np
dGlvbkNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw2ICsyOSw3IEBADQogI2luY2x1
ZGUgIlBvc2l0aW9uQ2FsbGJhY2suaCINCiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPg0K
ICNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4NCiANCiBuYW1lc3BhY2UgSlNDIHsNCkBA
IC00MCw3ICs0MSw3IEBADQogY2xhc3MgRnJhbWU7DQogY2xhc3MgR2VvcG9zaXRpb247DQogDQot
Y2xhc3MgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrIDogcHVibGljIFBvc2l0aW9uQ2FsbGJhY2sg
ew0KK2NsYXNzIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayA6IHB1YmxpYyBQb3NpdGlvbkNhbGxi
YWNrLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjaz4gY3JlYXRlKEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2soY2FsbGJhY2ssIGZyYW1lKSk7IH0NCiAgICAgDQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaAko
cmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRl
bWVudENhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw2ICszMyw3IEBADQogDQogI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4NCiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+DQogDQogbmFtZXNwYWNlIEpTQyB7DQpAQCAtNDQsNyArNDUsNyBAQA0KIGNsYXNzIEZyYW1l
Ow0KIGNsYXNzIFNRTFJlc3VsdFNldDsNCiANCi1jbGFzcyBKU0N1c3RvbVNRTFN0YXRlbWVudENh
bGxiYWNrIDogcHVibGljIFNRTFN0YXRlbWVudENhbGxiYWNrIHsNCitjbGFzcyBKU0N1c3RvbVNR
TFN0YXRlbWVudENhbGxiYWNrIDogcHVibGljIFNRTFN0YXRlbWVudENhbGxiYWNrLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpT
Q3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFj
aywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21TUUxTdGF0ZW1l
bnRDYWxsYmFjayhjYWxsYmFjaywgZnJhbWUpKTsgfQ0KIA0KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAkocmV2aXNp
b24gMzgzMzQpDQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjay5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksNiArMjksNyBAQA0KICNpbmNsdWRlICJQ
b3NpdGlvbkVycm9yQ2FsbGJhY2suaCINCiAjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPg0K
ICNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4NCiANCiBuYW1lc3BhY2UgSlNDIHsNCkBA
IC00MCw3ICs0MSw3IEBADQogY2xhc3MgRnJhbWU7DQogY2xhc3MgUG9zaXRpb25FcnJvcjsNCiAN
Ci1jbGFzcyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBQb3NpdGlvbkVy
cm9yQ2FsbGJhY2sgew0KK2NsYXNzIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrIDogcHVi
bGljIFBvc2l0aW9uRXJyb3JDYWxsYmFjaywgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
cHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxs
YmFjaz4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhjYWxsYmFjaywg
ZnJhbWUpKTsgfQ0KICAgICANCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTY1LDYgKzY1LDcgQEANCiAjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPg0KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPg0KICNpbmNs
dWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+
DQogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+DQogDQogdXNpbmcgbmFtZXNwYWNlIEpTQzsN
CkBAIC0xMDMsNyArMTA0LDcgQEANCiBjb25zdCBpbnQgY01heFRpbWVyTmVzdGluZ0xldmVsID0g
NTsNCiBjb25zdCBkb3VibGUgY01pbmltdW1UaW1lckludGVydmFsID0gMC4wMTA7DQogDQotY2xh
c3MgRE9NV2luZG93VGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsNCitjbGFzcyBET01XaW5kb3dU
aW1lciA6IHB1YmxpYyBUaW1lckJhc2UsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1
YmxpYzoNCiAgICAgRE9NV2luZG93VGltZXIoaW50IHRpbWVvdXRJZCwgaW50IG5lc3RpbmdMZXZl
bCwgSlNET01XaW5kb3dCYXNlKiBvYmplY3QsIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uKQ0KICAg
ICAgICAgOiBtX3RpbWVvdXRJZCh0aW1lb3V0SWQpDQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCw2
ICszMCw3IEBADQogI2lmIEVOQUJMRShTVkcpDQogI2luY2x1ZGUgIkZyYW1lLmgiDQogI2luY2x1
ZGUgIlNWR0VsZW1lbnQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBu
YW1lc3BhY2UgV2ViQ29yZSB7DQogDQpAQCAtNzEsNyArNzIsNyBAQA0KICNwcmFnbWEgcGFjaygx
NikNCiAjZW5kaWYNCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlLCB0eXBlbmFtZSBQT0RUeXBl
Q3JlYXRvcj4NCi1jbGFzcyBKU1NWR0R5bmFtaWNQT0RUeXBlV3JhcHBlciA6IHB1YmxpYyBKU1NW
R1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+IHsNCitjbGFzcyBKU1NWR0R5bmFtaWNQT0RUeXBlV3Jh
cHBlciA6IHB1YmxpYyBKU1NWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+LCBwdWJsaWMgV1RGOjpG
YXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHR5cGVkZWYgUE9EVHlwZSAoUE9EVHlwZUNy
ZWF0b3I6OipHZXR0ZXJNZXRob2QpKCkgY29uc3Q7IA0KICAgICB0eXBlZGVmIHZvaWQgKFBPRFR5
cGVDcmVhdG9yOjoqU2V0dGVyTWV0aG9kKShQT0RUeXBlKTsNCkBAIC0xMTYsNyArMTE3LDcgQEAN
CiAvLyBhbmQgZm9yIHByb3BlcnRpZXMgd2hlcmUgU1ZHIHNwZWNpZmljYXRpb24gZXhwbGljaXRl
bHkgc3RhdGVzLCB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgUE9EIHR5cGUgYXJlIGltbXV0YWJs
ZS4NCiANCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlPg0KLWNsYXNzIEpTU1ZHU3RhdGljUE9E
VHlwZVdyYXBwZXIgOiBwdWJsaWMgSlNTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPiB7DQorY2xh
c3MgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlciA6IHB1YmxpYyBKU1NWR1BPRFR5cGVXcmFwcGVy
PFBPRFR5cGU+LCAgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPiBjcmVhdGUoUE9EVHlw
ZSB0eXBlKQ0KICAgICB7DQpAQCAtMTQzLDcgKzE0NCw3IEBADQogfTsNCiANCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBQT0RUeXBlLCB0eXBlbmFtZSBQYXJlbnRUeXBlQXJnPg0KLWNsYXNzIEpTU1ZHU3Rh
dGljUE9EVHlwZVdyYXBwZXJXaXRoUE9EVHlwZVBhcmVudCA6IHB1YmxpYyBKU1NWR1N0YXRpY1BP
RFR5cGVXcmFwcGVyPFBPRFR5cGU+IHsNCitjbGFzcyBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVy
V2l0aFBPRFR5cGVQYXJlbnQgOiBwdWJsaWMgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxQT0RU
eXBlPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICB0eXBlZGVm
IEpTU1ZHUE9EVHlwZVdyYXBwZXI8UGFyZW50VHlwZUFyZz4gUGFyZW50VHlwZTsNCiANCkBAIC0x
NzUsNyArMTc2LDcgQEANCiAjcHJhZ21hIHBhY2soMTYpDQogI2VuZGlmDQogdGVtcGxhdGU8dHlw
ZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUgUGFyZW50VHlwZT4NCi1jbGFzcyBKU1NWR1N0YXRpY1BP
RFR5cGVXcmFwcGVyV2l0aFBhcmVudCA6IHB1YmxpYyBKU1NWR1BPRFR5cGVXcmFwcGVyPFBPRFR5
cGU+IHsNCitjbGFzcyBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyV2l0aFBhcmVudCA6IHB1Ymxp
YyBKU1NWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+LCAgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogcHVibGljOg0KICAgICB0eXBlZGVmIFBPRFR5cGUgKFBhcmVudFR5cGU6OipHZXR0ZXJN
ZXRob2QpKCkgY29uc3Q7DQogICAgIHR5cGVkZWYgdm9pZCAoUGFyZW50VHlwZTo6KlNldHRlck1l
dGhvZCkoY29uc3QgUE9EVHlwZSYpOw0KQEAgLTIxOCw3ICsyMTksNyBAQA0KIC8vIEp1c3QgbGlr
ZSBKU1NWR0R5bmFtaWNQT0RUeXBlV3JhcHBlciwgYnV0IG9ubHkgdXNlZCBmb3IgU1ZHTGlzdCog
b2JqZWN0cyB3cmFwcGluZyBhcm91bmQgUE9EIHZhbHVlcy4NCiANCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQT0RUeXBlPg0KLWNsYXNzIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdCA6IHB1
YmxpYyBKU1NWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+IHsNCitjbGFzcyBKU1NWR1BPRFR5cGVX
cmFwcGVyQ3JlYXRvckZvckxpc3QgOiBwdWJsaWMgSlNTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBl
PiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICB0eXBlZGVmIFNW
R1BPRExpc3RJdGVtPFBPRFR5cGU+IFBPRExpc3RJdGVtUHRyVHlwZTsNCiANCkBAIC0yNjcsNyAr
MjY4LDcgQEANCiANCiAvLyBDYWNoaW5nIGZhY2lsaXRpZXMNCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
T0RUeXBlLCB0eXBlbmFtZSBQT0RUeXBlQ3JlYXRvcj4NCi1zdHJ1Y3QgUE9EVHlwZVdyYXBwZXJD
YWNoZUluZm8gew0KK3N0cnVjdCBQT0RUeXBlV3JhcHBlckNhY2hlSW5mbyA6IHB1YmxpYyBXVEY6
OkZhc3RBbGxvY0Jhc2Ugew0KICAgICB0eXBlZGVmIFBPRFR5cGUgKFBPRFR5cGVDcmVhdG9yOjoq
R2V0dGVyTWV0aG9kKSgpIGNvbnN0OyANCiAgICAgdHlwZWRlZiB2b2lkIChQT0RUeXBlQ3JlYXRv
cjo6KlNldHRlck1ldGhvZCkoUE9EVHlwZSk7DQogDQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw2ICszMyw3IEBADQogDQog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4NCiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0
Lmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+DQogDQogbmFtZXNwYWNlIEpTQyB7DQpAQCAtNDQsNyArNDUsNyBAQA0KIGNsYXNzIEZy
YW1lOw0KIGNsYXNzIFNRTEVycm9yOw0KICAgICANCi1jbGFzcyBKU0N1c3RvbVNRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayB7DQorY2xh
c3MgSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrIDogcHVibGljIFNRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2ssIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBj
cmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IEpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayhjYWxsYmFjaywgZnJh
bWUpKTsgfQ0KICAgICAgICAgDQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNR
TFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC0zOCw2ICszOCw3IEBADQogI2luY2x1ZGUgIkpTU1FMVHJh
bnNhY3Rpb24uaCINCiAjaW5jbHVkZSAiUGFnZS5oIg0KICNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+DQogDQpA
QCAtNTUsNyArNTYsNyBAQA0KIC8vICAgICAyKSBVbnByb3RlY3RpbmcgdGhlIEpTT2JqZWN0IG9u
IGEgbm9uLW1haW4gdGhyZWFkIHdvdWxkIHJlZ2lzdGVyIHRoYXQgdGhyZWFkDQogLy8gICAgICAg
IGZvciBKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiwgd2hpY2ggY291bGQgdW5uZWNlc3Nh
cmlseSBzbG93IHRoaW5ncyBkb3duLg0KIA0KLWNsYXNzIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25D
YWxsYmFjazo6RGF0YSB7DQorY2xhc3MgSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrOjpE
YXRhIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBEYXRhKEpT
T2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKSA6IG1fY2FsbGJhY2soY2FsbGJhY2spLCBt
X2ZyYW1lKGZyYW1lKSB7IH0NCiAgICAgSlNPYmplY3QqIGNhbGxiYWNrKCkgeyByZXR1cm4gbV9j
YWxsYmFjazsgfQ0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJh
Y2suaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2Fs
bGJhY2suaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVZvaWRDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzMsMTMgKzMzLDE0IEBADQogDQog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4NCiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0
Lmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KICAgICANCiAgICAgY2xhc3MgRnJhbWU7
DQogICAgIA0KLSAgICBjbGFzcyBKU0N1c3RvbVZvaWRDYWxsYmFjayA6IHB1YmxpYyBWb2lkQ2Fs
bGJhY2sgew0KKyAgICBjbGFzcyBKU0N1c3RvbVZvaWRDYWxsYmFjayA6IHB1YmxpYyBWb2lkQ2Fs
bGJhY2ssIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6IA0KICAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21Wb2lkQ2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpT
T2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKQ0KICAgICAgICAgew0KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2suaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
MzMsNiArMzMsNyBAQA0KIA0KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+DQogI2luY2x1
ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPg0KIA0KIG5hbWVzcGFjZSBKU0Mgew0KQEAgLTQ0LDcg
KzQ1LDcgQEANCiBjbGFzcyBGcmFtZTsNCiBjbGFzcyBTUUxFcnJvcjsNCiANCi1jbGFzcyBKU0N1
c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBTUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2sgew0KK2NsYXNzIEpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
IDogcHVibGljIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaywgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVNRTFRy
YW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBG
cmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0N1c3RvbVNRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjayhjYWxsYmFjaywgZnJhbWUpKTsgfQ0KICAgICANCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQ2LDYgKzQ2
LDcgQEANCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIg0KICNpbmNsdWRlICJYTUxIdHRw
UmVxdWVzdEV4Y2VwdGlvbi5oIg0KICNpbmNsdWRlIDxydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9u
Lmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogI2lmIEVOQUJMRShTVkcp
DQogI2luY2x1ZGUgIkpTU1ZHRXhjZXB0aW9uLmgiDQpAQCAtMTgwLDcgKzE4MSw3IEBADQogICAg
IEhhc2hNYXA8Y29uc3QgSlNDOjpIYXNoVGFibGUqLCBKU0M6Okhhc2hUYWJsZT4gbV9tYXA7DQog
fTsNCiANCi1jbGFzcyBXZWJDb3JlSlNDbGllbnREYXRhIDogcHVibGljIEpTR2xvYmFsRGF0YTo6
Q2xpZW50RGF0YSB7DQorY2xhc3MgV2ViQ29yZUpTQ2xpZW50RGF0YSA6IHB1YmxpYyBKU0dsb2Jh
bERhdGE6OkNsaWVudERhdGEsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoN
CiAgICAgRE9NT2JqZWN0SGFzaFRhYmxlTWFwIGhhc2hUYWJsZU1hcDsNCiAgICAgRE9NT2JqZWN0
V3JhcHBlck1hcCB3cmFwcGVyTWFwOw0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsNiArMzEsNyBAQA0KIA0KICNpbmNsdWRlICJTUUxUcmFu
c2FjdGlvbkNhbGxiYWNrLmgiDQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogDQogbmFtZXNwYWNlIEpTQyB7DQpAQCAtNDEs
NyArNDIsNyBAQA0KIA0KIGNsYXNzIEZyYW1lOw0KIA0KLWNsYXNzIEpTQ3VzdG9tU1FMVHJhbnNh
Y3Rpb25DYWxsYmFjayA6IHB1YmxpYyBTUUxUcmFuc2FjdGlvbkNhbGxiYWNrIHsNCitjbGFzcyBK
U0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgU1FMVHJhbnNhY3Rpb25DYWxs
YmFjaywgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxKU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpT
T2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSlND
dXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9DQogDQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0yMyw2ICsyMyw3IEBADQogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCINCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCINCiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+DQorI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0K
QEAgLTQ3LDcgKzQ4LDcgQEANCiAgICAgICAgIGJvb2wgbV9pc0lubGluZTsNCiAgICAgfTsNCiAN
Ci0gICAgY2xhc3MgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgSlNBYnN0cmFj
dEV2ZW50TGlzdGVuZXIgew0KKyAgICBjbGFzcyBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciA6
IHB1YmxpYyBKU0Fic3RyYWN0RXZlbnRMaXN0ZW5lciwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTVW5wcm90ZWN0
ZWRFdmVudExpc3RlbmVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlzdGVuZXIsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGJvb2wgaXNJbmxpbmUpDQogICAgICAgICB7DQpAQCAt
NjcsNyArNjgsNyBAQA0KICAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0
Ow0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBKU0V2ZW50TGlzdGVuZXIgOiBwdWJsaWMgSlNBYnN0
cmFjdEV2ZW50TGlzdGVuZXIgew0KKyAgICBjbGFzcyBKU0V2ZW50TGlzdGVuZXIgOiBwdWJsaWMg
SlNBYnN0cmFjdEV2ZW50TGlzdGVuZXIsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAg
ICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGNy
ZWF0ZShKU0M6OkpTT2JqZWN0KiBsaXN0ZW5lciwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgYm9vbCBpc0lubGluZSkNCiAgICAgICAgIHsNCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY2hlZHVsZWRBY3Rpb24uaAkod29ya2luZyBjb3B5KQ0KQEAgLTIyLDYgKzIyLDcgQEAN
CiANCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCiAjaW5jbHVkZSA8cnVudGltZS9Qcm90
ZWN0Lmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQpAQCAtMzIsNyArMzMsNyBAQA0KICAg
ICAqIHRpbWUgaW50ZXJ2YWwsIGVpdGhlciBvbmNlIG9yIHJlcGVhdGVkbHkuIFVzZWQgZm9yIHdp
bmRvdy5zZXRUaW1lb3V0KCkNCiAgICAgKiBhbmQgd2luZG93LnNldEludGVydmFsKCkNCiAgICAg
Ki8NCi0gICAgY2xhc3MgU2NoZWR1bGVkQWN0aW9uIHsNCisgICAgY2xhc3MgU2NoZWR1bGVkQWN0
aW9uIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAg
IFNjaGVkdWxlZEFjdGlvbihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlKiBmdW5j
dGlvbiwgY29uc3QgSlNDOjpBcmdMaXN0Jik7DQogICAgICAgICBTY2hlZHVsZWRBY3Rpb24oY29u
c3QgU3RyaW5nJiBjb2RlKQ0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVy
Q29uZGl0aW9uLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZp
bHRlckNvbmRpdGlvbi5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjIsMTMgKzIyLDE0
IEBADQogDQogI2luY2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uaCINCiAjaW5jbHVkZSA8cnVu
dGltZS9KU1ZhbHVlLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KICAgICBj
bGFzcyBOb2RlOw0KIA0KLSAgICBjbGFzcyBKU05vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMg
Tm9kZUZpbHRlckNvbmRpdGlvbiB7DQorICAgIGNsYXNzIEpTTm9kZUZpbHRlckNvbmRpdGlvbiA6
IHB1YmxpYyBOb2RlRmlsdGVyQ29uZGl0aW9uLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNOb2RlRmlsdGVyQ29u
ZGl0aW9uPiBjcmVhdGUoSlNDOjpKU1ZhbHVlKiBmaWx0ZXIpDQogICAgICAgICB7DQpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCw2ICszMCw3IEBADQogDQogI2luY2x1ZGUgIlhQ
YXRoTlNSZXNvbHZlci5oIg0KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4NCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4NCiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPg0KIA0KQEAgLTQyLDcgKzQzLDcgQEANCiANCiAgICAgY2xhc3Mg
RnJhbWU7DQogDQotICAgIGNsYXNzIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyIDogcHVibGljIFhQ
YXRoTlNSZXNvbHZlciB7DQorICAgIGNsYXNzIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyIDogcHVi
bGljIFhQYXRoTlNSZXNvbHZlciwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1
YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUqKTsNCiAgICAgICAgIA0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAz
ODMzNCkNCisrKyBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtNDEsNiArNDEsNyBAQA0KICNpbmNsdWRlICJTTUlMVGltZUNvbnRhaW5l
ci5oIg0KICNpbmNsdWRlICJYTGlua05hbWVzLmgiDQogI2luY2x1ZGUgPG1hdGguaD4NCisjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4N
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KIA0KQEAgLTUxLDcgKzUyLDcgQEANCiAvLyBUaGlz
IGlzIHVzZWQgZm9yIGR1cmF0aW9uIHR5cGUgdGltZSB2YWx1ZXMgdGhhdCBjYW4ndCBiZSBuZWdh
dGl2ZS4NCiBzdGF0aWMgY29uc3QgZG91YmxlIGludmFsaWRDYWNoZWRUaW1lID0gLTEuOw0KICAg
ICANCi1jbGFzcyBDb25kaXRpb25FdmVudExpc3RlbmVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIg
ew0KK2NsYXNzIENvbmRpdGlvbkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDb25kaXRpb25FdmVudExpc3RlbmVyPiBjcmVhdGUoU1ZHU01JTEVsZW1lbnQqIGFuaW1h
dGlvbiwgRWxlbWVudCogZXZlbnRCYXNlLCBTVkdTTUlMRWxlbWVudDo6Q29uZGl0aW9uKiBjb25k
aXRpb24pDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250
YWluZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNv
bnRhaW5lci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU01J
TFRpbWVDb250YWluZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMyLDYgKzMyLDcgQEANCiAjaW5j
bHVkZSAiU01JTFRpbWUuaCINCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIg0KICNpbmNsdWRlICJU
aW1lci5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPg0KQEAgLTQyLDcgKzQzLDcgQEANCiAgICAgY2xhc3MgU1ZHU01JTEVsZW1l
bnQ7DQogICAgIGNsYXNzIFNWR1NWR0VsZW1lbnQ7DQogDQotICAgIGNsYXNzIFNNSUxUaW1lQ29u
dGFpbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8U01JTFRpbWVDb250YWluZXI+ICB7DQorICAgIGNs
YXNzIFNNSUxUaW1lQ29udGFpbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8U01JTFRpbWVDb250YWlu
ZXI+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U01JTFRpbWVDb250YWluZXI+IGNyZWF0ZShTVkdTVkdFbGVtZW50
KiBvd25lcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNNSUxUaW1lQ29udGFpbmVyKG93bmVyKSk7
IH0gDQogICAgIA0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaAkocmV2aXNpb24g
MzgzMzQpDQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjUsNiArMjUsNyBAQA0KICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCINCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiDQogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIg0KKyNpbmNsdWRlIDx3
dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KIA0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsNCkBAIC0zOCw3ICszOSw3IEBADQogICAgIGNsYXNzIFN0cmluZzsNCiAg
ICAgY2xhc3MgUXVhbGlmaWVkTmFtZTsNCiANCi0gICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVdy
YXBwZXJLZXkgeyAgICAgICAgICAgIA0KKyAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBl
cktleSA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAgICAgLy8gRW1wdHkgdmFs
dWUNCiAgICAgICAgIFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkoKQ0KICAgICAgICAgICAgIDog
ZWxlbWVudCgwKQ0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuaAkocmV2
aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjYsNiArMjYsNyBAQA0KICNpZiBFTkFCTEUoU1ZHKQ0KIA0KICNp
bmNsdWRlICJTVkdQYXRoU2VnLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQog
DQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTYyLDcgKzYzLDcgQEANCiAgICAgICAgIGZs
b2F0IG1feTI7DQogICAgIH07DQogDQotICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNB
YnMgOiBwdWJsaWMgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYyB7IA0KKyAgICBjbGFzcyBTVkdQYXRo
U2VnQ3VydmV0b0N1YmljQWJzIDogcHVibGljIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMsIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2UgeyANCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficz4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyKQ0KICAgICAgICAgew0K
QEAgLTc2LDcgKzc3LDcgQEANCiAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMoZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIpOw0K
ICAgICB9Ow0KIA0KLSAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsIDogcHVibGlj
IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMgeyANCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1JlbCA6IHB1YmxpYyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZH
UGF0aFNlZ0N1cnZldG9DdWJpY1JlbD4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgx
LCBmbG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyKQ0KICAgICAgICAgew0KSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29y
ZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiAr
MjcsNyBAQA0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KICNpbmNsdWRlICJTVkdOYW1l
cy5oIg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCkBAIC0zNSw3ICszNiw3IEBA
DQogICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsNCiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVu
dDsNCiANCi0gICAgY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IHsgDQorICAgIGNsYXNzIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8gOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiwgcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZSB7IA0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyk7IH0NCiANCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1MaXN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bUxpc3QuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDEzICsyNiwxNCBAQA0KICNpZiBFTkFCTEUo
U1ZHKQ0KICNpbmNsdWRlICJTVkdMaXN0LmgiDQogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIg0K
KyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiAgICAgY2xhc3MgU3RyaW5nOw0KIA0K
LSAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0IDogcHVibGljIFNWR1BPRExpc3Q8U1ZHVHJhbnNm
b3JtPiB7DQorICAgIGNsYXNzIFNWR1RyYW5zZm9ybUxpc3QgOiBwdWJsaWMgU1ZHUE9ETGlzdDxT
VkdUcmFuc2Zvcm0+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0K
ICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdU
cmFuc2Zvcm1MaXN0KGF0dHJpYnV0ZU5hbWUpKTsgfQ0KICAgICAgICAgdmlydHVhbCB+U1ZHVHJh
bnNmb3JtTGlzdCgpOw0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xpc3QuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0xpc3QuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9z
dmcvU1ZHTGlzdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiArMjcsNyBAQA0KICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiDQogI2luY2x1ZGUgIlNWR0xpc3RUcmFpdHMuaCINCiANCisjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4N
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0K
QEAgLTE0MSw3ICsxNDIsNyBAQA0KICAgICB9Ow0KIA0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
dGVtPg0KLSAgICBjbGFzcyBTVkdQT0RMaXN0SXRlbSA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR1BP
RExpc3RJdGVtPEl0ZW0+ID4gew0KKyAgICBjbGFzcyBTVkdQT0RMaXN0SXRlbSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNWR1BPRExpc3RJdGVtPEl0ZW0+ID4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQT0RMaXN0
SXRlbT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BPRExpc3RJdGVtKTsgfQ0K
ICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUE9ETGlzdEl0ZW0+IGNvcHkoY29uc3QgSXRl
bSYgaXRlbSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BPRExpc3RJdGVtKGl0ZW0pKTsgfQ0K
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NvbG9yLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N2
Zy9TVkdDb2xvci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3N2Zy9TVkdDb2xvci5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMjQsMTEgKzI0LDEyIEBADQogDQogI2luY2x1ZGUgIkNTU1Zh
bHVlLmgiDQogI2luY2x1ZGUgIkNvbG9yLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUg
ew0KIA0KLSAgICBjbGFzcyBTVkdDb2xvciA6IHB1YmxpYyBDU1NWYWx1ZSB7DQorICAgIGNsYXNz
IFNWR0NvbG9yIDogcHVibGljIENTU1ZhbHVlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGNvbG9yKQ0KICAgICAgICAgew0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaW5ldG8uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aW5ldG8uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0
by5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsOSArMjYsMTAgQEANCiAjaWYgRU5BQkxFKFNWRykN
CiANCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCi0gICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0
b0FicyA6IHB1YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQgeyANCisgICAgY2xhc3MgU1ZHUGF0
aFNlZ0xpbmV0b0FicyA6IHB1YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQsIHB1YmxpYyBXVEY6
OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTVkdQYXRoU2VnTGluZXRvQWJzPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR1BhdGhTZWdMaW5ldG9BYnMoeCwgeSkpOyB9DQogDQpAQCAtMzksNyAr
NDAsNyBAQA0KICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5KTsN
CiAgICAgfTsNCiANCi0gICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IHB1YmxpYyBTVkdQ
YXRoU2VnU2luZ2xlQ29vcmQgeyANCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IHB1
YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
ICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGluZXRv
UmVsPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1Bh
dGhTZWdMaW5ldG9SZWwoeCwgeSkpOyB9DQogDQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dEluc3RhbmNlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFu
Y2UuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNl
LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQogI2luY2x1ZGUgIlNWR0VsZW1l
bnQuaCINCiAjaW5jbHVkZSAiVHJlZVNoYXJlZC5oIg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFs
bG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+DQogDQpAQCAtNDQsNyArNDUsOCBAQA0KIA0KICAgICAvLyBTVkdFbGVtZW50SW5z
dGFuY2UgbWltaWNzIE5vZGUsIGJ1dCB3aXRob3V0IHByb3ZpZGluZyBhbGwgaXRzIGZ1bmN0aW9u
YWxpdHkNCiAgICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlIDogcHVibGljIFRyZWVTaGFyZWQ8
U1ZHRWxlbWVudEluc3RhbmNlPiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIEV2ZW50VGFyZ2V0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBF
dmVudFRhcmdldCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdURjo6
RmFzdEFsbG9jQmFzZQ0KICAgICB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFNWR0VsZW1lbnRJ
bnN0YW5jZShTVkdVc2VFbGVtZW50KiwgU1ZHRWxlbWVudCogb3JpZ2luYWxFbGVtZW50KTsNCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbC5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuaAkocmV2aXNpb24g
MzgzMzQpDQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2LDcgQEANCiAjaWYgRU5BQkxFKFNWRykNCiANCiAjaW5j
bHVkZSAiU1ZHUGF0aFNlZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCkBAIC00Miw3ICs0Myw3IEBADQogICAgICAgICBmbG9h
dCBtX3g7DQogICAgIH07DQogDQotICAgIGNsYXNzIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFs
QWJzIDogcHVibGljIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIHsNCisgICAgY2xhc3MgU1ZH
UGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6
b250YWwsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicz4gY3JlYXRl
KGZsb2F0IHgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRh
bEFicyh4KSk7IH0NCiANCkBAIC01Myw3ICs1NCw3IEBADQogICAgICAgICBTVkdQYXRoU2VnTGlu
ZXRvSG9yaXpvbnRhbEFicyhmbG9hdCB4KTsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgU1ZHUGF0
aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgOiBwdWJsaWMgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250
YWwgew0KKyAgICBjbGFzcyBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCA6IHB1YmxpYyBT
VkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9I
b3Jpem9udGFsUmVsPiBjcmVhdGUoZmxvYXQgeCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1Bh
dGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKHgpKTsgfQ0KIA0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R1N0cmluZ0xpc3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3Qu
aAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMjYsMTAgKzI2LDExIEBADQogI2lmIEVOQUJMRShTVkcpDQogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQogI2luY2x1ZGUgIlNWR0xpc3QuaCINCisjaW5jbHVkZSA8
d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotICAgIGNs
YXNzIFNWR1N0cmluZ0xpc3QgOiBwdWJsaWMgU1ZHTGlzdDxTdHJpbmc+IHsNCisgICAgY2xhc3Mg
U1ZHU3RyaW5nTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFN0cmluZz4sIHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdT
dHJpbmdMaXN0PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNWR1N0cmluZ0xpc3QoYXR0cmlidXRlTmFtZSkpOyB9DQogICAg
ICAgICB2aXJ0dWFsIH5TVkdTdHJpbmdMaXN0KCk7DQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3Jl
L3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
Niw2ICsyNiw3IEBADQogI2lmIEVOQUJMRShTVkcpDQogDQogI2luY2x1ZGUgIlNWR1BhdGhTZWcu
aCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7DQogDQpAQCAtNTUsNyArNTYsNyBAQA0KICAgICAgICAgZmxvYXQgbV95MjsNCiAgICAgfTsN
CiANCi0gICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyA6IHB1YmxpYyBT
VkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIHsgDQorICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNTbW9vdGhBYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7IA0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzPiBjcmVhdGUoZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyh4LCB5LCB4MiwgeTIpKTsgfQ0KIA0KQEAg
LTY2LDcgKzY3LDcgQEANCiAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyKTsNCiAgICAgfTsNCiANCi0gICAg
Y2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCA6IHB1YmxpYyBTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoIHsgDQorICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNT
bW9vdGhSZWwgOiBwdWJsaWMgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCwgcHVibGljIFdU
Rjo6RmFzdEFsbG9jQmFzZSB7IA0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsPiBjcmVhdGUoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNl
Z0N1cnZldG9DdWJpY1Ntb290aFJlbCh4LCB5LCB4MiwgeTIpKTsgfQ0KIA0KSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR051bWJlckxpc3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL1NWR051
bWJlckxpc3QuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlz
dC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjUsMTMgKzI1LDE0IEBADQogDQogI2lmIEVOQUJMRShT
VkcpDQogI2luY2x1ZGUgIlNWR0xpc3QuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2Uu
aD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7
DQogDQogICAgIGNsYXNzIFN0cmluZzsNCiANCi0gICAgY2xhc3MgU1ZHTnVtYmVyTGlzdCA6IHB1
YmxpYyBTVkdMaXN0PGZsb2F0PiB7DQorICAgIGNsYXNzIFNWR051bWJlckxpc3QgOiBwdWJsaWMg
U1ZHTGlzdDxmbG9hdD4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6
DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdOdW1iZXJMaXN0PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR051
bWJlckxpc3QoYXR0cmlidXRlTmFtZSkpOyB9DQogICAgICAgICB2aXJ0dWFsIH5TVkdOdW1iZXJM
aXN0KCk7DQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNiw2ICsyNiw3IEBADQogI2lmIEVOQUJMRShTVkcp
DQogDQogI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQpAQCAtNTUsNyArNTYsNyBAQA0KICAg
ICAgICAgZmxvYXQgbV95MTsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNBYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgew0KKyAg
ICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyA6IHB1YmxpYyBTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpYywgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1Ymxp
YzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
QWJzPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMoeCwgeSwgeDEsIHkx
KSk7IH0NCiANCkBAIC02Niw3ICs2Nyw3IEBADQogICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEpOw0KICAgICB9
Ow0KIA0KLSAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCA6IHB1YmxpYyBT
VkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyB7DQorICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljUmVsIDogcHVibGljIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw+IGNyZWF0ZShmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpY1JlbCh4LCB5LCB4MSwgeTEpKTsgfQ0KIA0KSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhTZWdBcmMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdBcmMuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0FyYy5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsNiArMjYsNyBAQA0KICNpZiBFTkFCTEUoU1ZHKQ0KIA0K
ICNpbmNsdWRlICJTVkdQYXRoU2VnLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+
DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTY4LDcgKzY5LDcgQEANCiAgICAgICAg
IGJvb2wgbV9zd2VlcEZsYWcgOiAxOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBTVkdQYXRoU2Vn
QXJjQWJzIDogcHVibGljIFNWR1BhdGhTZWdBcmMgew0KKyAgICBjbGFzcyBTVkdQYXRoU2VnQXJj
QWJzIDogcHVibGljIFNWR1BhdGhTZWdBcmMsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
ICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQXJjQWJz
PiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmds
ZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnKQ0KICAgICAgICAgew0KQEAgLTgy
LDcgKzgzLDcgQEANCiAgICAgICAgIFNWR1BhdGhTZWdBcmNBYnMoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wg
c3dlZXBGbGFnKTsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgU1ZHUGF0aFNlZ0FyY1JlbCA6IHB1
YmxpYyBTVkdQYXRoU2VnQXJjIHsNCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0FyY1JlbCA6IHB1Ymxp
YyBTVkdQYXRoU2VnQXJjLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGlj
Og0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0FyY1JlbD4gY3JlYXRlKGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFy
Z2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZykNCiAgICAgICAgIHsNCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnTW92ZXRvLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTW92ZXRvLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdN
b3ZldG8uaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDkgKzI2LDEwIEBADQogI2lmIEVOQUJMRShT
VkcpDQogDQogI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxv
Y0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQotICAgIGNsYXNzIFNWR1BhdGhTZWdN
b3ZldG9BYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZ1NpbmdsZUNvb3JkIHsgDQorICAgIGNsYXNzIFNW
R1BhdGhTZWdNb3ZldG9BYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZ1NpbmdsZUNvb3JkLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsgDQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNWR1BhdGhTZWdNb3ZldG9BYnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5KSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ01vdmV0b0Ficyh4LCB5KSk7IH0NCiANCkBAIC0z
OSw3ICs0MCw3IEBADQogICAgICAgICBTVkdQYXRoU2VnTW92ZXRvQWJzKGZsb2F0IHgsIGZsb2F0
IHkpOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBTVkdQYXRoU2VnTW92ZXRvUmVsIDogcHVibGlj
IFNWR1BhdGhTZWdTaW5nbGVDb29yZCB7IA0KKyAgICBjbGFzcyBTVkdQYXRoU2VnTW92ZXRvUmVs
IDogcHVibGljIFNWR1BhdGhTZWdTaW5nbGVDb29yZCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7IA0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2Vn
TW92ZXRvUmVsPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFNWR1BhdGhTZWdNb3ZldG9SZWwoeCwgeSkpOyB9DQogDQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZ0Nsb3NlUGF0aC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNl
Z0Nsb3NlUGF0aC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
Q2xvc2VQYXRoLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNiwxMCArMjYsMTEgQEANCiAjaWYgRU5B
QkxFKFNWRykNCiANCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlDQogew0KLSAgICBjbGFzcyBTVkdQ
YXRoU2VnQ2xvc2VQYXRoIDogcHVibGljIFNWR1BhdGhTZWcNCisgICAgY2xhc3MgU1ZHUGF0aFNl
Z0Nsb3NlUGF0aCA6IHB1YmxpYyBTVkdQYXRoU2VnLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNl
DQogICAgIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0
aFNlZ0Nsb3NlUGF0aD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdD
bG9zZVBhdGgpOyB9DQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw3
ICszMSw3IEBADQogICAgIGNsYXNzIFBhdGg7DQogICAgIGNsYXNzIFNWR0VsZW1lbnQ7DQogIA0K
LSAgICBjbGFzcyBTVkdQYXRoU2VnTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFJlZlB0cjxTVkdQYXRo
U2VnPiA+IHsNCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0xpc3QgOiBwdWJsaWMgU1ZHTGlzdDxSZWZQ
dHI8U1ZHUGF0aFNlZz4gPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1Ymxp
YzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaXN0PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNW
R1BhdGhTZWdMaXN0KGF0dHJpYnV0ZU5hbWUpKTsgfQ0KICAgICAgICAgdmlydHVhbCB+U1ZHUGF0
aFNlZ0xpc3QoKTsNCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlckxp
bmVhckdyYWRpZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQ
YWludFNlcnZlckxpbmVhckdyYWRpZW50LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTMwLDEwICszMCwxMSBAQA0KIA0KICNpbmNsdWRlICJGbG9hdFBvaW50LmgiDQogI2lu
Y2x1ZGUgIlNWR1BhaW50U2VydmVyR3JhZGllbnQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxv
Y0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotICAgIGNsYXNzIFNWR1BhaW50
U2VydmVyTGluZWFyR3JhZGllbnQgOiBwdWJsaWMgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudCB7DQor
ICAgIGNsYXNzIFNWR1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQgOiBwdWJsaWMgU1ZHUGFpbnRT
ZXJ2ZXJHcmFkaWVudCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoN
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQ+
IGNyZWF0ZShjb25zdCBTVkdHcmFkaWVudEVsZW1lbnQqIG93bmVyKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgU1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudChvd25lcikpOyB9DQogICAgICAgICB2
aXJ0dWFsIH5TVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50KCk7DQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw3IEBADQogI2luY2x1ZGUg
IkltYWdlLmgiDQogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiDQogI2luY2x1ZGUgIkludFNpemUu
aCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCkBAIC00MCw3ICs0MSw3IEBADQogICAgIGNs
YXNzIEZyYW1lVmlldzsNCiAgICAgY2xhc3MgUGFnZTsNCiAgICAgDQotICAgIGNsYXNzIFNWR0lt
YWdlIDogcHVibGljIEltYWdlIHsNCisgICAgY2xhc3MgU1ZHSW1hZ2UgOiBwdWJsaWMgSW1hZ2Us
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTVkdJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQ0K
ICAgICAgICAgew0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmNwcAkocmV2
aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2UuY3BwCSh3
b3JraW5nIGNvcHkpDQpAQCAtMzEsNiArMzEsNyBAQA0KICNpbmNsdWRlICJSZW5kZXJQYXRoLmgi
DQogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCINCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5o
Ig0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsNCiANCkBAIC0zOCw3ICszOSw3IEBADQogew0KIH0NCiANCi1zdHJ1Y3QgUmVzb3VyY2VTZXQg
eyANCitzdHJ1Y3QgUmVzb3VyY2VTZXQgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAg
ICAgUmVzb3VyY2VTZXQoKSANCiAgICAgew0KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBf
UmVzb3VyY2VUeXBlQ291bnQ7IGkrKykNCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdS
ZXNvdXJjZU1hcmtlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
UmVzb3VyY2VNYXJrZXIuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHUmVzb3VyY2VNYXJrZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMwLDEzICszMCwxNCBA
QA0KIA0KICNpbmNsdWRlICJGbG9hdFJlY3QuaCINCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2UuaCIN
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7
DQogDQogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsNCiAgICAgY2xhc3MgUmVuZGVyU1ZHVmll
d3BvcnRDb250YWluZXI7DQogDQotICAgIGNsYXNzIFNWR1Jlc291cmNlTWFya2VyIDogcHVibGlj
IFNWR1Jlc291cmNlIHsNCisgICAgY2xhc3MgU1ZHUmVzb3VyY2VNYXJrZXIgOiBwdWJsaWMgU1ZH
UmVzb3VyY2UsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdSZXNvdXJjZU1hcmtlcj4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFNWR1Jlc291cmNlTWFya2VyKTsgfQ0KICAgICAgICAgdmlydHVhbCB+
U1ZHUmVzb3VyY2VNYXJrZXIoKTsNCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNv
dXJjZU1hc2tlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVz
b3VyY2VNYXNrZXIuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHUmVzb3VyY2VNYXNrZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDYgKzMzLDcgQEANCiAN
CiAjaW5jbHVkZSA8bWVtb3J5Pg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0K
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQog
DQpAQCAtNDIsNyArNDMsNyBAQA0KICAgICBjbGFzcyBJbWFnZUJ1ZmZlcjsNCiAgICAgY2xhc3Mg
U1ZHTWFza0VsZW1lbnQ7DQogDQotICAgIGNsYXNzIFNWR1Jlc291cmNlTWFza2VyIDogcHVibGlj
IFNWR1Jlc291cmNlIHsNCisgICAgY2xhc3MgU1ZHUmVzb3VyY2VNYXNrZXIgOiBwdWJsaWMgU1ZH
UmVzb3VyY2UsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdSZXNvdXJjZU1hc2tlcj4gY3JlYXRlKGNvbnN0IFNW
R01hc2tFbGVtZW50KiBvd25lckVsZW1lbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdSZXNv
dXJjZU1hc2tlcihvd25lckVsZW1lbnQpKTsgfQ0KICAgICAgICAgdmlydHVhbCB+U1ZHUmVzb3Vy
Y2VNYXNrZXIoKTsNCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlclNv
bGlkLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZl
clNvbGlkLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Bh
aW50U2VydmVyU29saWQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMwLDEwICszMCwxMSBAQA0KIA0K
ICNpbmNsdWRlICJDb2xvci5oIg0KICNpbmNsdWRlICJTVkdQYWludFNlcnZlci5oIg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi0g
ICAgY2xhc3MgU1ZHUGFpbnRTZXJ2ZXJTb2xpZCA6IHB1YmxpYyBTVkdQYWludFNlcnZlciB7DQor
ICAgIGNsYXNzIFNWR1BhaW50U2VydmVyU29saWQgOiBwdWJsaWMgU1ZHUGFpbnRTZXJ2ZXIsIHB1
YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTVkdQYWludFNlcnZlclNvbGlkPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgU1ZHUGFpbnRTZXJ2ZXJTb2xpZCk7IH0NCiAgICAgICAgIHZpcnR1YWwgflNWR1BhaW50
U2VydmVyU29saWQoKTsNCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZl
clJhZGlhbEdyYWRpZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTMwLDEwICszMCwxMSBAQA0KIA0KICNpbmNsdWRlICJGbG9hdFBvaW50LmgiDQog
I2luY2x1ZGUgIlNWR1BhaW50U2VydmVyR3JhZGllbnQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotICAgIGNsYXNzIFNWR1Bh
aW50U2VydmVyUmFkaWFsR3JhZGllbnQgOiBwdWJsaWMgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudCB7
DQorICAgIGNsYXNzIFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQgOiBwdWJsaWMgU1ZHUGFp
bnRTZXJ2ZXJHcmFkaWVudCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1Ymxp
YzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGll
bnQ+IGNyZWF0ZShjb25zdCBTVkdHcmFkaWVudEVsZW1lbnQqIG93bmVyKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgU1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudChvd25lcikpOyB9DQogICAgICAg
ICB2aXJ0dWFsIH5TVkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50KCk7DQpJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0yOCw2ICsyOCw3IEBADQogDQogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIg0KIA0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+DQogDQog
bmFtZXNwYWNlIFdlYkNvcmUgew0KQEAgLTQwLDcgKzQxLDcgQEANCiAgICAgdmlydHVhbCB+U1ZH
UmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGEoKSB7fQ0KIH07DQogDQotY2xhc3MgU1ZHUmVzb3Vy
Y2VGaWx0ZXIgOiBwdWJsaWMgU1ZHUmVzb3VyY2Ugew0KK2NsYXNzIFNWR1Jlc291cmNlRmlsdGVy
IDogcHVibGljIFNWR1Jlc291cmNlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJs
aWM6DQogICAgIFNWR1Jlc291cmNlRmlsdGVyKCk7DQogICAgIA0KSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR1BhaW50U2VydmVyUGF0dGVybi5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyUGF0dGVybi5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMzQsNiArMzQsNyBAQA0KIA0KICNpbmNsdWRlIDxtZW1vcnk+DQogDQorI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4NCiAN
CiBuYW1lc3BhY2UgV2ViQ29yZSB7DQpAQCAtNDIsNyArNDMsNyBAQA0KICAgICBjbGFzcyBJbWFn
ZUJ1ZmZlcjsNCiAgICAgY2xhc3MgU1ZHUGF0dGVybkVsZW1lbnQ7DQogDQotICAgIGNsYXNzIFNW
R1BhaW50U2VydmVyUGF0dGVybiA6IHB1YmxpYyBTVkdQYWludFNlcnZlciB7DQorICAgIGNsYXNz
IFNWR1BhaW50U2VydmVyUGF0dGVybiA6IHB1YmxpYyBTVkdQYWludFNlcnZlciwgcHVibGljIFdU
Rjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR1BhaW50U2VydmVyUGF0dGVybj4gY3JlYXRlKGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50
KiBvd25lcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhaW50U2VydmVyUGF0dGVybihvd25l
cikpOyB9DQogDQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBo
b2xvZ3kuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVNb3JwaG9sb2d5LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNCw2ICsyNCw3
IEBADQogDQogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykNCiAjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQog
bmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTMzLDcgKzM0LDcgQEANCiAgICAgICAgIEZFTU9S
UEhPTE9HWV9PUEVSQVRPUl9ESUFMQVRFID0gMg0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBGRU1v
cnBob2xvZ3kgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsNCisgICAgY2xhc3MgRkVNb3JwaG9sb2d5
IDogcHVibGljIEZpbHRlckVmZmVjdCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAg
IHB1YmxpYzoNCiAgICAgICAgIFBhc3NSZWZQdHI8RkVNb3JwaG9sb2d5PiBjcmVhdGUoRmlsdGVy
RWZmZWN0KiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9h
dCYpOyAgDQogICAgICAgICBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIG1vcnBob2xvZ3lPcGVyYXRv
cigpIGNvbnN0Ow0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVz
c2lhbkJsdXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjQs
MTAgKzI0LDExIEBADQogDQogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykN
CiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLSAgICBjbGFzcyBGRUdhdXNzaWFuQmx1
ciA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgew0KKyAgICBjbGFzcyBGRUdhdXNzaWFuQmx1ciA6IHB1
YmxpYyBGaWx0ZXJFZmZlY3QsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJs
aWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRUdhdXNzaWFuQmx1cj4gY3JlYXRlKEZp
bHRlckVmZmVjdCosIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmKTsNCiANCkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTI1LDEwICsyNSwxMSBAQA0KICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpDQogI2luY2x1ZGUgIkNvbG9yLmgiDQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5o
Ig0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsNCiANCi0gICAgY2xhc3MgRkVGbG9vZCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgew0KKyAgICBj
bGFzcyBGRUZsb29kIDogcHVibGljIEZpbHRlckVmZmVjdCwgcHVibGljIFdURjo6RmFzdEFsbG9j
QmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFRmxvb2Q+
IGNyZWF0ZShjb25zdCBDb2xvciYsIGNvbnN0IGZsb2F0Jik7DQogDQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdEaXN0YW50TGlnaHRTb3VyY2UuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRGlzdGFudExpZ2h0U291cmNlLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRGlz
dGFudExpZ2h0U291cmNlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNSwxMCArMjUsMTEgQEANCiAN
CiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQ0KICNpbmNsdWRlICJTVkdM
aWdodFNvdXJjZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsNCiANCi0gICAgY2xhc3MgRGlzdGFudExpZ2h0U291cmNlIDogcHVibGlj
IExpZ2h0U291cmNlIHsNCisgICAgY2xhc3MgRGlzdGFudExpZ2h0U291cmNlIDogcHVibGljIExp
Z2h0U291cmNlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAg
ICAgICAgRGlzdGFudExpZ2h0U291cmNlKGZsb2F0IGF6aW11dGgsIGZsb2F0IGVsZXZhdGlvbikN
CiAgICAgICAgICAgICA6IExpZ2h0U291cmNlKExTX0RJU1RBTlQpDQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCShy
ZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlz
cGxhY2VtZW50TWFwLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNSw2ICsyNSw3IEBADQogI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykNCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCINCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxs
b2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTM2LDcgKzM3LDcgQEAN
CiAgICAgICAgIENIQU5ORUxfQSAgICAgICA9IDQNCiAgICAgfTsNCiAgICAgDQotICAgIGNsYXNz
IEZFRGlzcGxhY2VtZW50TWFwIDogcHVibGljIEZpbHRlckVmZmVjdCB7DQorICAgIGNsYXNzIEZF
RGlzcGxhY2VtZW50TWFwIDogcHVibGljIEZpbHRlckVmZmVjdCwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFRGlz
cGxhY2VtZW50TWFwPiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgRmlsdGVyRWZmZWN0KiwgQ2hhbm5l
bFNlbGVjdG9yVHlwZSwNCiAgICAgICAgICAgICAgICAgQ2hhbm5lbFNlbGVjdG9yVHlwZSwgY29u
c3QgZmxvYXQmKTsNCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVy
YnVsZW5jZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRVR1cmJ1bGVuY2UuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI0LDYgKzI0
LDcgQEANCiANCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQ0KICNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAN
CiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQpAQCAtMzMsNyArMzQsNyBAQA0KICAgICAgICAgRkVU
VVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSAgID0gMg0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBG
RVR1cmJ1bGVuY2UgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsNCisgICAgY2xhc3MgRkVUdXJidWxl
bmNlIDogcHVibGljIEZpbHRlckVmZmVjdCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFVHVyYnVsZW5jZT4gY3Jl
YXRlKFR1cmJ1bGFuY2VUeXBlLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwgY29uc3QgaW50
JiwgY29uc3QgZmxvYXQmLA0KICAgICAgICAgICAgICAgICBib29sKTsNCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVE
aWZmdXNlTGlnaHRpbmcuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI1LDEyICsyNSwxMyBAQA0KICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpDQogI2luY2x1ZGUgIkNvbG9yLmgi
DQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiAgICAgY2xhc3MgTGlnaHRTb3VyY2U7
DQogDQotICAgIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVibGljIEZpbHRlckVmZmVjdCB7
DQorICAgIGNsYXNzIEZFRGlmZnVzZUxpZ2h0aW5nIDogcHVibGljIEZpbHRlckVmZmVjdCwgcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
Q29sb3ImLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwNCiAgICAgICAgICAgICAgICAgY29u
c3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIExpZ2h0U291cmNlKik7DQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAkocmV2
aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZv
bHZlTWF0cml4LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCINCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiDQogDQorI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4NCiANCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7DQpAQCAtMzgsNyArMzksNyBAQA0KICAgICAgICAgRURHRU1PREVfTk9ORSAg
ICAgID0gMw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBGRUNvbnZvbHZlTWF0cml4IDogcHVibGlj
IEZpbHRlckVmZmVjdCB7DQorICAgIGNsYXNzIEZFQ29udm9sdmVNYXRyaXggOiBwdWJsaWMgRmls
dGVyRWZmZWN0LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVDb252b2x2ZU1hdHJpeD4gY3JlYXRlKEZpbHRlckVm
ZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IEZsb2F0U2l6ZSYsIA0KICAgICAgICAgICAgICAg
ICBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0JiwgY29uc3QgRmxvYXRTaXplJiwgRWRnZU1vZGVU
eXBlLCBjb25zdCBGbG9hdFBvaW50JiwNCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI3LDExICsyNywx
MyBAQA0KICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIg0KICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUhhbmRsZS5oIg0KICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCINCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogICAg
IGNsYXNzIEZFSW1hZ2UgOiBwdWJsaWMgRmlsdGVyRWZmZWN0DQotICAgICAgICAgICAgICAgICAg
ICAgLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgew0KKyAgICAgICAgICAgICAgICAgICAg
ICwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50DQorICAgICAgICAgICAgICAgICAgICAgLCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RkVJbWFnZT4gY3JlYXRlKENhY2hlZEltYWdlKik7DQogICAgICAgICB2aXJ0
dWFsIH5GRUltYWdlKCk7DQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdT
cG90TGlnaHRTb3VyY2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHU3BvdExpZ2h0U291cmNlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHU3BvdExpZ2h0U291cmNlLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0yNiwxMCArMjYsMTEgQEANCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQ0KICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCINCiAjaW5jbHVkZSAiU1ZHTGlnaHRTb3Vy
Y2UuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7DQogDQotICAgIGNsYXNzIFNwb3RMaWdodFNvdXJjZSA6IHB1YmxpYyBMaWdodFNvdXJj
ZSB7DQorICAgIGNsYXNzIFNwb3RMaWdodFNvdXJjZSA6IHB1YmxpYyBMaWdodFNvdXJjZSwgcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFNwb3RMaWdo
dFNvdXJjZShjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50M0Qm
IGRpcmVjdGlvbiwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQgbGltaXRpbmdDb25lQW5n
bGUpDQogICAgICAgICAgICAgOiBMaWdodFNvdXJjZShMU19TUE9UKQ0KSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHUG9pbnRMaWdodFNvdXJjZS5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdQb2ludExpZ2h0U291cmNlLmgJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHUG9pbnRM
aWdodFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsMTAgKzI2LDExIEBADQogI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykNCiAjaW5jbHVkZSAiRmxvYXRQb2ludDNE
LmgiDQogI2luY2x1ZGUgIlNWR0xpZ2h0U291cmNlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxs
b2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLSAgICBjbGFzcyBQb2ludExp
Z2h0U291cmNlIDogcHVibGljIExpZ2h0U291cmNlIHsNCisgICAgY2xhc3MgUG9pbnRMaWdodFNv
dXJjZSA6IHB1YmxpYyBMaWdodFNvdXJjZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHB1YmxpYzoNCiAgICAgICAgIFBvaW50TGlnaHRTb3VyY2UoY29uc3QgRmxvYXRQb2ludDNE
JiBwb3NpdGlvbikNCiAgICAgICAgICAgICA6IExpZ2h0U291cmNlKExTX1BPSU5UKQ0KSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oCShyZXZpc2lvbiAzODMz
NCkNCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjQsMTAgKzI0LDExIEBADQogDQogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykNCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiDQorI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KICAgICANCi0gICAg
Y2xhc3MgRkVUaWxlIDogcHVibGljIEZpbHRlckVmZmVjdCB7DQorICAgIGNsYXNzIEZFVGlsZSA6
IHB1YmxpYyBGaWx0ZXJFZmZlY3QsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBw
dWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXJF
ZmZlY3QqKTsNCiANCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVy
Z2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVN
ZXJnZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFTWVyZ2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI1LDExICsyNSwxMiBAQA0KICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpDQogI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLSAgICBjbGFzcyBGRU1lcmdl
IDogcHVibGljIEZpbHRlckVmZmVjdCB7DQorICAgIGNsYXNzIEZFTWVyZ2UgOiBwdWJsaWMgRmls
dGVyRWZmZWN0LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVNZXJnZT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxGaWx0
ZXJFZmZlY3QqPiYpOw0KIA0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMjYsMTAgKzI2LDExIEBADQogI2luY2x1ZGUgIkNvbG9yLmgiDQogI2lu
Y2x1ZGUgIlNWR0xpZ2h0U291cmNlLmgiDQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIg0KKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiAN
Ci0gICAgY2xhc3MgRkVTcGVjdWxhckxpZ2h0aW5nIDogcHVibGljIEZpbHRlckVmZmVjdCB7DQor
ICAgIGNsYXNzIEZFU3BlY3VsYXJMaWdodGluZyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QsIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBD
b2xvciYsIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmLA0KICAgICAgICAgICAgIGNvbnN0IGZs
b2F0JiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYsIExpZ2h0U291cmNlKik7DQpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCShyZXZpc2lvbiAz
ODMzNCkNCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgJKHdv
cmtpbmcgY29weSkNCkBAIC0yNCwxMCArMjQsMTEgQEANCiANCiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQ0KICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCINCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotICAg
IGNsYXNzIEZFT2Zmc2V0IDogcHVibGljIEZpbHRlckVmZmVjdCB7DQorICAgIGNsYXNzIEZFT2Zm
c2V0IDogcHVibGljIEZpbHRlckVmZmVjdCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFT2Zmc2V0PiBjcmVhdGUo
RmlsdGVyRWZmZWN0KiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOw0KIA0KSW5kZXg6IFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlQ2xpcHBlci5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VDbGlwcGVyLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlQ2xpcHBlci5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMzAsNiArMzAsNyBAQA0KIA0KICNpbmNsdWRlICJTVkdSZXNvdXJjZS5oIg0K
ICNpbmNsdWRlICJQYXRoLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQog
bmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTYxLDcgKzYyLDcgQEANCiANCiAgICAgY2xhc3Mg
R3JhcGhpY3NDb250ZXh0Ow0KIA0KLSAgICBjbGFzcyBTVkdSZXNvdXJjZUNsaXBwZXIgOiBwdWJs
aWMgU1ZHUmVzb3VyY2Ugew0KKyAgICBjbGFzcyBTVkdSZXNvdXJjZUNsaXBwZXIgOiBwdWJsaWMg
U1ZHUmVzb3VyY2UsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdSZXNvdXJjZUNsaXBwZXI+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdSZXNvdXJjZUNsaXBwZXIpOyB9DQogICAgICAgICB2aXJ0
dWFsIH5TVkdSZXNvdXJjZUNsaXBwZXIoKTsNCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFeGNlcHRp
b24uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3ZnL1NWR0V4Y2VwdGlvbi5oCShyZXZpc2lv
biAzODMzNCkNCisrKyBXZWJDb3JlL3N2Zy9TVkdFeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQ0K
QEAgLTIzLDEyICsyMywxMyBAQA0KICNkZWZpbmUgU1ZHRXhjZXB0aW9uX2gNCiANCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQmFzZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0K
ICNpZiBFTkFCTEUoU1ZHKQ0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi0gICAgY2xhc3Mg
U1ZHRXhjZXB0aW9uIDogcHVibGljIEV4Y2VwdGlvbkJhc2Ugew0KKyAgICBjbGFzcyBTVkdFeGNl
cHRpb24gOiBwdWJsaWMgRXhjZXB0aW9uQmFzZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0V4Y2VwdGlvbj4g
Y3JlYXRlKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pDQogICAg
ICAgICB7DQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0FuZ2xlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL1NW
R0FuZ2xlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNCwxMiArMjQsMTMgQEANCiAjaWYgRU5BQkxF
KFNWRykNCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7DQogDQogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7DQogDQotICAgIGNsYXNzIFNWR0Fu
Z2xlIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHQW5nbGU+IHsNCisgICAgY2xhc3MgU1ZHQW5nbGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxTVkdBbmdsZT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ug
ew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmdsZT4gY3Jl
YXRlKCkNCiAgICAgICAgIHsNCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTI0LDYgKzI0LDcgQEANCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUZW1w
bGF0ZS5oIg0KICNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCINCiAjaW5jbHVkZSAi
U3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCkBAIC0zMSw3ICszMiw3IEBADQogICAg
IGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7DQogDQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZSwgdHlwZW5hbWUgT3duZXJFbGVtZW50LCB0eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5
cGVuYW1lIERlY29yYXRlZFR5cGUsIGNvbnN0IGNoYXIqIFRhZ05hbWUsIGNvbnN0IGNoYXIqIFBy
b3BlcnR5TmFtZT4NCi0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxEZWNvcmF0ZWRUeXBlPiB7DQorICAgIGNsYXNzIFNWR0Fu
aW1hdGVkUHJvcGVydHlUZWFyT2ZmIDogcHVibGljIFNWR0FuaW1hdGVkVGVtcGxhdGU8RGVjb3Jh
dGVkVHlwZT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAg
ICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPE93bmVyVHlwZSwgT3duZXJF
bGVtZW50LCBBbmltYXRlZFR5cGUsIERlY29yYXRlZFR5cGUsIFRhZ05hbWUsIFByb3BlcnR5TmFt
ZT4gU2VsZjsNCiAgICAgICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxPd25lclR5cGUs
IEFuaW1hdGVkVHlwZSwgVGFnTmFtZSwgUHJvcGVydHlOYW1lPiBDcmVhdG9yOw0KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9zdmcvU1ZH
UG9pbnRMaXN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3ZnL1NWR1BvaW50TGlz
dC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsMTMgKzI2LDE0IEBADQogI2lmIEVOQUJMRShTVkcp
DQogI2luY2x1ZGUgIlNWR0xpc3QuaCINCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0K
IA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiAgICAgY2xhc3MgU3RyaW5nOw0KIA0KLSAgICBj
bGFzcyBTVkdQb2ludExpc3QgOiBwdWJsaWMgU1ZHUE9ETGlzdDxGbG9hdFBvaW50PiB7DQorICAg
IGNsYXNzIFNWR1BvaW50TGlzdCA6IHB1YmxpYyBTVkdQT0RMaXN0PEZsb2F0UG9pbnQ+LCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U1ZHUG9pbnRMaXN0PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BvaW50TGlzdChhdHRyaWJ1dGVOYW1l
KSk7IH0NCiAgICAgICAgIHZpcnR1YWwgflNWR1BvaW50TGlzdCgpOw0KSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aC5oCShyZXZpc2lvbiAz
ODMzNCkNCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aC5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsMTAgKzI2LDExIEBADQogI2lmIEVOQUJMRShTVkcpDQog
DQogI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2Uu
aD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2
ZXRvUXVhZHJhdGljU21vb3RoQWJzIDogcHVibGljIFNWR1BhdGhTZWdTaW5nbGVDb29yZCB7DQor
ICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzIDogcHVibGljIFNW
R1BhdGhTZWdTaW5nbGVDb29yZCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1
YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljU21vb3RoQWJzPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKHgsIHkpKTsgfQ0KIA0KQEAg
LTQwLDcgKzQxLDcgQEANCiAgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3Ro
QWJzKGZsb2F0IHgsIGZsb2F0IHkpOw0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCA6IHB1YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQg
ew0KKyAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCA6IHB1Ymxp
YyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAg
ICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpY1Ntb290aFJlbD4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHkpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCh4LCB5KSk7IH0NCiAN
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTMyLDYgKzMyLDcgQEANCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIg0KICNpbmNsdWRlICJT
dHJpbmdJbXBsLmgiDQogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVGVtcGxhdGUuaCINCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQpAQCAt
NDMsNyArNDQsNyBAQA0KIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7DQogY2xhc3MgU1ZHU1ZHRWxl
bWVudDsNCiANCi1jbGFzcyBTVkdEb2N1bWVudEV4dGVuc2lvbnMgew0KK2NsYXNzIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucyA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAg
ICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50Kik7DQogICAgIH5TVkdEb2N1bWVudEV4
dGVuc2lvbnMoKTsNCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2Vi
Q29yZS9zdmcvU1ZHVmlld1NwZWMuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2LDcgQEAN
CiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94LmgiDQogI2luY2x1ZGUgIlNWR1pvb21BbmRQYW4u
aCINCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCkBAIC0zNSw3ICszNiw4IEBADQogICAg
IGNsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7DQogDQogICAgIGNsYXNzIFNWR1ZpZXdTcGVjIDogcHVi
bGljIFNWR0ZpdFRvVmlld0JveCwNCi0gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZH
Wm9vbUFuZFBhbiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1pvb21BbmRQ
YW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFNWR1ZpZXdTcGVjKGNvbnN0IFNWR1NWR0VsZW1lbnQq
KTsNCiAgICAgICAgIHZpcnR1YWwgflNWR1ZpZXdTcGVjKCk7DQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGluZXRvVmVydGljYWwuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNiw2ICsy
Niw3IEBADQogI2lmIEVOQUJMRShTVkcpDQogDQogI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCINCisj
aW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQog
DQpAQCAtNDIsNyArNDMsNyBAQA0KICAgICAgICAgZmxvYXQgbV95Ow0KICAgICB9Ow0KIA0KLSAg
ICBjbGFzcyBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZ0xp
bmV0b1ZlcnRpY2FsIHsNCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzIDog
cHVibGljIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdM
aW5ldG9WZXJ0aWNhbEFicz4gY3JlYXRlKGZsb2F0IHkpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
VkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMoeSkpOyB9DQogDQpAQCAtNTMsNyArNTQsNyBAQA0K
ICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzKGZsb2F0IHkpOw0KICAgICB9Ow0K
IA0KLSAgICBjbGFzcyBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwgOiBwdWJsaWMgU1ZHUGF0
aFNlZ0xpbmV0b1ZlcnRpY2FsIHsNCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2Fs
UmVsIDogcHVibGljIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbCwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1Bh
dGhTZWdMaW5ldG9WZXJ0aWNhbFJlbD4gY3JlYXRlKGZsb2F0IHkpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwoeSkpOyB9DQogDQpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50SW5zdGFuY2VMaXN0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNCwxMiAr
MjQsMTMgQEANCiANCiAjaWYgRU5BQkxFKFNWRykNCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxv
Y0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiAjaW5jbHVkZSAiU1ZHRWxl
bWVudEluc3RhbmNlLmgiDQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLSAgICBjbGFzcyBT
VkdFbGVtZW50SW5zdGFuY2VMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHRWxlbWVudEluc3Rh
bmNlTGlzdD4gew0KKyAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2VMaXN0IDogcHVibGljIFJl
ZkNvdW50ZWQ8U1ZHRWxlbWVudEluc3RhbmNlTGlzdD4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdFbGVtZW50
SW5zdGFuY2VMaXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxTVkdFbGVtZW50SW5zdGFuY2U+IHJvb3RJ
bnN0YW5jZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0VsZW1lbnRJbnN0YW5jZUxpc3Qocm9v
dEluc3RhbmNlKSk7IH0NCiAgICAgICAgIHZpcnR1YWwgflNWR0VsZW1lbnRJbnN0YW5jZUxpc3Qo
KTsNCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUv
c3ZnL1NWR0xlbmd0aExpc3QuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDEwICsyNiwxMSBAQA0K
ICNpZiBFTkFCTEUoU1ZHKQ0KICNpbmNsdWRlICJTVkdMZW5ndGguaCINCiAjaW5jbHVkZSAiU1ZH
TGlzdC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsNCiANCi0gICAgY2xhc3MgU1ZHTGVuZ3RoTGlzdCA6IHB1YmxpYyBTVkdQT0RMaXN0
PFNWR0xlbmd0aD4gew0KKyAgICBjbGFzcyBTVkdMZW5ndGhMaXN0IDogcHVibGljIFNWR1BPRExp
c3Q8U1ZHTGVuZ3RoPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoN
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0xlbmd0aExpc3Q+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHTGVu
Z3RoTGlzdChhdHRyaWJ1dGVOYW1lKSk7IH0NCiAgICAgICAgIHZpcnR1YWwgflNWR0xlbmd0aExp
c3QoKTsNCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNv
cmUvaHRtbC9IVE1MUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTUyLDYgKzUyLDcgQEAN
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIg0KICNpbmNsdWRlICJTZXR0aW5ncy5oIg0K
ICNpbmNsdWRlICJUZXh0LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQog
bmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTYwLDcgKzYxLDcgQEANCiBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY01heFJlZHVuZGFudFRhZ0RlcHRoID0gMjA7DQogc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNSZXNpZHVhbFN0eWxlTWF4RGVwdGggPSAyMDA7DQogDQotc3RydWN0IEhUTUxTdGFja0Vs
ZW0gOiBOb25jb3B5YWJsZSB7DQorc3RydWN0IEhUTUxTdGFja0VsZW0gOiBOb25jb3B5YWJsZSwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIEhUTUxTdGFja0VsZW0oY29uc3QgQXRv
bWljU3RyaW5nJiB0LCBpbnQgbHZsLCBOb2RlKiBuLCBib29sIHIsIEhUTUxTdGFja0VsZW0qIG54
KQ0KICAgICAgICAgOiB0YWdOYW1lKHQpDQogICAgICAgICAsIGxldmVsKGx2bCkNCkluZGV4OiBX
ZWJDb3JlL2h0bWwvVGV4dE1ldHJpY3MuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaHRtbC9U
ZXh0TWV0cmljcy5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2h0bWwvVGV4dE1ldHJp
Y3MuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDExICsyNiwxMiBAQA0KICNpZm5kZWYgVGV4dE1l
dHJpY3NfaA0KICNkZWZpbmUgVGV4dE1ldHJpY3NfaA0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFs
bG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KIA0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsNCiANCi1jbGFzcyBUZXh0TWV0cmljcyA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRN
ZXRyaWNzPiB7DQorY2xhc3MgVGV4dE1ldHJpY3MgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0TWV0
cmljcz4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VGV4dE1ldHJpY3M+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBU
ZXh0TWV0cmljcyk7IH0NCiANCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5oCShyZXZpc2lvbiAz
ODMzNCkNCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTI4LDYgKzI4LDcgQEANCiAjZGVmaW5lIENhbnZhc0dyYWRpZW50X2gNCiANCiAjaW5jbHVk
ZSAiR3JhZGllbnQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiANCkBA
IC0zNyw3ICszOCw3IEBADQogDQogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7DQogDQot
ICAgIGNsYXNzIENhbnZhc0dyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8Q2FudmFzR3JhZGll
bnQ+IHsNCisgICAgY2xhc3MgQ2FudmFzR3JhZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52
YXNHcmFkaWVudD4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZs
b2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50JiBwMSkNCiAgICAgICAgIHsNCkluZGV4OiBX
ZWJDb3JlL2h0bWwvUHJlbG9hZFNjYW5uZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaHRt
bC9QcmVsb2FkU2Nhbm5lci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2h0bWwvUHJl
bG9hZFNjYW5uZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI4LDYgKzI4LDcgQEANCiANCiAjaW5j
bHVkZSAiQXRvbWljU3RyaW5nLmgiDQogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIg0KKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KIA0KQEAgLTM3LDcgKzM4LDcgQEANCiAgICAg
Y2xhc3MgQ2FjaGVkUmVzb3VyY2VDbGllbnQ7DQogICAgIGNsYXNzIERvY3VtZW50Ow0KICAgICAN
Ci0gICAgY2xhc3MgUHJlbG9hZFNjYW5uZXIgOiBOb25jb3B5YWJsZSB7DQorICAgIGNsYXNzIFBy
ZWxvYWRTY2FubmVyIDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
ICAgICBwdWJsaWM6DQogICAgICAgICBQcmVsb2FkU2Nhbm5lcihEb2N1bWVudCopOw0KICAgICAg
ICAgflByZWxvYWRTY2FubmVyKCk7DQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNSw2
ICsyNSw3IEBADQogI2RlZmluZSBIVE1MUGFyc2VyX2gNCiANCiAjaW5jbHVkZSAiUXVhbGlmaWVk
TmFtZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogI2luY2x1ZGUgIkhUTUxQYXJz
ZXJFcnJvckNvZGVzLmgiDQpAQCAtNDcsNyArNDgsNyBAQA0KICAqIFRoZSBwYXJzZXIgZm9yIEhU
TUwuIEl0IHJlY2VpdmVzIGEgc3RyZWFtIG9mIHRva2VucyBmcm9tIHRoZSBIVE1MVG9rZW5pemVy
LCBhbmQNCiAgKiBidWlsZHMgdXAgdGhlIERvY3VtZW50IHN0cnVjdHVyZSBmcm9tIGl0Lg0KICAq
Lw0KLWNsYXNzIEhUTUxQYXJzZXIgOiBOb25jb3B5YWJsZSB7DQorY2xhc3MgSFRNTFBhcnNlciA6
IE5vbmNvcHlhYmxlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAg
IEhUTUxQYXJzZXIoSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOw0KICAgICBIVE1M
UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqKTsNCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRva2Vu
aXplci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAkocmV2
aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTMxLDYgKzMxLDcgQEANCiAjaW5jbHVkZSAiVGltZXIuaCINCiAjaW5jbHVkZSAi
VG9rZW5pemVyLmgiDQogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4NCiANCkBAIC0xMzAsNyArMTMxLDcgQEANCiANCiAvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQogDQotY2xhc3MgSFRNTFRva2VuaXplciA6IHB1YmxpYyBUb2tlbml6ZXIsIHB1YmxpYyBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7DQorY2xhc3MgSFRNTFRva2VuaXplciA6IHB1YmxpYyBUb2tl
bml6ZXIsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCwgcHVibGljIFdURjo6RmFzdEFsbG9j
QmFzZSB7DQogcHVibGljOg0KICAgICBIVE1MVG9rZW5pemVyKEhUTUxEb2N1bWVudCosIGJvb2wg
cmVwb3J0RXJyb3JzKTsNCiAgICAgSFRNTFRva2VuaXplcihIVE1MVmlld1NvdXJjZURvY3VtZW50
Kik7DQpJbmRleDogV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9odG1sL0ltYWdlRGF0YS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCwxMSArMzAsMTIgQEANCiAjZGVmaW5l
IEltYWdlRGF0YV9oDQogDQogI2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJyYXkuaCINCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiAN
CiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotICAgIGNsYXNzIEltYWdlRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEltYWdlRGF0YT4gew0KKyAgICBjbGFzcyBJbWFnZURhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxJbWFnZURhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVi
bGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUodW5zaWdu
ZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7DQogDQpJbmRleDogV2ViQ29yZS9odG1sL0NhbnZh
c1BpeGVsQXJyYXkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFy
cmF5LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvaHRtbC9DYW52YXNQaXhlbEFycmF5
LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw2ICsyOSw3IEBADQogI2lmbmRlZiBDYW52YXNQaXhl
bEFycmF5X2gNCiAjZGVmaW5lIENhbnZhc1BpeGVsQXJyYXlfaA0KIA0KKyNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPg0KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KQEAgLTM2
LDcgKzM3LDcgQEANCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogICAgIA0KLSAgICBjbGFzcyBD
YW52YXNQaXhlbEFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8Q2FudmFzUGl4ZWxBcnJheT4gew0K
KyAgICBjbGFzcyBDYW52YXNQaXhlbEFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8Q2FudmFzUGl4
ZWxBcnJheT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNQaXhlbEFycmF5PiBjcmVhdGUodW5zaWduZWQg
c2l6ZSk7DQogDQpJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
CShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMiw2ICszMiw3IEBADQogI2luY2x1ZGUgIkdyYXBo
aWNzVHlwZXMuaCINCiAjaW5jbHVkZSAiUGF0aC5oIg0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+DQogDQogI2lmIFBMQVRGT1JNKENHKQ0KQEAgLTUzLDcgKzU0LDcgQEANCiANCiAgICAg
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsNCiANCi0gICAgY2xhc3MgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEIDogTm9uY29weWFibGUgew0KKyAgICBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQgOiBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1
YmxpYzoNCiAgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRChIVE1MQ2FudmFzRWxlbWVu
dCopOw0KICAgICAgICAgDQpJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1BhdHRlcm4uaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvaHRtbC9DYW52YXNQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
Nyw2ICsyNyw3IEBADQogI2RlZmluZSBDYW52YXNQYXR0ZXJuX2gNCiANCiAjaW5jbHVkZSAiUGF0
dGVybi5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KIA0KQEAgLTM3LDcg
KzM4LDcgQEANCiANCiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsNCiANCi0gICAgY2xh
c3MgQ2FudmFzUGF0dGVybiA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc1BhdHRlcm4+IHsNCisg
ICAgY2xhc3MgQ2FudmFzUGF0dGVybiA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc1BhdHRlcm4+
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3Rh
dGljIHZvaWQgcGFyc2VSZXBldGl0aW9uVHlwZShjb25zdCBTdHJpbmcmLCBib29sJiByZXBlYXRY
LCBib29sJiByZXBlYXRZLCBFeGNlcHRpb25Db2RlJik7DQogDQpJbmRleDogV2ViQ29yZS9odG1s
L0NhbnZhc1N0eWxlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzU3R5bGUu
aAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9odG1sL0NhbnZhc1N0eWxlLmgJKHdvcmtp
bmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQogI2RlZmluZSBDYW52YXNTdHlsZV9oDQogDQog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTM0LDcgKzM1LDcgQEANCiAgICAg
Y2xhc3MgQ2FudmFzUGF0dGVybjsNCiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0Ow0KIA0KLSAg
ICBjbGFzcyBDYW52YXNTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc1N0eWxlPiB7DQor
ICAgIGNsYXNzIENhbnZhc1N0eWxlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FudmFzU3R5bGU+LCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoY29sb3IpKTsgfQ0KICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShmbG9hdCBncmF5TGV2ZWwpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShncmF5TGV2ZWwpKTsgfQ0KSW5kZXg6IFdlYkNvcmUv
aHRtbC9GaWxlTGlzdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9odG1sL0ZpbGVMaXN0LmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvaHRtbC9GaWxlTGlzdC5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjcsNiArMjcsNyBAQA0KICNkZWZpbmUgRmlsZUxpc3RfaA0KIA0KICNpbmNsdWRl
ICJGaWxlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4NCkBAIC0zNCw3ICszNSw3IEBADQogDQogbmFtZXNwYWNlIFdlYkNvcmUg
ew0KIA0KLSAgICBjbGFzcyBGaWxlTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVMaXN0PiB7
DQorICAgIGNsYXNzIEZpbGVMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZUxpc3Q+LCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RmlsZUxpc3Q+IGNyZWF0ZSgpDQogICAgICAgICB7DQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUxvYWRlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUxvYWRlci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdl
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNiwxMCArMjYsMTEgQEANCiAjZGVmaW5lIEhU
TUxJbWFnZUxvYWRlcl9oDQogDQogI2luY2x1ZGUgIkltYWdlTG9hZGVyLmgiDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNz
IEhUTUxJbWFnZUxvYWRlciA6IHB1YmxpYyBJbWFnZUxvYWRlciB7DQorY2xhc3MgSFRNTEltYWdl
TG9hZGVyIDogcHVibGljIEltYWdlTG9hZGVyLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiBwdWJsaWM6DQogICAgIEhUTUxJbWFnZUxvYWRlcihFbGVtZW50Kik7DQogICAgIHZpcnR1YWwg
fkhUTUxJbWFnZUxvYWRlcigpOw0KSW5kZXg6IFdlYkNvcmUvaHRtbC9GaWxlLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2h0bWwvRmlsZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3Jl
L2h0bWwvRmlsZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTIgKzI3LDEzIEBADQogI2RlZmlu
ZSBGaWxlX2gNCiANCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCisjaW5jbHVkZSA8d3Rm
L0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotICAgIGNs
YXNzIEZpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlPiB7DQorICAgIGNsYXNzIEZpbGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxGaWxlPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAg
IHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHBhdGgpDQogICAgICAgICB7DQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkocmV2
aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0yMyw2ICsyMyw3IEBADQogI2lmbmRlZiBIVE1MQ29sbGVjdGlvbl9oDQogI2Rl
ZmluZSBIVE1MQ29sbGVjdGlvbl9oDQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+
DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
DQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+DQpAQCAtMzcsNyArMzgsNyBAQA0KIGNsYXNzIE5v
ZGVMaXN0Ow0KIGNsYXNzIFN0cmluZzsNCiANCi1jbGFzcyBIVE1MQ29sbGVjdGlvbiA6IHB1Ymxp
YyBSZWZDb3VudGVkPEhUTUxDb2xsZWN0aW9uPiB7DQorY2xhc3MgSFRNTENvbGxlY3Rpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxIVE1MQ29sbGVjdGlvbj4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KIHB1YmxpYzoNCiAgICAgZW51bSBUeXBlIHsNCiAgICAgICAgIC8vIHVubmFtZWQgY29s
bGVjdGlvbiB0eXBlcyBjYWNoZWQgaW4gdGhlIGRvY3VtZW50DQpAQCAtMTAwLDcgKzEwMSw3IEBA
DQogICAgIC8vIGFuZCBkb2Vzbid0IGNvbnZleSB0aGUgam9iIG9mIHRoaXMgY2xhc3MgKGNhY2hp
bmcgY29sbGVjdGlvbiBzdGF0ZSkuDQogICAgIC8vIFNlY29uZCwgc2luY2UgdGhpcyBpcyBhIG1l
bWJlciBvZiBIVE1MQ29sbGVjdGlvbiwgaXQgZG9lc24ndCBuZWVkICJjb2xsZWN0aW9uIg0KICAg
ICAvLyBpbiBpdHMgbmFtZS4NCi0gICAgc3RydWN0IENvbGxlY3Rpb25JbmZvIHsNCisgICAgc3Ry
dWN0IENvbGxlY3Rpb25JbmZvIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgICAg
ICBDb2xsZWN0aW9uSW5mbygpOw0KICAgICAgICAgQ29sbGVjdGlvbkluZm8oY29uc3QgQ29sbGVj
dGlvbkluZm8mKTsNCiAgICAgICAgIENvbGxlY3Rpb25JbmZvJiBvcGVyYXRvcj0oY29uc3QgQ29s
bGVjdGlvbkluZm8mIG90aGVyKQ0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9DaGFuZ2VWZXJzaW9u
V3JhcHBlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZlcnNpb25X
cmFwcGVyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3RvcmFnZS9DaGFuZ2VWZXJz
aW9uV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsMTAgKzMwLDExIEBADQogDQogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uLmgiDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0K
IA0KLWNsYXNzIENoYW5nZVZlcnNpb25XcmFwcGVyIDogcHVibGljIFNRTFRyYW5zYWN0aW9uV3Jh
cHBlciB7DQorY2xhc3MgQ2hhbmdlVmVyc2lvbldyYXBwZXIgOiBwdWJsaWMgU1FMVHJhbnNhY3Rp
b25XcmFwcGVyLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENoYW5nZVZlcnNpb25XcmFwcGVyPiBjcmVhdGUoY29uc3QgU3RyaW5n
JiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24pIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDaGFuZ2VWZXJzaW9uV3JhcHBlcihvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKSk7IH0NCiAN
CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDYg
KzI5LDcgQEANCiAjZGVmaW5lIERhdGFiYXNlVGhyZWFkX2gNCiANCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+DQogI2luY2x1ZGUgPHd0Zi9NZXNz
YWdlUXVldWUuaD4NCkBAIC00MSw3ICs0Miw3IEBADQogY2xhc3MgRGF0YWJhc2VUYXNrOw0KIGNs
YXNzIERvY3VtZW50Ow0KIA0KLWNsYXNzIERhdGFiYXNlVGhyZWFkIDogcHVibGljIFRocmVhZFNh
ZmVTaGFyZWQ8RGF0YWJhc2VUaHJlYWQ+DQorY2xhc3MgRGF0YWJhc2VUaHJlYWQgOiBwdWJsaWMg
VGhyZWFkU2FmZVNoYXJlZDxEYXRhYmFzZVRocmVhZD4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2UNCiB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFzZVRocmVhZD4g
Y3JlYXRlKERvY3VtZW50KiBkb2MpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhYmFzZVRocmVh
ZChkb2MpKTsgfQ0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5oCShyZXZpc2lv
biAzODMzNCkNCisrKyBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjYsNiArMjYsNyBAQA0KICNpZm5kZWYgTG9jYWxTdG9yYWdlVGFza19oDQog
I2RlZmluZSBMb2NhbFN0b3JhZ2VUYXNrX2gNCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPg0KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+DQpAQCAtMzYsNyArMzcsNyBAQA0KICAg
ICBjbGFzcyBMb2NhbFN0b3JhZ2VBcmVhOw0KICAgICBjbGFzcyBMb2NhbFN0b3JhZ2VUaHJlYWQ7
DQogDQotICAgIGNsYXNzIExvY2FsU3RvcmFnZVRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJl
ZDxMb2NhbFN0b3JhZ2VUYXNrPiB7DQorICAgIGNsYXNzIExvY2FsU3RvcmFnZVRhc2sgOiBwdWJs
aWMgVGhyZWFkU2FmZVNoYXJlZDxMb2NhbFN0b3JhZ2VUYXNrPiwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIGVudW0gVHlwZSB7IFN0b3JhZ2VJbXBv
cnQsIFN0b3JhZ2VTeW5jLCBBcmVhSW1wb3J0LCBBcmVhU3luYywgVGVybWluYXRlVGhyZWFkIH07
DQogDQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zOCw2ICszOCw3IEBADQogI2lu
Y2x1ZGUgIlRpbWVyLmgiDQogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIg0KIA0KKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPg0KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPg0KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+DQpAQCAtNTcsNyAr
NTgsNyBAQA0KICAgICANCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOw0KIA0KLWNsYXNzIERh
dGFiYXNlIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8RGF0YWJhc2U+IHsNCitjbGFzcyBEYXRh
YmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPERhdGFiYXNlPiwgcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZSB7DQogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazsN
CiAgICAgZnJpZW5kIGNsYXNzIFNRTFN0YXRlbWVudDsNCiAgICAgZnJpZW5kIGNsYXNzIFNRTFRy
YW5zYWN0aW9uOw0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaAkocmV2
aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjYsNiArMjYsNyBAQA0KICNpZm5kZWYgTG9jYWxTdG9yYWdlVGhy
ZWFkX2gNCiAjZGVmaW5lIExvY2FsU3RvcmFnZVRocmVhZF9oDQogDQorI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+DQogI2luY2x1ZGUgPHd0
Zi9NZXNzYWdlUXVldWUuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCkBAIC0zNyw3
ICszOCw3IEBADQogICAgIGNsYXNzIExvY2FsU3RvcmFnZUFyZWE7DQogICAgIGNsYXNzIExvY2Fs
U3RvcmFnZVRhc2s7DQogDQotICAgIGNsYXNzIExvY2FsU3RvcmFnZVRocmVhZCA6IHB1YmxpYyBU
aHJlYWRTYWZlU2hhcmVkPExvY2FsU3RvcmFnZVRocmVhZD4gew0KKyAgICBjbGFzcyBMb2NhbFN0
b3JhZ2VUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxMb2NhbFN0b3JhZ2VUaHJlYWQ+
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TG9jYWxTdG9yYWdlVGhyZWFkPiBjcmVhdGUoKTsNCiANCkluZGV4OiBX
ZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlQXJlYS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9zdG9yYWdlL0xvY2FsU3RvcmFnZUFyZWEuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29y
ZS9zdG9yYWdlL0xvY2FsU3RvcmFnZUFyZWEuaAkod29ya2luZyBjb3B5KQ0KQEAgLTM0LDYgKzM0
LDcgQEANCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIg0KICNpbmNsdWRlICJUaW1lci5oIg0KIA0K
KyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
Pg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+DQpAQCAtNDIsNyArNDMsNyBAQA0KICAgICANCiAgICAgY2xhc3MgTG9jYWxTdG9yYWdlOw0K
ICAgICANCi0gICAgY2xhc3MgTG9jYWxTdG9yYWdlQXJlYSA6IHB1YmxpYyBTdG9yYWdlQXJlYSB7
DQorICAgIGNsYXNzIExvY2FsU3RvcmFnZUFyZWEgOiBwdWJsaWMgU3RvcmFnZUFyZWEsIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICB2aXJ0dWFsIH5M
b2NhbFN0b3JhZ2VBcmVhKCk7DQogDQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTEVycm9yLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMRXJyb3IuaAkocmV2aXNpb24gMzgz
MzQpDQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTEVycm9yLmgJKHdvcmtpbmcgY29weSkNCkBAIC0z
MCwxMSArMzAsMTIgQEANCiAjZGVmaW5lIFNRTEVycm9yX2gNCiANCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBTUUxF
cnJvciA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFNRTEVycm9yPiB7DQorY2xhc3MgU1FMRXJy
b3IgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxTUUxFcnJvcj4sIHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1FMRXJyb3I+IGNy
ZWF0ZSh1bnNpZ25lZCBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTUUxFcnJvcihjb2RlLCBtZXNzYWdlKSk7IH0NCiANCkluZGV4OiBXZWJDb3JlL3N0
b3JhZ2UvT3JpZ2luVXNhZ2VSZWNvcmQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3RvcmFn
ZS9PcmlnaW5Vc2FnZVJlY29yZC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3N0b3Jh
Z2UvT3JpZ2luVXNhZ2VSZWNvcmQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMxLDYgKzMxLDcgQEAN
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIg0K
IA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPg0KIA0KQEAgLTM4LDcgKzM5LDcgQEANCiAN
CiAvLyBPYmplY3RzIG9mIHRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgZnJvbSBtdWx0aXBsZSB0aHJl
YWRzIHdpdGggZXh0ZXJuYWwgc3luY2hyb25pemF0aW9uLg0KIC8vIFN0cmluZyBhcmd1bWVudHMg
YXJlIGFsc28gc3VwcG9zZWQgdG8gYmUgZGVlcGx5IGNvcGllZCBieSB0aGUgY2FsbGVyIHdoZW4g
bmVjZXNzYXJ5Lg0KLWNsYXNzIE9yaWdpblVzYWdlUmVjb3JkIHsNCitjbGFzcyBPcmlnaW5Vc2Fn
ZVJlY29yZCA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgT3Jp
Z2luVXNhZ2VSZWNvcmQoKTsNCiANCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlLmgJKHJldmlz
aW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTMxLDYgKzMxLDcgQEANCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlVGhyZWFkLmgi
DQogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPg0KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+DQpAQCAtNDAsNyArNDEsNyBA
QA0KICAgICBjbGFzcyBQYWdlR3JvdXA7DQogICAgIGNsYXNzIFN0b3JhZ2VBcmVhOw0KIA0KLSAg
ICBjbGFzcyBMb2NhbFN0b3JhZ2UgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxMb2NhbFN0b3Jh
Z2U+IHsNCisgICAgY2xhc3MgTG9jYWxTdG9yYWdlIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8
TG9jYWxTdG9yYWdlPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoN
CiAgICAgICAgIH5Mb2NhbFN0b3JhZ2UoKTsNCiANCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvT3Jp
Z2luUXVvdGFNYW5hZ2VyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N0b3JhZ2UvT3JpZ2lu
UXVvdGFNYW5hZ2VyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3RvcmFnZS9Pcmln
aW5RdW90YU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMxLDYgKzMxLDcgQEANCiANCiAj
aW5jbHVkZSAiU3RyaW5nSGFzaC5oIg0KICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIN
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4NCiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPg0KIA0KQEAgLTM5LDcgKzQwLDcgQEANCiBj
bGFzcyBEYXRhYmFzZTsNCiBjbGFzcyBPcmlnaW5Vc2FnZVJlY29yZDsNCiANCi1jbGFzcyBPcmln
aW5RdW90YU1hbmFnZXIgOiBwdWJsaWMgTm9uY29weWFibGUgew0KK2NsYXNzIE9yaWdpblF1b3Rh
TWFuYWdlciA6IHB1YmxpYyBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogcHVibGljOg0KICAgICBPcmlnaW5RdW90YU1hbmFnZXIoKTsNCiANCkluZGV4OiBXZWJDb3Jl
L3N0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlzdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9z
dG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29y
ZS9zdG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDEy
ICsyOSwxMyBAQA0KICNpZm5kZWYgU1FMUmVzdWx0U2V0Um93TGlzdF9oDQogI2RlZmluZSBTUUxS
ZXN1bHRTZXRSb3dMaXN0X2gNCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCINCiANCiBu
YW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgU1FMUmVzdWx0U2V0Um93TGlzdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFNRTFJlc3VsdFNldFJvd0xpc3Q+IHsNCitjbGFzcyBTUUxSZXN1bHRTZXRS
b3dMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U1FMUmVzdWx0U2V0Um93TGlzdD4sIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1FM
UmVzdWx0U2V0Um93TGlzdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFJlc3Vs
dFNldFJvd0xpc3QpOyB9DQogICAgIA0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFw
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5oCShyZXZpc2lv
biAzODMzNCkNCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjksMTMgKzI5LDE0IEBADQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQogI2lu
Y2x1ZGUgIlN0cmluZ0hhc2guaCINCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4N
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4N
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQog
DQotICAgIGNsYXNzIFN0b3JhZ2VNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTWFwPiB7
DQorICAgIGNsYXNzIFN0b3JhZ2VNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTWFwPiwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0b3JhZ2VNYXA+IGNyZWF0ZSgpOw0KIA0KSW5kZXg6IFdlYkNvcmUvc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzUsNiArMzUsNyBAQA0KICNpbmNsdWRl
ICJTUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgiDQogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjay5oIg0KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4NCisjaW5jbHVkZSA8d3RmL0Zh
c3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4NCiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQpAQCAtNjIsNyArNjMsNyBAQA0K
ICAgICB2aXJ0dWFsIFNRTEVycm9yKiBzcWxFcnJvcigpIGNvbnN0ID0gMDsNCiB9Ow0KIA0KLWNs
YXNzIFNRTFRyYW5zYWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8U1FMVHJhbnNhY3Rp
b24+IHsNCitjbGFzcyBTUUxUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFNR
TFRyYW5zYWN0aW9uPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gY3JlYXRlKERhdGFiYXNlKiwgUGFz
c1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25XcmFwcGVyPik7DQogDQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3Vs
dFNldC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldC5oCShy
ZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmgJKHdvcmtp
bmcgY29weSkNCkBAIC0zMCwxMyArMzAsMTQgQEANCiAjZGVmaW5lIFNRTFJlc3VsdFNldF9oDQog
DQogI2luY2x1ZGUgIlNRTFJlc3VsdFNldFJvd0xpc3QuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPg0KIA0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsNCiANCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOw0KIA0KLWNsYXNzIFNRTFJl
c3VsdFNldCA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFNRTFJlc3VsdFNldD4gew0KK2NsYXNz
IFNRTFJlc3VsdFNldCA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFNRTFJlc3VsdFNldD4sIHB1
YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1FMUmVzdWx0U2V0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1FMUmVzdWx0
U2V0KTsgfQ0KIA0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaAkocmV2aXNpb24g
MzgzMzQpDQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMzMsNiArMzMsNyBAQA0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KICNp
bmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIg0KICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiDQorI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+DQog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4NCiANCkBAIC00Nyw3ICs0OCw3IEBADQogc3RydWN0IFNl
Y3VyaXR5T3JpZ2luSGFzaDsNCiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5UcmFpdHM7DQogDQotY2xh
c3MgRGF0YWJhc2VUcmFja2VyIHsNCitjbGFzcyBEYXRhYmFzZVRyYWNrZXIgOiBwdWJsaWMgV1RG
OjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKGNvbnN0IFN0cmluZyYpOw0KICAgICBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCgpIGNvbnN0Ow0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6
ZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZUF1dGhvcml6ZXIu
aAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXpl
ci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjgsNiArMjgsNyBAQA0KICNpZm5kZWYgRGF0YWJhc2VB
dXRob3JpemVyX2gNCiAjZGVmaW5lIERhdGFiYXNlQXV0aG9yaXplcl9oDQogDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4NCiANCkBAIC0zOSw3ICs0MCw3IEBADQogZXh0ZXJuIGNv
bnN0IGludCBTUUxBdXRoSWdub3JlOw0KIGV4dGVybiBjb25zdCBpbnQgU1FMQXV0aERlbnk7DQog
DQotY2xhc3MgRGF0YWJhc2VBdXRob3JpemVyIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8RGF0
YWJhc2VBdXRob3JpemVyPiB7DQorY2xhc3MgRGF0YWJhc2VBdXRob3JpemVyIDogcHVibGljIFRo
cmVhZFNhZmVTaGFyZWQ8RGF0YWJhc2VBdXRob3JpemVyPiwgcHVibGljIFdURjo6RmFzdEFsbG9j
QmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhYmFzZUF1dGhvcml6
ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhYmFzZUF1dGhvcml6ZXIpOyB9
DQogDQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRlbWVudC5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRlbWVudC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBX
ZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNiw2ICsz
Niw3IEBADQogI2luY2x1ZGUgIlNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaCINCiAjaW5jbHVk
ZSAiU1FMVmFsdWUuaCINCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPg0KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+DQpAQCAtNDcsNyArNDgsNyBAQA0KIGNsYXNzIFNRTFRyYW5z
YWN0aW9uOw0KIGNsYXNzIFN0cmluZzsNCiANCi1jbGFzcyBTUUxTdGF0ZW1lbnQgOiBwdWJsaWMg
VGhyZWFkU2FmZVNoYXJlZDxTUUxTdGF0ZW1lbnQ+IHsNCitjbGFzcyBTUUxTdGF0ZW1lbnQgOiBw
dWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxTUUxTdGF0ZW1lbnQ+LCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTFN0YXRlbWVudD4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTUUxWYWx1ZT4mLCBQYXNzUmVmUHRy
PFNRTFN0YXRlbWVudENhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxi
YWNrPik7DQogICAgIA0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRhc2suaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRhc2suaAkocmV2aXNpb24gMzgz
MzQpDQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGFzay5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMzAsNiArMzAsNyBAQA0KIA0KICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiDQogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPg0KQEAgLTQ0LDcgKzQ1LDcgQEANCiBjbGFzcyBTUUxU
cmFuc2FjdGlvbjsNCiBjbGFzcyBWZXJzaW9uQ2hhbmdlQ2FsbGJhY2s7DQogDQotY2xhc3MgRGF0
YWJhc2VUYXNrIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8RGF0YWJhc2VUYXNrPg0KK2NsYXNz
IERhdGFiYXNlVGFzayA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPERhdGFiYXNlVGFzaz4sIHB1
YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UNCiB7DQogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZTsN
CiBwdWJsaWM6DQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC00MCw2ICs0MCw3IEBADQogDQogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPg0KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+DQpAQCAtNjgsOSArNjksOSBAQA0KIHN0cnVj
dCBJbnNwZWN0b3JSZXNvdXJjZTsNCiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7DQogDQotY2xhc3Mg
SW5zcGVjdG9yQ29udHJvbGxlcg0KK2NsYXNzIEluc3BlY3RvckNvbnRyb2xsZXIgOiBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlDQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQ0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lcg0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgLCBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lcg0KICNlbmRpZg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQog
cHVibGljOg0KQEAgLTg4LDcgKzg5LDcgQEANCiAgICAgICAgIFNjcmlwdHNQYW5lbA0KICAgICB9
IFNwZWNpYWxQYW5lbHM7DQogDQotICAgIHN0cnVjdCBTZXR0aW5nIHsNCisgICAgc3RydWN0IFNl
dHRpbmcgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgICAgIGVudW0gVHlwZSB7
DQogICAgICAgICAgICAgTm9UeXBlLCBTdHJpbmdUeXBlLCBTdHJpbmdWZWN0b3JUeXBlLCBEb3Vi
bGVUeXBlLCBJbnRlZ2VyVHlwZSwgQm9vbGVhblR5cGUNCiAgICAgICAgIH07DQpJbmRleDogV2Vi
Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCShyZXZpc2lvbiAzODMzNCkNCisr
KyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0yNyw2ICsyNyw3IEBADQogI2RlZmluZSBKYXZhU2NyaXB0Q2FsbEZyYW1lX2gNCiANCiAj
aW5jbHVkZSA8cnVudGltZS9FeGVjU3RhdGUuaD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4NCiAjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaD4NCkBAIC0z
NSw3ICszNiw3IEBADQogDQogICAgIGNsYXNzIFN0cmluZzsNCiANCi0gICAgY2xhc3MgSmF2YVNj
cmlwdENhbGxGcmFtZSA6IHB1YmxpYyBSZWZDb3VudGVkPEphdmFTY3JpcHRDYWxsRnJhbWU+IHsN
CisgICAgY2xhc3MgSmF2YVNjcmlwdENhbGxGcmFtZSA6IHB1YmxpYyBSZWZDb3VudGVkPEphdmFT
Y3JpcHRDYWxsRnJhbWU+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGlj
Og0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gY3JlYXRl
KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBQYXNzUmVm
UHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IGNhbGxlciwgaW50cHRyX3Qgc291cmNlSUQsIGludCBs
aW5lKQ0KICAgICAgICAgew0KSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNzMsNiArNzMsNyBAQA0KICNp
bmNsdWRlIDxydW50aW1lL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oPg0KICNpbmNsdWRlIDxwcm9m
aWxlci9Qcm9maWxlLmg+DQogI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGVyLmg+DQorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQog
DQogI2lmIEVOQUJMRShEQVRBQkFTRSkNCkBAIC0xNTcsNyArMTU4LDcgQEANCiANCiAvLyBDb25z
b2xlTWVzc2FnZSBTdHJ1Y3QNCiANCi1zdHJ1Y3QgQ29uc29sZU1lc3NhZ2Ugew0KK3N0cnVjdCBD
b25zb2xlTWVzc2FnZSA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VMZXZlbCBsLCBjb25zdCBTdHJpbmcmIG0s
IHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2lnbmVkIGcpDQogICAgICAgICA6IHNv
dXJjZShzKQ0KICAgICAgICAgLCBsZXZlbChsKQ0KQEAgLTIxNSw3ICsyMTYsNyBAQA0KIA0KIC8v
IFhNTEh0dHBSZXF1ZXN0UmVzb3VyY2UgQ2xhc3MNCiANCi1zdHJ1Y3QgWE1MSHR0cFJlcXVlc3RS
ZXNvdXJjZSB7DQorc3RydWN0IFhNTEh0dHBSZXF1ZXN0UmVzb3VyY2UgOiBwdWJsaWMgV1RGOjpG
YXN0QWxsb2NCYXNlIHsNCiAgICAgWE1MSHR0cFJlcXVlc3RSZXNvdXJjZShKU0M6OlVTdHJpbmcm
IHNvdXJjZVN0cmluZykNCiAgICAgew0KICAgICAgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7
DQpAQCAtMjMzLDcgKzIzNCw3IEBADQogDQogLy8gSW5zcGVjdG9yUmVzb3VyY2UgU3RydWN0DQog
DQotc3RydWN0IEluc3BlY3RvclJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9y
UmVzb3VyY2U+IHsNCitzdHJ1Y3QgSW5zcGVjdG9yUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJbnNwZWN0b3JSZXNvdXJjZT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAv
LyBLZWVwIHRoZXNlIGluIHN5bmMgd2l0aCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZQ0KICAg
ICBlbnVtIFR5cGUgew0KICAgICAgICAgRG9jLA0KQEAgLTM4MCw3ICszODEsNyBAQA0KIC8vIElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UgU3RydWN0DQogDQogI2lmIEVOQUJMRShEQVRBQkFTRSkN
Ci1zdHJ1Y3QgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2U+IHsNCitzdHJ1Y3QgSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U+LCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZT4gY3JlYXRlKERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5n
JiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQ0KICAg
ICB7DQogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2UoZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lvbikpOw0KSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsNiArMzAsNyBAQA0KICNpbmNsdWRl
ICJSZW5kZXJTdHlsZS5oIg0KICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIg0KICNpbmNsdWRlICJW
aXNpYmxlUG9zaXRpb24uaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQpAQCAtODA1LDcg
KzgwNiw3IEBADQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludFNlbGVjdGlvbkdhcHMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQ0KIA0KICAgICAvLyBUaGlzIHN0cnVjdCBpcyB1c2VkIHdo
ZW4gdGhlIHNlbGVjdGlvbiBjaGFuZ2VzIHRvIGNhY2hlIHRoZSBvbGQgYW5kIG5ldyBzdGF0ZSBv
ZiB0aGUgc2VsZWN0aW9uIGZvciBlYWNoIFJlbmRlck9iamVjdC4NCi0gICAgc3RydWN0IFNlbGVj
dGlvbkluZm8gew0KKyAgICBzdHJ1Y3QgU2VsZWN0aW9uSW5mbyA6IHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KICAgICAgICAgU2VsZWN0aW9uSW5mbygpDQogICAgICAgICAgICAgOiBtX29i
amVjdCgwKQ0KICAgICAgICAgICAgICwgbV9zdGF0ZShTZWxlY3Rpb25Ob25lKQ0KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckFyZW5hLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJBcmVuYS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJBcmVuYS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzYsMTIgKzM2LDEzIEBADQog
I2RlZmluZSBSZW5kZXJBcmVuYV9oDQogDQogI2luY2x1ZGUgIkFyZW5hLmgiDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KIHN0YXRp
YyBjb25zdCBzaXplX3QgZ01heFJlY3ljbGVkU2l6ZSA9IDQwMDsNCiANCi1jbGFzcyBSZW5kZXJB
cmVuYSB7DQorY2xhc3MgUmVuZGVyQXJlbmEgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiBwdWJsaWM6DQogICAgIFJlbmRlckFyZW5hKHVuc2lnbmVkIGFyZW5hU2l6ZSA9IDQwOTYpOw0K
ICAgICB+UmVuZGVyQXJlbmEoKTsNCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxl
TGF5b3V0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5
b3V0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVM
YXlvdXQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI1LDEzICsyNSwxNCBAQA0KIA0KICNpbmNsdWRl
ICJMZW5ndGguaCINCiAjaW5jbHVkZSAiVGFibGVMYXlvdXQuaCINCisjaW5jbHVkZSA8d3RmL0Zh
c3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KIA0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsNCiANCiBjbGFzcyBSZW5kZXJUYWJsZTsNCiANCi1jbGFzcyBGaXhlZFRhYmxlTGF5
b3V0IDogcHVibGljIFRhYmxlTGF5b3V0IHsNCitjbGFzcyBGaXhlZFRhYmxlTGF5b3V0IDogcHVi
bGljIFRhYmxlTGF5b3V0LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQog
ICAgIEZpeGVkVGFibGVMYXlvdXQoUmVuZGVyVGFibGUqKTsNCiANCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTM3LDYgKzM3LDcgQEANCiAjaW5j
bHVkZSAiUGFnZS5oIg0KICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiDQogI2luY2x1ZGUgIlN5c3Rl
bVRpbWUuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOw0KIA0KQEAgLTQ1LDcgKzQ2LDcgQEANCiBzdGF0aWMgY29uc3QgZG91YmxlIGNJ
bnRlcnBvbGF0aW9uQ3V0b2ZmID0gODAwLiAqIDgwMC47DQogc3RhdGljIGNvbnN0IGRvdWJsZSBj
TG93UXVhbGl0eVRpbWVUaHJlc2hvbGQgPSAwLjA1MDsgLy8gNTAgbXMNCiANCi1jbGFzcyBSZW5k
ZXJJbWFnZVNjYWxlRGF0YSB7DQorY2xhc3MgUmVuZGVySW1hZ2VTY2FsZURhdGEgOiBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIFJlbmRlckltYWdlU2NhbGVEYXRh
KFJlbmRlckltYWdlKiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgZG91YmxlIHRpbWUsIGJv
b2wgbG93UXVhbGl0eVNjYWxlKQ0KICAgICAgICAgOiBtX3NpemUoc2l6ZSkNCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9iaWRpLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3JlbmRlcmluZy9i
aWRpLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTI1LDYgKzI1LDcgQEANCiAjZGVmaW5lIGJpZGlfaA0KIA0KICNpbmNs
dWRlICJCaWRpUmVzb2x2ZXIuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAN
CiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQpAQCAtMzMsNyArMzQsNyBAQA0KIGNsYXNzIFJlbmRl
ck9iamVjdDsNCiBjbGFzcyBJbmxpbmVCb3g7DQogDQotc3RydWN0IEJpZGlSdW4gOiBCaWRpQ2hh
cmFjdGVyUnVuIHsNCitzdHJ1Y3QgQmlkaVJ1biA6IEJpZGlDaGFyYWN0ZXJSdW4sIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBCaWRpUnVuKGludCBzdGFydCwgaW50IHN0b3AsIFJl
bmRlck9iamVjdCogb2JqZWN0LCBCaWRpQ29udGV4dCogY29udGV4dCwgV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gZGlyKQ0KICAgICAgICAgOiBCaWRpQ2hhcmFjdGVyUnVuKHN0YXJ0LCBzdG9wLCBj
b250ZXh0LCBkaXIpDQogICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkNCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTM5LDYgKzM5LDcgQEANCiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCINCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIg0KICNpbmNs
dWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogDQogdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCiB1c2luZyBuYW1lc3BhY2UgV1RGOw0KQEAg
LTUyLDcgKzUzLDcgQEANCiANCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOw0KIA0KLXN0cnVj
dCBDb2x1bW5JbmZvIHsNCitzdHJ1Y3QgQ29sdW1uSW5mbyA6IHB1YmxpYyBXVEY6OkZhc3RBbGxv
Y0Jhc2Ugew0KICAgICBDb2x1bW5JbmZvKCkNCiAgICAgICAgIDogbV9kZXNpcmVkQ29sdW1uV2lk
dGgoMCkNCiAgICAgICAgICwgbV9kZXNpcmVkQ29sdW1uQ291bnQoMSkNCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1Jvb3RJbmxpbmVCb3guaAkod29ya2luZyBjb3B5KQ0KQEAgLTI1LDYgKzI1LDcgQEANCiAN
CiAjaW5jbHVkZSAiQmlkaUNvbnRleHQuaCINCiAjaW5jbHVkZSAiSW5saW5lRmxvd0JveC5oIg0K
KyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsN
CiANCkBAIC0xMzUsNyArMTM2LDcgQEANCiAgICAgLy8gYmVsb3cgb3VyIGxpbmUgKGUuZy4sIGEg
Y2hpbGQgd2hvc2UgZm9udCBoYXMgYSBodWdlIGRlc2NlbnQpLg0KICAgICAgICAgDQogICAgIC8v
IEFsbG9jYXRlZCBvbmx5IHdoZW4gc29tZSBvZiB0aGVzZSBmaWVsZHMgaGF2ZSBub24tZGVmYXVs
dCB2YWx1ZXMNCi0gICAgc3RydWN0IE92ZXJmbG93IHsNCisgICAgc3RydWN0IE92ZXJmbG93IDog
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgICAgICBPdmVyZmxvdyhSb290SW5saW5l
Qm94KiBib3gpIA0KICAgICAgICAgICAgIDogbV90b3BPdmVyZmxvdyhib3gtPm1feSkNCiAgICAg
ICAgICAgICAsIG1fYm90dG9tT3ZlcmZsb3coYm94LT5tX3kgKyBib3gtPm1faGVpZ2h0KQ0KSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsNiArMzAsNyBA
QA0KICNpbmNsdWRlICJSZW5kZXJGbG93LmgiDQogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIN
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTI0Myw3ICsyNDQsNyBAQA0K
ICAgICB2aXJ0dWFsIFNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8U2VsZWN0aW9uU3RhdGU+KG1fc2VsZWN0aW9uU3RhdGUpOyB9DQogICAg
IHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSBzKTsNCiANCi0g
ICAgc3RydWN0IEJsb2NrU2VsZWN0aW9uSW5mbyB7DQorICAgIHN0cnVjdCBCbG9ja1NlbGVjdGlv
bkluZm8gOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgICAgIFJlbmRlckJsb2Nr
KiBtX2Jsb2NrOw0KICAgICAgICAgR2FwUmVjdHMgbV9yZWN0czsNCiAgICAgICAgIFNlbGVjdGlv
blN0YXRlIG1fc3RhdGU7DQpAQCAtMzI3LDcgKzMyOCw3IEBADQogICAgIGludCBsYXlvdXRDb2x1
bW5zKGludCBlbmRPZkNvbnRlbnQgPSAtMSk7DQogDQogcHJvdGVjdGVkOg0KLSAgICBzdHJ1Y3Qg
RmxvYXRpbmdPYmplY3Qgew0KKyAgICBzdHJ1Y3QgRmxvYXRpbmdPYmplY3QgOiBwdWJsaWMgV1RG
OjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgICAgIGVudW0gVHlwZSB7DQogICAgICAgICAgICAgRmxv
YXRMZWZ0LA0KICAgICAgICAgICAgIEZsb2F0UmlnaHQNCkBAIC00NjQsNyArNDY1LDcgQEANCiAg
ICAgTGlzdEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4qIG1fcG9zaXRpb25lZE9iamVjdHM7DQogICAg
ICAgICAgDQogICAgIC8vIEFsbG9jYXRlZCBvbmx5IHdoZW4gc29tZSBvZiB0aGVzZSBmaWVsZHMg
aGF2ZSBub24tZGVmYXVsdCB2YWx1ZXMNCi0gICAgc3RydWN0IE1heE1hcmdpbiB7DQorICAgIHN0
cnVjdCBNYXhNYXJnaW4gOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgICAgIE1h
eE1hcmdpbihjb25zdCBSZW5kZXJCbG9jayogbykgDQogICAgICAgICAgICAgOiBtX3RvcFBvcyh0
b3BQb3NEZWZhdWx0KG8pKQ0KICAgICAgICAgICAgICwgbV90b3BOZWcodG9wTmVnRGVmYXVsdChv
KSkNCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5oCShyZXZpc2lvbiAzODMz
NCkNCisrKyBXZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTI1LDYgKzI1LDcgQEANCiANCiAjaW5jbHVkZSAiTGVuZ3RoLmgiDQogI2luY2x1ZGUg
IlRhYmxlTGF5b3V0LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQpAQCAtMzIsNyArMzMs
NyBAQA0KIGNsYXNzIFJlbmRlclRhYmxlOw0KIGNsYXNzIFJlbmRlclRhYmxlQ2VsbDsNCiANCi1j
bGFzcyBBdXRvVGFibGVMYXlvdXQgOiBwdWJsaWMgVGFibGVMYXlvdXQgew0KK2NsYXNzIEF1dG9U
YWJsZUxheW91dCA6IHB1YmxpYyBUYWJsZUxheW91dCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogcHVibGljOg0KICAgICBBdXRvVGFibGVMYXlvdXQoUmVuZGVyVGFibGUqKTsNCiAgICAg
fkF1dG9UYWJsZUxheW91dCgpOw0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2Rl
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjMsNiArMjMsNyBAQA0KICNkZWZpbmUgQ291bnRlck5vZGVfaA0KIA0KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4NCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2Uu
aD4NCiANCiAvLyBUaGlzIGltcGxlbWVudHMgYSBjb3VudGVyIHRyZWUgdGhhdCBpcyB1c2VkIGZv
ciBmaW5kaW5nIHBhcmVudHMgaW4gY291bnRlcnMoKSBsb29rdXAsDQogLy8gYW5kIGZvciBwcm9w
YWdhdGluZyBjb3VudCBjaGFuZ2VzIHdoZW4gbm9kZXMgYXJlIGFkZGVkIG9yIHJlbW92ZWQuDQpA
QCAtMzcsNyArMzgsNyBAQA0KIA0KIGNsYXNzIFJlbmRlck9iamVjdDsNCiANCi1jbGFzcyBDb3Vu
dGVyTm9kZSA6IE5vbmNvcHlhYmxlIHsNCitjbGFzcyBDb3VudGVyTm9kZSA6IE5vbmNvcHlhYmxl
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIENvdW50ZXJOb2Rl
KFJlbmRlck9iamVjdCosIGJvb2wgaXNSZXNldCwgaW50IHZhbHVlKTsNCiANCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNYXJxdWVlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1hcnF1ZWUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTQ2LDEzICs0NiwxNCBA
QA0KIA0KICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIg0KICNpbmNsdWRlICJUaW1lci5oIg0KKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiAN
CiBjbGFzcyBSZW5kZXJMYXllcjsNCiANCiAvLyBUaGlzIGNsYXNzIGhhbmRsZXMgdGhlIGF1dG8t
c2Nyb2xsaW5nIG9mIGxheWVycyB3aXRoIG92ZXJmbG93OiBtYXJxdWVlLg0KLWNsYXNzIFJlbmRl
ck1hcnF1ZWUgew0KK2NsYXNzIFJlbmRlck1hcnF1ZWUgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NC
YXNlIHsNCiBwdWJsaWM6DQogICAgIFJlbmRlck1hcnF1ZWUoUmVuZGVyTGF5ZXIqKTsNCiANCklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTQ3LDYgKzQ3LDcg
QEANCiAjaW5jbHVkZSAiU2Nyb2xsYmFyQ2xpZW50LmgiDQogI2luY2x1ZGUgIlJlbmRlck9iamVj
dC5oIg0KICNpbmNsdWRlICJUaW1lci5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
Pg0KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KQEAg
LTY3LDcgKzY4LDcgQEANCiANCiBzdHJ1Y3QgSGl0VGVzdFJlcXVlc3Q7DQogDQotY2xhc3MgQ2xp
cFJlY3RzIHsNCitjbGFzcyBDbGlwUmVjdHMgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiBwdWJsaWM6DQogICAgIENsaXBSZWN0cyhjb25zdCBJbnRSZWN0JiByKQ0KICAgICAgICAgOiBt
X292ZXJmbG93Q2xpcFJlY3QocikNCkBAIC0xMTUsNyArMTE2LDcgQEANCiAgICAgYm9vbCBtX2Zp
eGVkIDogMTsNCiB9Ow0KIA0KLWNsYXNzIFJlbmRlckxheWVyIDogcHVibGljIFNjcm9sbGJhckNs
aWVudCB7DQorY2xhc3MgUmVuZGVyTGF5ZXIgOiBwdWJsaWMgU2Nyb2xsYmFyQ2xpZW50LCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIGVudW0gU2Nyb2xsQmVoYXZp
b3Igew0KICAgICAgICAgbm9TY3JvbGwsDQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0
U3RhdGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmgJKHdv
cmtpbmcgY29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogDQogI2luY2x1ZGUgIkludFJlY3QuaCIN
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQpA
QCAtMzYsNyArMzcsNyBAQA0KIGNsYXNzIFJlbmRlckJveDsNCiBjbGFzcyBSZW5kZXJPYmplY3Q7
DQogDQotY2xhc3MgTGF5b3V0U3RhdGUgOiBOb25jb3B5YWJsZSB7DQorY2xhc3MgTGF5b3V0U3Rh
dGUgOiBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0K
ICAgICBMYXlvdXRTdGF0ZSgpDQogICAgICAgICA6IG1fY2xpcHBlZChmYWxzZSkNCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgJKHJldmlz
aW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERh
dGEuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI4LDEyICsyOCwxMyBAQA0KICNpbmNsdWRlICJDb2xv
ci5oIg0KICNpbmNsdWRlICJGaWxsTGF5ZXIuaCINCiAjaW5jbHVkZSAiT3V0bGluZVZhbHVlLmgi
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogDQogbmFtZXNwYWNlIFdlYkNv
cmUgew0KIA0KLWNsYXNzIFN0eWxlQmFja2dyb3VuZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxT
dHlsZUJhY2tncm91bmREYXRhPiB7DQorY2xhc3MgU3R5bGVCYWNrZ3JvdW5kRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0eWxlQmFja2dyb3VuZERhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NC
YXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlQmFja2dyb3VuZERh
dGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZUJhY2tncm91bmREYXRhKTsg
fQ0KICAgICBQYXNzUmVmUHRyPFN0eWxlQmFja2dyb3VuZERhdGE+IGNvcHkoKSBjb25zdCB7IHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVCYWNrZ3JvdW5kRGF0YSgqdGhpcykpOyB9DQpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b24uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNiwxMCArMjYsMTEgQEAN
CiAjZGVmaW5lIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbl9oDQogDQogI2luY2x1ZGUgIlRyYW5z
Zm9ybU9wZXJhdGlvbi5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24gOiBw
dWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsNCitjbGFzcyBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b24gOiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNl
IHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbj4gY3JlYXRlKGRvdWJsZSBhbmdsZSwgT3BlcmF0aW9uVHlwZSB0eXBlKQ0KICAgICB7DQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCw2ICsz
MCw3IEBADQogI2luY2x1ZGUgIkRhdGFSZWYuaCINCiAjaW5jbHVkZSAiRmlsbExheWVyLmgiDQog
I2luY2x1ZGUgIk5pbmVQaWVjZUltYWdlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KQEAgLTU3LDcgKzU4LDcgQEANCiAvLyBUaGlz
IHN0cnVjdCBpcyBmb3IgcmFyZWx5IHVzZWQgbm9uLWluaGVyaXRlZCBDU1MzLCBDU1MyLCBhbmQg
V2ViS2l0LXNwZWNpZmljIHByb3BlcnRpZXMuDQogLy8gQnkgZ3JvdXBpbmcgdGhlbSB0b2dldGhl
ciwgd2Ugc2F2ZSBzcGFjZSwgYW5kIG9ubHkgYWxsb2NhdGUgdGhpcyBvYmplY3Qgd2hlbiBzb21l
b25lDQogLy8gYWN0dWFsbHkgdXNlcyBvbmUgb2YgdGhlc2UgcHJvcGVydGllcy4NCi1jbGFzcyBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YT4gew0KK2NsYXNzIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEgOiBwdWJs
aWMgUmVmQ291bnRlZDxTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhPiwgcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YSk7IH0NCiAgICAgUGFzc1JlZlB0cjxTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEoKnRoaXMpKTsgfQ0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlVmlzdWFsRGF0YS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVWaXN1YWxEYXRhLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsMTIgKzI2LDEz
IEBADQogI2RlZmluZSBTdHlsZVZpc3VhbERhdGFfaA0KIA0KICNpbmNsdWRlICJMZW5ndGhCb3gu
aCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiANCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7DQogDQotY2xhc3MgU3R5bGVWaXN1YWxEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5
bGVWaXN1YWxEYXRhPiB7DQorY2xhc3MgU3R5bGVWaXN1YWxEYXRhIDogcHVibGljIFJlZkNvdW50
ZWQ8U3R5bGVWaXN1YWxEYXRhPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGlj
Og0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVZpc3VhbERhdGE+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVZpc3VhbERhdGEpOyB9DQogICAgIFBhc3NSZWZQdHI8U3R5
bGVWaXN1YWxEYXRhPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlVmlz
dWFsRGF0YSgqdGhpcykpOyB9DQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVG
bGV4aWJsZUJveERhdGEuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlRmxleGlibGVCb3hEYXRhLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
NSwxMiArMjUsMTMgQEANCiAjaWZuZGVmIFN0eWxlRmxleGlibGVCb3hEYXRhX2gNCiAjZGVmaW5l
IFN0eWxlRmxleGlibGVCb3hEYXRhX2gNCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2Uu
aD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgU3R5bGVGbGV4aWJsZUJv
eERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUZsZXhpYmxlQm94RGF0YT4gew0KK2NsYXNz
IFN0eWxlRmxleGlibGVCb3hEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVGbGV4aWJsZUJv
eERhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0eWxlRmxleGlibGVCb3hEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgU3R5bGVGbGV4aWJsZUJveERhdGEpOyB9DQogICAgIFBhc3NSZWZQdHI8U3R5bGVG
bGV4aWJsZUJveERhdGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVG
bGV4aWJsZUJveERhdGEoKnRoaXMpKTsgfQ0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NoYWRvd0RhdGEuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1No
YWRvd0RhdGEuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsMTIgKzI2LDEzIEBADQogI2RlZmlu
ZSBTaGFkb3dEYXRhX2gNCiANCiAjaW5jbHVkZSAiQ29sb3IuaCINCisjaW5jbHVkZSA8d3RmL0Zh
c3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogLy8gVGhpcyBzdHJ1
Y3QgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgc2hhZG93cyBmb3IgdGhlIHRleHQtc2hhZG93IGFu
ZCBib3gtc2hhZG93IHByb3BlcnRpZXMuDQogDQotc3RydWN0IFNoYWRvd0RhdGEgew0KK3N0cnVj
dCBTaGFkb3dEYXRhIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIFNoYWRvd0Rh
dGEoKQ0KICAgICAgICAgOiB4KDApDQogICAgICAgICAsIHkoMCkNCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaAkocmV2aXNpb24gMzgzMzQpDQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTI4LDYgKzI4LDcgQEANCiAjaW5jbHVkZSAiQm9yZGVyVmFsdWUuaCINCiAjaW5j
bHVkZSAiTGVuZ3RoLmgiDQogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiDQorI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogDQpAQCAtMzUsNyArMzYsNyBAQA0KIA0K
IC8vIENTUzMgTXVsdGkgQ29sdW1uIExheW91dA0KIA0KLWNsYXNzIFN0eWxlTXVsdGlDb2xEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVNdWx0aUNvbERhdGE+IHsNCitjbGFzcyBTdHlsZU11
bHRpQ29sRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlTXVsdGlDb2xEYXRhPiwgcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHlsZU11bHRpQ29sRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlTXVs
dGlDb2xEYXRhKTsgfQ0KICAgICBQYXNzUmVmUHRyPFN0eWxlTXVsdGlDb2xEYXRhPiBjb3B5KCkg
Y29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlTXVsdGlDb2xEYXRhKCp0aGlzKSk7IH0N
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlv
bi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvSWRlbnRpdHlUcmFu
c2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2
LDEwICsyNiwxMSBAQA0KICNkZWZpbmUgSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb25faA0KIA0K
ICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb24uaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxv
Y0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgSWRlbnRpdHlUcmFu
c2Zvcm1PcGVyYXRpb24gOiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsNCitjbGFzcyBJZGVu
dGl0eVRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24sIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZSgpDQogICAgIHsNCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rpb24uaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmVmbGVjdGlvbi5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rpb24uaAkod29ya2luZyBj
b3B5KQ0KQEAgLTI4LDExICsyOCwxMiBAQA0KICNpbmNsdWRlICJDU1NSZWZsZWN0aW9uRGlyZWN0
aW9uLmgiDQogI2luY2x1ZGUgIkxlbmd0aC5oIg0KICNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5o
Ig0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBTdHlsZVJlZmxlY3Rp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVJlZmxlY3Rpb24+IHsNCitjbGFzcyBTdHlsZVJl
ZmxlY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVJlZmxlY3Rpb24+LCBwdWJsaWMgV1RG
OjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxl
UmVmbGVjdGlvbj4gY3JlYXRlKCkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0FuaW1hdGlvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
QW5pbWF0aW9uLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0FuaW1hdGlvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTIgKzI3LDEzIEBADQogDQogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQogI2luY2x1ZGUgIlRpbWluZ0Z1bmN0aW9uLmgiDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUg
ew0KIA0KLWNsYXNzIEFuaW1hdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvbj4gew0K
K2NsYXNzIEFuaW1hdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvbj4sIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgfkFuaW1hdGlvbigpOw0KIA0KSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NrZXdUcmFuc2Zvcm1PcGVyYXRp
b24uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2tld1Ry
YW5zZm9ybU9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsMTAgKzI2LDExIEBADQog
I2RlZmluZSBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uX2gNCiANCiAjaW5jbHVkZSAiVHJhbnNmb3Jt
T3BlcmF0aW9uLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNw
YWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24gOiBwdWJsaWMg
VHJhbnNmb3JtT3BlcmF0aW9uIHsNCitjbGFzcyBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uIDogcHVi
bGljIFRyYW5zZm9ybU9wZXJhdGlvbiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVi
bGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTa2V3VHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVh
dGUoZG91YmxlIGFuZ2xlWCwgZG91YmxlIGFuZ2xlWSwgT3BlcmF0aW9uVHlwZSB0eXBlKQ0KICAg
ICB7DQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERh
dGEuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJ
bmhlcml0ZWREYXRhLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogI2luY2x1
ZGUgIkNvbG9yLmgiDQogI2luY2x1ZGUgIkZvbnQuaCINCiAjaW5jbHVkZSAiTGVuZ3RoLmgiDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4NCkBAIC0zNyw3ICszOCw3IEBADQogY2xhc3MgU3R5bGVJbWFnZTsNCiBjbGFzcyBDdXJzb3JM
aXN0Ow0KIA0KLWNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
eWxlSW5oZXJpdGVkRGF0YT4gew0KK2NsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFN0eWxlSW5oZXJpdGVkRGF0YT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ug
ew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVJbmhlcml0ZWREYXRhPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVJbmhlcml0ZWREYXRhKTsgfQ0KICAg
ICBQYXNzUmVmUHRyPFN0eWxlSW5oZXJpdGVkRGF0YT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTdHlsZUluaGVyaXRlZERhdGEoKnRoaXMpKTsgfQ0KSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gMzgzMzQpDQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjYsMTIgKzI2LDEzIEBADQogDQogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFu
ZGxlLmgiDQogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxv
Y0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogY2xhc3MgQ2FjaGVkSW1hZ2U7
DQogDQotY2xhc3MgU3R5bGVDYWNoZWRJbWFnZSA6IHB1YmxpYyBTdHlsZUltYWdlIHsNCitjbGFz
cyBTdHlsZUNhY2hlZEltYWdlIDogcHVibGljIFN0eWxlSW1hZ2UsIHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2UgIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlQ2FjaGVk
SW1hZ2U+IGNyZWF0ZShDYWNoZWRJbWFnZSogaW1hZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dHlsZUNhY2hlZEltYWdlKGltYWdlKSk7IH0NCiAgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIg
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0NCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuaAkocmV2aXNpb24gMzgzMzQpDQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTI3LDEyICsyNywxMyBAQA0KIA0KICNpbmNsdWRlICJCb3JkZXJEYXRhLmgiDQog
I2luY2x1ZGUgIkxlbmd0aEJveC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
Pg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBTdHlsZVN1cnJvdW5kRGF0YSA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU3Vycm91bmREYXRhPiB7DQorY2xhc3MgU3R5bGVTdXJy
b3VuZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVN1cnJvdW5kRGF0YT4sIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5
bGVTdXJyb3VuZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVN1cnJv
dW5kRGF0YSk7IH0NCiAgICAgUGFzc1JlZlB0cjxTdHlsZVN1cnJvdW5kRGF0YT4gY29weSgpIGNv
bnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVN1cnJvdW5kRGF0YSgqdGhpcykpOyB9DQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQog
DQogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIg0KICNpbmNsdWRlICJDb2xvci5oIg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KIA0KQEAgLTM3LDcgKzM4LDcgQEANCiAvLyBU
aGlzIHN0cnVjdCBpcyBmb3IgcmFyZWx5IHVzZWQgaW5oZXJpdGVkIENTUzMsIENTUzIsIGFuZCBX
ZWJLaXQtc3BlY2lmaWMgcHJvcGVydGllcy4NCiAvLyBCeSBncm91cGluZyB0aGVtIHRvZ2V0aGVy
LCB3ZSBzYXZlIHNwYWNlLCBhbmQgb25seSBhbGxvY2F0ZSB0aGlzIG9iamVjdCB3aGVuIHNvbWVv
bmUNCiAvLyBhY3R1YWxseSB1c2VzIG9uZSBvZiB0aGVzZSBwcm9wZXJ0aWVzLg0KLWNsYXNzIFN0
eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVJhcmVJbmhlcml0
ZWREYXRhPiB7DQorY2xhc3MgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVJhcmVJbmhlcml0ZWREYXRhKTsg
fQ0KICAgICBQYXNzUmVmUHRyPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IGNvcHkoKSBjb25zdCB7
IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgqdGhpcykpOyB9DQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuaAkocmV2aXNpb24gMzgz
MzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0yNiwxMiArMjYsMTMgQEANCiAjZGVmaW5lIFN0eWxlQm94RGF0YV9oDQogDQog
I2luY2x1ZGUgIkxlbmd0aC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0K
IA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBTdHlsZUJveERhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxTdHlsZUJveERhdGE+IHsNCitjbGFzcyBTdHlsZUJveERhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxTdHlsZUJveERhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBw
dWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlQm94RGF0YT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlQm94RGF0YSk7IH0NCiAgICAgUGFzc1JlZlB0cjxTdHls
ZUJveERhdGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVCb3hEYXRh
KCp0aGlzKSk7IH0NCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAko
cmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
aAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2LDcgQEANCiAjZGVmaW5lIENvbnRlbnREYXRh
X2gNCiANCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCINCisjaW5jbHVkZSA8d3Rm
L0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+DQogDQogbmFt
ZXNwYWNlIFdlYkNvcmUgew0KQEAgLTM0LDcgKzM1LDcgQEANCiBjbGFzcyBTdHJpbmdJbXBsOw0K
IGNsYXNzIFN0eWxlSW1hZ2U7DQogDQotc3RydWN0IENvbnRlbnREYXRhIDogTm9uY29weWFibGUg
ew0KK3N0cnVjdCBDb250ZW50RGF0YSA6IE5vbmNvcHlhYmxlLCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgQ29udGVudERhdGEoKQ0KICAgICAgICAgOiBtX3R5cGUoQ09OVEVOVF9O
T05FKQ0KICAgICAgICAgLCBtX25leHQoMCkNCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9DdXJzb3JMaXN0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
dXJzb3JMaXN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0N1cnNvckxpc3QuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDEyICsyNiwxMyBAQA0KICNkZWZp
bmUgQ3Vyc29yTGlzdF9oDQogDQogI2luY2x1ZGUgIkN1cnNvckRhdGEuaCINCisjaW5jbHVkZSA8
d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBD
dXJzb3JMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8Q3Vyc29yTGlzdD4gew0KK2NsYXNzIEN1cnNv
ckxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXJzb3JMaXN0PiwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXJzb3JMaXN0PiBj
cmVhdGUoKQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gMzgzMzQpDQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHdv
cmtpbmcgY29weSkNCkBAIC0yNywxMCArMjcsMTEgQEANCiANCiAjaW5jbHVkZSAiTGVuZ3RoLmgi
DQogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbi5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFs
bG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24gOiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsNCitjbGFzcyBU
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24gOiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uLCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IExlbmd0aCYgdHgs
IGNvbnN0IExlbmd0aCYgdHksIE9wZXJhdGlvblR5cGUgdHlwZSkNCiAgICAgew0KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMzEsNiArMzEsNyBAQA0KICNpbmNsdWRlICJTVkdQYWludC5oIg0KICNpbmNsdWRl
ICJTVkdSZW5kZXJTdHlsZURlZnMuaCINCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2Uu
aD4NCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0K
QEAgLTM4LDcgKzM5LDcgQEANCiAgICAgY2xhc3MgUmVuZGVyT2JqZWN0Ow0KICAgICBjbGFzcyBS
ZW5kZXJTdHlsZTsNCiANCi0gICAgY2xhc3MgU1ZHUmVuZGVyU3R5bGUgOiBwdWJsaWMgUmVmQ291
bnRlZDxTVkdSZW5kZXJTdHlsZT4geyAgICANCisgICAgY2xhc3MgU1ZHUmVuZGVyU3R5bGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxTVkdSZW5kZXJTdHlsZT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdSZW5kZXJT
dHlsZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1JlbmRlclN0eWxlKTsgfQ0K
ICAgICAgICAgUGFzc1JlZlB0cjxTVkdSZW5kZXJTdHlsZT4gY29weSgpIGNvbnN0IHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTVkdSZW5kZXJTdHlsZSgqdGhpcykpO30NCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9NYXRyaXhUcmFuc2Zvcm1P
cGVyYXRpb24uaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDEwICsyNiwxMSBAQA0KICNkZWZpbmUg
TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uX2gNCiANCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0
aW9uLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdl
YkNvcmUgew0KIA0KLWNsYXNzIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUcmFu
c2Zvcm1PcGVyYXRpb24gew0KK2NsYXNzIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1Ymxp
YyBUcmFuc2Zvcm1PcGVyYXRpb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1Ymxp
YzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVh
dGUoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3Vi
bGUgZikNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0
eWxlRGVmcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVu
ZGVyU3R5bGVEZWZzLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzMsNiArMzMsNyBA
QA0KICNpbmNsdWRlICJDb2xvci5oIg0KICNpbmNsdWRlICJQYXRoLmgiDQogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCiANCkBAIC0x
MjksNyArMTMwLDcgQEANCiAgICAgY2xhc3MgU1ZHUGFpbnQ7DQogDQogICAgIC8vIEluaGVyaXRl
ZC9Ob24tSW5oZXJpdGVkIFN0eWxlIERhdGFzdHJ1Y3R1cmVzDQotICAgIGNsYXNzIFN0eWxlRmls
bERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUZpbGxEYXRhPiB7DQorICAgIGNsYXNzIFN0
eWxlRmlsbERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUZpbGxEYXRhPiwgcHVibGljIFdU
Rjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0eWxlRmlsbERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZUZp
bGxEYXRhKTsgfQ0KICAgICAgICAgUGFzc1JlZlB0cjxTdHlsZUZpbGxEYXRhPiBjb3B5KCkgY29u
c3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlRmlsbERhdGEoKnRoaXMpKTsgfQ0KQEAgLTE0
OCw3ICsxNDksNyBAQA0KICAgICAgICAgU3R5bGVGaWxsRGF0YShjb25zdCBTdHlsZUZpbGxEYXRh
Jik7DQogICAgIH07DQogDQotICAgIGNsYXNzIFN0eWxlU3Ryb2tlRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPFN0eWxlU3Ryb2tlRGF0YT4gew0KKyAgICBjbGFzcyBTdHlsZVN0cm9rZURhdGEgOiBw
dWJsaWMgUmVmQ291bnRlZDxTdHlsZVN0cm9rZURhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NC
YXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVTdHJv
a2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVTdHJva2VEYXRhKTsg
fQ0KICAgICAgICAgUGFzc1JlZlB0cjxTdHlsZVN0cm9rZURhdGE+IGNvcHkoKSBjb25zdCB7IHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVTdHJva2VEYXRhKCp0aGlzKSk7IH0NCkBAIC0xNzMsNyAr
MTc0LDcgQEANCiAgICAgICAgIFN0eWxlU3Ryb2tlRGF0YShjb25zdCBTdHlsZVN0cm9rZURhdGEm
KTsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgU3R5bGVTdG9wRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0eWxlU3RvcERhdGE+IHsNCisgICAgY2xhc3MgU3R5bGVTdG9wRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFN0eWxlU3RvcERhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAg
ICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVTdG9wRGF0YT4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlU3RvcERhdGEpOyB9DQogICAgICAgICBQ
YXNzUmVmUHRyPFN0eWxlU3RvcERhdGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihu
ZXcgU3R5bGVTdG9wRGF0YSgqdGhpcykpOyB9DQpAQCAtMTkyLDcgKzE5Myw3IEBADQogICAgICAg
ICBTdHlsZVN0b3BEYXRhKGNvbnN0IFN0eWxlU3RvcERhdGEmKTsNCiAgICAgfTsNCiANCi0gICAg
Y2xhc3MgU3R5bGVUZXh0RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlVGV4dERhdGE+IHsN
CisgICAgY2xhc3MgU3R5bGVUZXh0RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlVGV4dERh
dGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3R5bGVUZXh0RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0eWxlVGV4dERhdGEpOyB9DQogICAgICAgICBQYXNzUmVmUHRyPFN0eWxlVGV4dERh
dGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVUZXh0RGF0YSgqdGhp
cykpOyB9DQpAQCAtMjEwLDcgKzIxMSw3IEBADQogICAgICAgICBTdHlsZVRleHREYXRhKGNvbnN0
IFN0eWxlVGV4dERhdGEmIG90aGVyKTsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgU3R5bGVDbGlw
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlQ2xpcERhdGE+IHsNCisgICAgY2xhc3MgU3R5
bGVDbGlwRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlQ2xpcERhdGE+LCBwdWJsaWMgV1RG
OjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3R5bGVDbGlwRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlQ2xp
cERhdGEpOyB9DQogICAgICAgICBQYXNzUmVmUHRyPFN0eWxlQ2xpcERhdGE+IGNvcHkoKSBjb25z
dCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVDbGlwRGF0YSgqdGhpcykpOyB9DQpAQCAtMjI4
LDcgKzIyOSw3IEBADQogICAgICAgICBTdHlsZUNsaXBEYXRhKGNvbnN0IFN0eWxlQ2xpcERhdGEm
KTsNCiAgICAgfTsNCiANCi0gICAgY2xhc3MgU3R5bGVNYXNrRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0eWxlTWFza0RhdGE+IHsNCisgICAgY2xhc3MgU3R5bGVNYXNrRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFN0eWxlTWFza0RhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAg
ICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVNYXNrRGF0YT4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlTWFza0RhdGEpOyB9DQogICAgICAgICBQ
YXNzUmVmUHRyPFN0eWxlTWFza0RhdGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihu
ZXcgU3R5bGVNYXNrRGF0YSgqdGhpcykpOyB9DQpAQCAtMjQzLDcgKzI0NCw3IEBADQogICAgICAg
ICBTdHlsZU1hc2tEYXRhKGNvbnN0IFN0eWxlTWFza0RhdGEmKTsNCiAgICAgfTsNCiANCi0gICAg
Y2xhc3MgU3R5bGVNYXJrZXJEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVNYXJrZXJEYXRh
PiB7DQorICAgIGNsYXNzIFN0eWxlTWFya2VyRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxl
TWFya2VyRGF0YT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZU1hcmtlckRhdGE+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdHlsZU1hcmtlckRhdGEpOyB9DQogICAgICAgICBQYXNzUmVmUHRy
PFN0eWxlTWFya2VyRGF0YT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHls
ZU1hcmtlckRhdGEoKnRoaXMpKTsgfQ0KQEAgLTI2NCw3ICsyNjUsNyBAQA0KICAgICB9Ow0KIA0K
ICAgICAvLyBOb3RlIDogdGhlIHJ1bGUgZm9yIHRoaXMgY2xhc3MgaXMsICpubyBpbmhlcml0YW5j
ZSogb2YgdGhlc2UgcHJvcHMNCi0gICAgY2xhc3MgU3R5bGVNaXNjRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPFN0eWxlTWlzY0RhdGE+IHsNCisgICAgY2xhc3MgU3R5bGVNaXNjRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0eWxlTWlzY0RhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVNaXNjRGF0YT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlTWlzY0RhdGEpOyB9DQogICAgICAg
ICBQYXNzUmVmUHRyPFN0eWxlTWlzY0RhdGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJl
ZihuZXcgU3R5bGVNaXNjRGF0YSgqdGhpcykpOyB9DQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkNCkBAIC03MCw2ICs3MCw3IEBADQog
I2luY2x1ZGUgIlRoZW1lVHlwZXMuaCINCiAjaW5jbHVkZSAiVGltaW5nRnVuY3Rpb24uaCINCiAj
aW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4NCkBAIC0xMDMsNyArMTA0LDcgQEANCiBj
bGFzcyBTdHJpbmdJbXBsOw0KIGNsYXNzIFN0eWxlSW1hZ2U7DQogDQotY2xhc3MgUmVuZGVyU3R5
bGU6IHB1YmxpYyBSZWZDb3VudGVkPFJlbmRlclN0eWxlPiB7DQorY2xhc3MgUmVuZGVyU3R5bGU6
IHB1YmxpYyBSZWZDb3VudGVkPFJlbmRlclN0eWxlPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogICAgIGZyaWVuZCBjbGFzcyBDU1NTdHlsZVNlbGVjdG9yOw0KIA0KIHB1YmxpYzoNCklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2NhbGVUcmFuc2Zvcm1PcGVy
YXRpb24uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2Nh
bGVUcmFuc2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDEwICsyNiwxMSBA
QA0KICNkZWZpbmUgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb25faA0KIA0KICNpbmNsdWRlICJUcmFu
c2Zvcm1PcGVyYXRpb24uaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBu
YW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24gOiBw
dWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsNCitjbGFzcyBTY2FsZVRyYW5zZm9ybU9wZXJhdGlv
biA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ug
ew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NhbGVUcmFuc2Zvcm1PcGVyYXRp
b24+IGNyZWF0ZShkb3VibGUgc3gsIGRvdWJsZSBzeSwgT3BlcmF0aW9uVHlwZSB0eXBlKQ0KICAg
ICB7DQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5o
CShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1
ZWVEYXRhLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMiArMjcsMTMgQEANCiANCiAjaW5jbHVk
ZSAiTGVuZ3RoLmgiDQogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiDQorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0K
LWNsYXNzIFN0eWxlTWFycXVlZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZU1hcnF1ZWVE
YXRhPiB7DQorY2xhc3MgU3R5bGVNYXJxdWVlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxl
TWFycXVlZURhdGE+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlTWFycXVlZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTdHlsZU1hcnF1ZWVEYXRhKTsgfQ0KICAgICBQYXNzUmVmUHRyPFN0eWxlTWFy
cXVlZURhdGE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVNYXJxdWVl
RGF0YSgqdGhpcykpOyB9DQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNv
bnRlbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJD
b250ZW50LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Nv
dW50ZXJDb250ZW50LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMCArMjcsMTEgQEANCiANCiAj
aW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiDQogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRz
LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNv
cmUgew0KIA0KLWNsYXNzIENvdW50ZXJDb250ZW50IHsNCitjbGFzcyBDb3VudGVyQ29udGVudCA6
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgQ291bnRlckNvbnRl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBFTGlzdFN0eWxlVHlwZSBzdHlsZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBzZXBhcmF0b3IpDQogICAgICAgICA6IG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQ0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0FuaW1hdGlvbkxpc3Qu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0FuaW1hdGlvbkxpc3Qu
aAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQW5pbWF0aW9u
TGlzdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsMTIgKzI2LDEzIEBADQogI2RlZmluZSBBbmlt
YXRpb25MaXN0X2gNCiANCiAjaW5jbHVkZSAiQW5pbWF0aW9uLmgiDQorI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBBbmltYXRpb25M
aXN0IHsNCitjbGFzcyBBbmltYXRpb25MaXN0IDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogcHVibGljOg0KICAgICB2b2lkIGZpbGxVbnNldFByb3BlcnRpZXMoKTsNCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbkxpc3QmIG8pIGNvbnN0Ow0KSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMzgz
MzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjUsMTMgKzI1LDE0IEBADQogI2RlZmluZSBTdHlsZUdlbmVyYXRl
ZEltYWdlX2gNCiANCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiBjbGFzcyBDU1NWYWx1
ZTsNCiBjbGFzcyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOw0KIA0KLWNsYXNzIFN0eWxlR2VuZXJh
dGVkSW1hZ2UgOiBwdWJsaWMgU3R5bGVJbWFnZSB7DQorY2xhc3MgU3R5bGVHZW5lcmF0ZWRJbWFn
ZSA6IHB1YmxpYyBTdHlsZUltYWdlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJs
aWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlR2VuZXJhdGVkSW1hZ2U+IGNyZWF0ZShD
U1NJbWFnZUdlbmVyYXRvclZhbHVlKiB2YWwsIGJvb2wgZml4ZWRTaXplKQ0KICAgICB7DQpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAkocmV2aXNpb24gMzgzMzQpDQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0z
MCwxMSArMzAsMTIgQEANCiAjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIg0KICNpbmNsdWRlICJSZW5k
ZXJTdHlsZUNvbnN0YW50cy5oIg0KICNpbmNsdWRlICJTdHlsZUltYWdlLmgiDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCiANCiBuYW1l
c3BhY2UgV2ViQ29yZSB7DQogDQotc3RydWN0IEZpbGxMYXllciB7DQorc3RydWN0IEZpbGxMYXll
ciA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgRmlsbExheWVy
KEVGaWxsTGF5ZXJUeXBlKTsNCiAgICAgfkZpbGxMYXllcigpOw0KSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjcsMTIgKzI3LDEzIEBADQogDQogI2luY2x1ZGUgIkxlbmd0aC5oIg0KICNp
bmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIFN0eWxlVHJhbnNm
b3JtRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlVHJhbnNmb3JtRGF0YT4gew0KK2NsYXNz
IFN0eWxlVHJhbnNmb3JtRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlVHJhbnNmb3JtRGF0
YT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgU3R5bGVUcmFuc2Zvcm1EYXRhKTsgfQ0KICAgICBQYXNzUmVmUHRyPFN0eWxlVHJhbnNmb3Jt
RGF0YT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVRyYW5zZm9ybURh
dGEoKnRoaXMpKTsgfQ0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR0NoYXJhY3RlckxheW91
dEluZm8uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR0NoYXJhY3Rlckxh
eW91dEluZm8uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHQ2hh
cmFjdGVyTGF5b3V0SW5mby5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjUsNiArMjUsNyBAQA0KIA0K
ICNpZiBFTkFCTEUoU1ZHKQ0KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPg0KKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPg0KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+DQpAQCAtMTc2LDcg
KzE3Nyw3IEBADQogfTsNCiANCiAvLyBIb2xkcyBleHRyYSBkYXRhLCB3aGVuIHRoZSBjaGFyYWN0
ZXIgaXMgbGFpZCBvdXQgb24gYSBwYXRoDQotc3RydWN0IFNWR0NoYXJPblBhdGggOiBSZWZDb3Vu
dGVkPFNWR0NoYXJPblBhdGg+IHsNCitzdHJ1Y3QgU1ZHQ2hhck9uUGF0aCA6IFJlZkNvdW50ZWQ8
U1ZHQ2hhck9uUGF0aD4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTVkdDaGFyT25QYXRoPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
U1ZHQ2hhck9uUGF0aCk7IH0NCiANCiAgICAgZmxvYXQgeFNjYWxlOw0KSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUJveC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUJveC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjMsNiArMjMsNyBAQA0KIA0KICNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIgLy8gbmVlZGVkIGZvciBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbw0KICNp
bmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+
DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTMzLDcgKzM0LDcgQEANCiANCiAvLyBJ
bmxpbmVCb3ggcmVwcmVzZW50cyBhIHJlY3RhbmdsZSB0aGF0IG9jY3VycyBvbiBhIGxpbmUuICBJ
dCBjb3JyZXNwb25kcyB0bw0KIC8vIHNvbWUgUmVuZGVyT2JqZWN0IChpLmUuLCBpdCByZXByZXNl
bnRzIGEgcG9ydGlvbiBvZiB0aGF0IFJlbmRlck9iamVjdCkuDQotY2xhc3MgSW5saW5lQm94IHsN
CitjbGFzcyBJbmxpbmVCb3ggOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6
DQogICAgIElubGluZUJveChSZW5kZXJPYmplY3QqIG9iaikNCiAgICAgICAgIDogbV9vYmplY3Qo
b2JqKQ0KSW5kZXg6IFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29y
ZS9kb20vUXVhbGlmaWVkTmFtZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjMsMTIgKzIzLDEzIEBA
DQogI2RlZmluZSBRdWFsaWZpZWROYW1lX2gNCiANCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgi
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUg
ew0KIA0KLWNsYXNzIFF1YWxpZmllZE5hbWUgew0KK2NsYXNzIFF1YWxpZmllZE5hbWUgOiBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQotICAgIGNsYXNzIFF1YWxpZmllZE5h
bWVJbXBsIDogcHVibGljIFJlZkNvdW50ZWQ8UXVhbGlmaWVkTmFtZUltcGw+IHsNCisgICAgY2xh
c3MgUXVhbGlmaWVkTmFtZUltcGwgOiBwdWJsaWMgUmVmQ291bnRlZDxRdWFsaWZpZWROYW1lSW1w
bD4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxRdWFsaWZpZWROYW1lSW1wbD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgcCwgY29uc3QgQXRvbWljU3RyaW5nJiBsLCBjb25zdCBBdG9taWNTdHJpbmcmIG4pDQog
ICAgICAgICB7DQpJbmRleDogV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMyw2ICsyMyw3IEBADQogI2Rl
ZmluZSBFdmVudE5hbWVzX2gNCiANCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiDQorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdURiB7DQogICAgIHRlbXBs
YXRlPHR5cGVuYW1lPiBjbGFzcyBUaHJlYWRTcGVjaWZpYzsNCkBAIC0xMzEsNyArMTMyLDcgQEAN
CiAgICAgXA0KIC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gNCiANCi0gICAgY2xh
c3MgRXZlbnROYW1lcyB7DQorICAgIGNsYXNzIEV2ZW50TmFtZXMgOiBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiAgICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OlRocmVhZFNwZWNpZmljPEV2
ZW50TmFtZXM+Ow0KIA0KICAgICAgICAgRXZlbnROYW1lcygpOw0KSW5kZXg6IFdlYkNvcmUvZG9t
L1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9kb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTMgKzI3LDE0IEBA
DQogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiDQogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlSGFuZGxlLmgiDQogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCINCisjaW5jbHVkZSA8
d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogY2xhc3Mg
U3R5bGVTaGVldDsNCiBjbGFzcyBDU1NTdHlsZVNoZWV0Ow0KIA0KLWNsYXNzIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwcml2YXRlIENhY2hlZFJlc291cmNl
Q2xpZW50DQorY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uIDogcHVibGljIENvbnRhaW5lck5v
ZGUsIHByaXZhdGUgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2UNCiB7DQogcHVibGljOg0KICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oRG9jdW1lbnQqKTsN
CkluZGV4OiBXZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3Jl
L2RvbS9FbnRpdHlSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIzLDEwICsyMywxMSBA
QA0KICNkZWZpbmUgRW50aXR5UmVmZXJlbmNlX2gNCiANCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9k
ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsNCiANCi1jbGFzcyBFbnRpdHlSZWZlcmVuY2UgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7
DQorY2xhc3MgRW50aXR5UmVmZXJlbmNlIDogcHVibGljIENvbnRhaW5lck5vZGUsIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgRW50aXR5UmVmZXJlbmNlKERvY3Vt
ZW50KiwgY29uc3QgU3RyaW5nJiBlbnRpdHlOYW1lKTsNCiANCkluZGV4OiBXZWJDb3JlL2RvbS9U
cmVlV2Fsa2VyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmgJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTI4LDYgKzI4LDcgQEANCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiDQogI2luY2x1
ZGUgIk5vZGVGaWx0ZXIuaCINCiAjaW5jbHVkZSAiVHJhdmVyc2FsLmgiDQorI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogDQpAQCAtMzUsNyArMzYsNyBAQA0KIA0KICAgICB0eXBl
ZGVmIGludCBFeGNlcHRpb25Db2RlOw0KIA0KLSAgICBjbGFzcyBUcmVlV2Fsa2VyIDogcHVibGlj
IFJlZkNvdW50ZWQ8VHJlZVdhbGtlcj4sIHB1YmxpYyBUcmF2ZXJzYWwgew0KKyAgICBjbGFzcyBU
cmVlV2Fsa2VyIDogcHVibGljIFJlZkNvdW50ZWQ8VHJlZVdhbGtlcj4sIHB1YmxpYyBUcmF2ZXJz
YWwsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUcmVlV2Fsa2VyPiBjcmVhdGUoUGFzc1JlZlB0cjxOb2RlPiByb290
Tm9kZSwgdW5zaWduZWQgd2hhdFRvU2hvdywgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiBmaWx0ZXIs
IGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcykNCiAgICAgICAgIHsNCkluZGV4OiBXZWJDb3Jl
L2RvbS9FbGVtZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTI4LDYgKzI4LDcgQEANCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIg0KICNpbmNsdWRl
ICJRdWFsaWZpZWROYW1lLmgiDQogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTM3
LDcgKzM4LDcgQEANCiBjbGFzcyBFbGVtZW50UmFyZURhdGE7DQogY2xhc3MgSW50U2l6ZTsNCiAN
Ci1jbGFzcyBFbGVtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUgew0KK2NsYXNzIEVsZW1lbnQg
OiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVi
bGljOg0KICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOw0KICAg
ICB+RWxlbWVudCgpOw0KSW5kZXg6IFdlYkNvcmUvZG9tL1hNTFRva2VuaXplclF0LmNwcA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvZG9tL1hNTFRva2VuaXplclF0LmNwcAkocmV2aXNpb24gMzgz
MzQpDQorKysgV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyUXQuY3BwCSh3b3JraW5nIGNvcHkpDQpA
QCAtNDgsNiArNDgsNyBAQA0KICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiDQogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCINCiAjaW5jbHVkZSA8UURlYnVnPg0KKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4NCiAjaW5j
bHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPg0KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+DQpA
QCAtNTgsNyArNTksNyBAQA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiAjaWYgUVRfVkVSU0lP
TiA+PSAweDA0MDQwMA0KLWNsYXNzIEVudGl0eVJlc29sdmVyIDogcHVibGljIFFYbWxTdHJlYW1F
bnRpdHlSZXNvbHZlcg0KK2NsYXNzIEVudGl0eVJlc29sdmVyIDogcHVibGljIFFYbWxTdHJlYW1F
bnRpdHlSZXNvbHZlciwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZQ0KIHsNCiAgICAgdmlydHVh
bCBRU3RyaW5nIHJlc29sdmVVbmRlY2xhcmVkRW50aXR5KGNvbnN0IFFTdHJpbmcgJm5hbWUpOw0K
IH07DQpJbmRleDogV2ViQ29yZS9kb20vUmFuZ2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
ZG9tL1JhbmdlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZG9tL1JhbmdlLmgJKHdv
cmtpbmcgY29weSkNCkBAIC0yNiw2ICsyNiw3IEBADQogI2RlZmluZSBSYW5nZV9oDQogDQogI2lu
Y2x1ZGUgIlJhbmdlQm91bmRhcnlQb2ludC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+DQogDQpAQCAtMzUsNyArMzYsNyBAQA0KIGNsYXNzIE5vZGVXaXRoSW5kZXg7DQogY2xhc3Mg
VGV4dDsNCiANCi1jbGFzcyBSYW5nZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJhbmdlPiB7DQorY2xh
c3MgUmFuZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSYW5nZT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxv
Y0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IGNyZWF0ZShQ
YXNzUmVmUHRyPERvY3VtZW50Pik7DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBjcmVh
dGUoUGFzc1JlZlB0cjxEb2N1bWVudD4sIFBhc3NSZWZQdHI8Tm9kZT4gc3RhcnRDb250YWluZXIs
IGludCBzdGFydE9mZnNldCwgUGFzc1JlZlB0cjxOb2RlPiBlbmRDb250YWluZXIsIGludCBlbmRP
ZmZzZXQpOw0KSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50RXhjZXB0aW9uLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2RvbS9FdmVudEV4Y2VwdGlvbi5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBX
ZWJDb3JlL2RvbS9FdmVudEV4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsMTAgKzMw
LDExIEBADQogI2RlZmluZSBFdmVudEV4Y2VwdGlvbl9oDQogDQogI2luY2x1ZGUgIkV4Y2VwdGlv
bkJhc2UuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7DQogDQotICAgIGNsYXNzIEV2ZW50RXhjZXB0aW9uIDogcHVibGljIEV4Y2VwdGlv
bkJhc2Ugew0KKyAgICBjbGFzcyBFdmVudEV4Y2VwdGlvbiA6IHB1YmxpYyBFeGNlcHRpb25CYXNl
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RXZlbnRFeGNlcHRpb24+IGNyZWF0ZShjb25zdCBFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQ0KICAgICAgICAgew0KSW5kZXg6IFdlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTAgKzI3LDExIEBADQogI2RlZmluZSBEb2N1
bWVudEZyYWdtZW50X2gNCiANCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIg0KKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFz
cyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUNCitjbGFzcyBEb2N1bWVu
dEZyYWdtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2UNCiB7DQogcHVibGljOg0KICAgICBEb2N1bWVudEZyYWdtZW50KERvY3VtZW50Kik7DQpJbmRl
eDogV2ViQ29yZS9kb20vUmFuZ2VFeGNlcHRpb24uaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
ZG9tL1JhbmdlRXhjZXB0aW9uLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZG9tL1Jh
bmdlRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOCwxMCArMjgsMTEgQEANCiAjZGVm
aW5lIFJhbmdlRXhjZXB0aW9uX2gNCiANCiAjaW5jbHVkZSAiRXhjZXB0aW9uQmFzZS5oIg0KKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiAN
Ci0gICAgY2xhc3MgUmFuZ2VFeGNlcHRpb24gOiBwdWJsaWMgRXhjZXB0aW9uQmFzZSB7DQorICAg
IGNsYXNzIFJhbmdlRXhjZXB0aW9uIDogcHVibGljIEV4Y2VwdGlvbkJhc2UsIHB1YmxpYyBXVEY6
OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxSYW5nZUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24pDQogICAgICAgICB7DQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zNSw2ICszNSw3
IEBADQogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCINCiAjaW5jbHVkZSAiU3Ry
aW5nSGFzaC5oIg0KICNpbmNsdWRlICJUaW1lci5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4NCiAjaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+DQogDQpAQCAtMTI3LDcgKzEyOCw3IEBADQogDQogICAgIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7DQogDQotY2xhc3MgRm9ybUVsZW1lbnRLZXkgew0KK2NsYXNzIEZv
cm1FbGVtZW50S2V5IDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAg
ICBGb3JtRWxlbWVudEtleShBdG9taWNTdHJpbmdJbXBsKiA9IDAsIEF0b21pY1N0cmluZ0ltcGwq
ID0gMCk7DQogICAgIH5Gb3JtRWxlbWVudEtleSgpOw0KQEAgLTE2Nyw3ICsxNjgsNyBAQA0KICAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBGb3JtRWxlbWVudEtleSYgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0NCiB9Ow0KIA0KLWNs
YXNzIERvY3VtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IHsNCitjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
cHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBm
cmFtZSkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmgNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAs
NiArMzAsNyBAQA0KICNkZWZpbmUgU3RhdGljTm9kZUxpc3RfaA0KIA0KICNpbmNsdWRlICJOb2Rl
TGlzdC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4NCkBAIC0zOCw3ICszOSw3IEBADQogDQogICAgIGNsYXNzIE5vZGU7DQogDQotICAg
IGNsYXNzIFN0YXRpY05vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsNCisgICAgY2xhc3MgU3Rh
dGljTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ug
ew0KICAgICBwdWJsaWM6DQogICAgICAgICAvLyBBZG9wdHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBu
b2RlcyB2ZWN0b3IuDQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGF0aWNOb2RlTGlzdD4g
YWRvcHQoVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBub2RlcykNCkluZGV4OiBXZWJDb3JlL2RvbS9D
bGFzc05hbWVzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9DbGFzc05hbWVzLmgJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZG9tL0NsYXNzTmFtZXMuaAkod29ya2luZyBjb3B5
KQ0KQEAgLTIyLDEyICsyMiwxMyBAQA0KICNkZWZpbmUgQ2xhc3NOYW1lc19oDQogDQogI2luY2x1
ZGUgIkF0b21pY1N0cmluZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4NCiANCiBuYW1l
c3BhY2UgV2ViQ29yZSB7DQogDQotICAgIGNsYXNzIENsYXNzTmFtZXNEYXRhIDogTm9uY29weWFi
bGUgew0KKyAgICBjbGFzcyBDbGFzc05hbWVzRGF0YSA6IE5vbmNvcHlhYmxlLCBwdWJsaWMgV1RG
OjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgQ2xhc3NOYW1lc0RhdGEo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc2hvdWxkRm9sZENhc2UpDQogICAgICAgICAgICAg
OiBtX3N0cmluZyhzdHJpbmcpLCBtX3Nob3VsZEZvbGRDYXNlKHNob3VsZEZvbGRDYXNlKSwgbV9j
cmVhdGVkVmVjdG9yKGZhbHNlKQ0KSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjUs
MTIgKzI1LDEzIEBADQogDQogI2luY2x1ZGUgIkR5bmFtaWNOb2RlTGlzdC5oIg0KICNpbmNsdWRl
ICJTdHJpbmdIYXNoLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+DQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4NCiANCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7DQogDQotc3RydWN0IE5vZGVMaXN0c05vZGVEYXRhIHsNCitzdHJ1Y3QgTm9k
ZUxpc3RzTm9kZURhdGEgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgdHlwZWRl
ZiBIYXNoU2V0PER5bmFtaWNOb2RlTGlzdCo+IE5vZGVMaXN0U2V0Ow0KICAgICBOb2RlTGlzdFNl
dCBtX2xpc3RzV2l0aENhY2hlczsNCiAgICAgDQpAQCAtNTEsNyArNTIsNyBAQA0KICAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsNCiB9Ow0KICAgICANCi1jbGFzcyBOb2RlUmFyZURhdGEgew0KK2Ns
YXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzog
ICAgDQogICAgIE5vZGVSYXJlRGF0YSgpDQogICAgICAgICA6IG1fZm9jdXNlZChmYWxzZSkNCklu
ZGV4OiBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMxLDYgKzMxLDcgQEANCiAjaW5jbHVkZSAiRXZl
bnRMaXN0ZW5lci5oIg0KICNpbmNsdWRlICJFdmVudFRhcmdldC5oIg0KIA0KKyNpbmNsdWRlIDx3
dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNsdWRl
IDx3dGYvTWVzc2FnZVF1ZXVlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQpAQCAt
NDgsNyArNDksNyBAQA0KICAgICBjbGFzcyBTdHJpbmc7DQogICAgIGNsYXNzIFdvcmtlckNvbnRl
eHQ7DQogDQotICAgIGNsYXNzIE1lc3NhZ2VQb3J0IDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8
TWVzc2FnZVBvcnQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQgew0KKyAgICBjbGFzcyBNZXNzYWdlUG9y
dCA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPE1lc3NhZ2VQb3J0PiwgcHVibGljIEV2ZW50VGFy
Z2V0LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2Fn
ZVBvcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOyB9DQogICAgICAgICB+TWVzc2FnZVBvcnQo
KTsNCkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lZEF0dHJNYXAuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2Rv
bS9OYW1lZEF0dHJNYXAuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDYgKzI5LDcgQEANCiANCiAj
aW5jbHVkZSAiQXR0cmlidXRlLmgiDQogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4NCiANCkBAIC0zOSw3ICs0MCw3IEBADQogbmFtZXNwYWNlIFdl
YkNvcmUgew0KIA0KIC8vIHRoZSBtYXAgb2YgYXR0cmlidXRlcyBvZiBhbiBlbGVtZW50DQotY2xh
c3MgTmFtZWRBdHRyTWFwIDogcHVibGljIE5hbWVkTm9kZU1hcCB7DQorY2xhc3MgTmFtZWRBdHRy
TWFwIDogcHVibGljIE5hbWVkTm9kZU1hcCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIGZyaWVuZCBjbGFzcyBFbGVtZW50Ow0KIHByb3RlY3RlZDoNCiAgICAgTmFtZWRBdHRyTWFw
KEVsZW1lbnQqIGVsZW1lbnQpIDogbV9lbGVtZW50KGVsZW1lbnQpIHsgfQ0KSW5kZXg6IFdlYkNv
cmUvZG9tL01lc3NhZ2VDaGFubmVsLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9NZXNz
YWdlQ2hhbm5lbC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlQ2hh
bm5lbC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiArMjcsNyBAQA0KICNpZm5kZWYgTWVzc2Fn
ZUNoYW5uZWxfaA0KICNkZWZpbmUgTWVzc2FnZUNoYW5uZWxfaA0KIA0KKyNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQpAQCAtMzYsNyAr
MzcsNyBAQA0KICAgICBjbGFzcyBNZXNzYWdlUG9ydDsNCiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsNCiANCi0gICAgY2xhc3MgTWVzc2FnZUNoYW5uZWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZXNzYWdlQ2hhbm5lbD4gew0KKyAgICBjbGFzcyBNZXNzYWdlQ2hhbm5lbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lc3NhZ2VDaGFubmVsPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lc3NhZ2VDaGFubmVs
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lc3NhZ2VDaGFubmVsKGNvbnRleHQpKTsgfQ0KICAgICAgICAgfk1lc3NhZ2VDaGFu
bmVsKCk7DQpJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2
aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkNCkBAIC0zMCwxMSArMzAsMTIgQEANCiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiDQogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiDQogI2luY2x1ZGUgIlRpbWVyLmgi
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIE1lc3NhZ2VQb3J0VGlt
ZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsNCitjbGFzcyBNZXNzYWdlUG9ydFRpbWVyIDogcHVibGlj
IFRpbWVyQmFzZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBN
ZXNzYWdlUG9ydFRpbWVyKFBhc3NSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4
dCkNCiAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpDQpJbmRleDogV2ViQ29yZS9kb20vRE9N
Q29yZUV4Y2VwdGlvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9kb20vRE9NQ29yZUV4Y2Vw
dGlvbi5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2RvbS9ET01Db3JlRXhjZXB0aW9u
LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCwxMCArMzAsMTEgQEANCiAjZGVmaW5lIERPTUNvcmVF
eGNlcHRpb25faA0KIA0KICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiDQorI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLSAgICBjbGFz
cyBET01Db3JlRXhjZXB0aW9uIDogcHVibGljIEV4Y2VwdGlvbkJhc2Ugew0KKyAgICBjbGFzcyBE
T01Db3JlRXhjZXB0aW9uIDogcHVibGljIEV4Y2VwdGlvbkJhc2UvKiwgcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZSAqL3sNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
RE9NQ29yZUV4Y2VwdGlvbj4gY3JlYXRlKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24pDQogICAgICAgICB7DQpJbmRleDogV2ViQ29yZS9kb20vQXR0ci5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9kb20vQXR0ci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL2RvbS9BdHRyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQogDQogI2lu
Y2x1ZGUgIkNvbnRhaW5lck5vZGUuaCINCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiDQorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAg
LTM2LDcgKzM3LDcgQEANCiAvLyByZXN1bHRpbmcgbm9kZXZhbHVlIGluIHRoZSBBdHRyaWJ1dGUg
dXBvbg0KIC8vIGRlc3RydWN0aW9uLiBob3dldmVyLCB0aGlzIGlzIG5vdCB5ZXQgaW1wbGVtZW50
ZWQuDQogDQotY2xhc3MgQXR0ciA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsNCitjbGFzcyBBdHRy
IDogcHVibGljIENvbnRhaW5lck5vZGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAg
ICBmcmllbmQgY2xhc3MgTmFtZWRBdHRyTWFwOw0KIHB1YmxpYzoNCiAgICAgQXR0cihFbGVtZW50
KiwgRG9jdW1lbnQqLCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4pOw0KSW5kZXg6IFdlYkNvcmUvZG9t
L0V2ZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9FdmVudC5oCShyZXZpc2lvbiAz
ODMzNCkNCisrKyBXZWJDb3JlL2RvbS9FdmVudC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsNiAr
MjYsNyBAQA0KIA0KICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCINCiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQpAQCAtMzUsNyArMzYsNyBA
QA0KICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgZGVmaW5lZCBlbHNld2hlcmUu
DQogICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIERPTVRpbWVTdGFtcDsNCiANCi0gICAg
Y2xhc3MgRXZlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxFdmVudD4gew0KKyAgICBjbGFzcyBFdmVu
dCA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50PiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIHB1YmxpYzoNCiAgICAgICAgIGVudW0gUGhhc2VUeXBlIHsgDQogICAgICAgICAgICAg
Q0FQVFVSSU5HX1BIQVNFICAgICA9IDEsIA0KSW5kZXg6IFdlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5o
CShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjQsNiArMjQsNyBAQA0KICNpZm5kZWYgRE9NSW1wbGVtZW50YXRp
b25faA0KICNkZWZpbmUgRE9NSW1wbGVtZW50YXRpb25faA0KIA0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPg0KIA0KQEAgLTM4LDcgKzM5LDcgQEANCiANCiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOw0KIA0KLWNsYXNzIERPTUltcGxlbWVudGF0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NSW1wbGVtZW50YXRpb24+IHsNCitjbGFzcyBET01JbXBsZW1lbnRhdGlvbiA6IHB1
YmxpYyBSZWZDb3VudGVkPERPTUltcGxlbWVudGF0aW9uPiwgcHVibGljIFdURjo6RmFzdEFsbG9j
QmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01JbXBsZW1lbnRhdGlv
bj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTUltcGxlbWVudGF0aW9uKTsgfQ0K
IA0KSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvZG9tL05vZGVGaWx0ZXIuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9kb20vTm9k
ZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTIgKzI3LDEzIEBADQogDQogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIg0KICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQog
DQotICAgIGNsYXNzIE5vZGVGaWx0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxOb2RlRmlsdGVyPiB7
DQorICAgIGNsYXNzIE5vZGVGaWx0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxOb2RlRmlsdGVyPiwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIC8qKg0K
ICAgICAgICAgICogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgYXJlIHJldHVybmVkIGJ5IHRoZSBh
Y2NlcHROb2RlKCkNCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBX
ZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI1LDEyICsyNSwx
MyBAQA0KICNkZWZpbmUgRG9jdW1lbnRUeXBlX2gNCiANCiAjaW5jbHVkZSAiTm9kZS5oIg0KKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiAN
CiBjbGFzcyBOYW1lZE5vZGVNYXA7DQogDQotY2xhc3MgRG9jdW1lbnRUeXBlIDogcHVibGljIE5v
ZGUgew0KK2NsYXNzIERvY3VtZW50VHlwZSA6IHB1YmxpYyBOb2RlLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50VHlw
ZT4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHB1YmxpY0lkLCBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKQ0KICAgICB7DQpJbmRleDog
V2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9Y
TUxUb2tlbml6ZXIuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9kb20vWE1MVG9rZW5p
emVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw2ICsyOSw3IEBADQogI2luY2x1ZGUgIlNlZ21l
bnRlZFN0cmluZy5oIg0KICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiDQogI2luY2x1ZGUgIlRva2Vu
aXplci5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPg0KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+DQogDQpAQCAtNTEsNyArNTIsNyBA
QA0KICAgICBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzOw0KICAgICBjbGFzcyBTY3JpcHRFbGVtZW50
Ow0KIA0KLSAgICBjbGFzcyBYTUxUb2tlbml6ZXIgOiBwdWJsaWMgVG9rZW5pemVyLCBwdWJsaWMg
Q2FjaGVkUmVzb3VyY2VDbGllbnQgew0KKyAgICBjbGFzcyBYTUxUb2tlbml6ZXIgOiBwdWJsaWMg
VG9rZW5pemVyLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBYTUxUb2tlbml6ZXIoRG9jdW1lbnQq
LCBGcmFtZVZpZXcqID0gMCk7DQogICAgICAgICBYTUxUb2tlbml6ZXIoRG9jdW1lbnRGcmFnbWVu
dCosIEVsZW1lbnQqKTsNCkluZGV4OiBXZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL2RvbS9BdHRyaWJ1dGUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2LDcgQEANCiAj
ZGVmaW5lIEF0dHJpYnV0ZV9oDQogDQogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCINCisjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQpA
QCAtMzcsNyArMzgsNyBAQA0KIC8vIFRoaXMgaGFzIG5vIGNvdW50ZXJwYXJ0IGluIERPTS4NCiAv
LyBJdCBpcyBhbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbm9kZSB2YWx1ZSBvZiBh
biBBdHRyLg0KIC8vIFRoZSBhY3R1YWwgQXR0ciB3aXRoIGl0cyB2YWx1ZSBhcyBhIFRleHQgY2hp
bGQgaXMgYWxsb2NhdGVkIG9ubHkgaWYgbmVlZGVkLg0KLWNsYXNzIEF0dHJpYnV0ZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEF0dHJpYnV0ZT4gew0KK2NsYXNzIEF0dHJpYnV0ZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEF0dHJpYnV0ZT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBmcmll
bmQgY2xhc3MgQXR0cjsNCiAgICAgZnJpZW5kIGNsYXNzIE5hbWVkQXR0ck1hcDsNCiBwdWJsaWM6
DQpJbmRleDogV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgJKHJldmlzaW9uIDM4
MzM0KQ0KKysrIFdlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0yNSwxMiArMjUsMTMgQEANCiAjZGVmaW5lIFJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyX2gNCiANCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0
QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KICAgICBjbGFzcyBFdmVu
dExpc3RlbmVyOw0KIA0KLSAgICBjbGFzcyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyPiB7DQorICAgIGNsYXNzIFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXI+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQ0KICAgICAgICAgew0KSW5kZXg6IFdlYkNvcmUvZG9tL05v
ZGVJdGVyYXRvci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjgsNiArMjgsNyBAQA0KICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCINCiAj
aW5jbHVkZSAiTm9kZUZpbHRlci5oIg0KICNpbmNsdWRlICJUcmF2ZXJzYWwuaCINCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiANCkBAIC0zNSw3ICszNiw3IEBADQogDQogICAg
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7DQogDQotICAgIGNsYXNzIE5vZGVJdGVyYXRvciA6
IHB1YmxpYyBSZWZDb3VudGVkPE5vZGVJdGVyYXRvcj4sIHB1YmxpYyBUcmF2ZXJzYWwgew0KKyAg
ICBjbGFzcyBOb2RlSXRlcmF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxOb2RlSXRlcmF0b3I+LCBw
dWJsaWMgVHJhdmVyc2FsLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGlj
Og0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxOb2RlPiByb290Tm9kZSwgdW5zaWduZWQgd2hhdFRvU2hvdywgUGFzc1JlZlB0cjxOb2Rl
RmlsdGVyPiBmaWx0ZXIsIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcykNCiAgICAgICAgIHsN
CkluZGV4OiBXZWJDb3JlL2RvbS9Db21tZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Rv
bS9Db21tZW50LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZG9tL0NvbW1lbnQuaAko
d29ya2luZyBjb3B5KQ0KQEAgLTI2LDEwICsyNiwxMSBAQA0KICNkZWZpbmUgQ29tbWVudF9oDQog
DQogI2luY2x1ZGUgIkNoYXJhY3RlckRhdGEuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgQ29tbWVudCA6IHB1Ymxp
YyBDaGFyYWN0ZXJEYXRhDQorY2xhc3MgQ29tbWVudCA6IHB1YmxpYyBDaGFyYWN0ZXJEYXRhLCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlDQogew0KIHB1YmxpYzoNCiAgICAgQ29tbWVudChEb2N1
bWVudCosIGNvbnN0IFN0cmluZyAmX3RleHQpOw0KSW5kZXg6IFdlYkNvcmUvZG9tL1RleHQuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZG9tL1RleHQuaAkocmV2aXNpb24gMzgzMzQpDQorKysg
V2ViQ29yZS9kb20vVGV4dC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjQsMTIgKzI0LDEzIEBADQog
I2RlZmluZSBUZXh0X2gNCiANCiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIg0KKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiAgICAgDQog
Y29uc3QgdW5zaWduZWQgY1RleHROb2RlTGVuZ3RoTGltaXQgPSAxIDw8IDE2Ow0KIA0KLWNsYXNz
IFRleHQgOiBwdWJsaWMgQ2hhcmFjdGVyRGF0YSB7DQorY2xhc3MgVGV4dCA6IHB1YmxpYyBDaGFy
YWN0ZXJEYXRhLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIFRl
eHQoRG9jdW1lbnQgKmltcGwsIGNvbnN0IFN0cmluZyAmX3RleHQpOw0KICAgICBUZXh0KERvY3Vt
ZW50ICppbXBsKTsNCkluZGV4OiBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTM1LDEwICsz
NSwxMSBAQA0KICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCINCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCINCiAjaW5jbHVkZSAiVGltZXIuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgQ2xvc2VNZXNzYWdlUG9y
dFRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7DQorY2xhc3MgQ2xvc2VNZXNzYWdlUG9ydFRpbWVy
IDogcHVibGljIFRpbWVyQmFzZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGlj
Og0KICAgICBDbG9zZU1lc3NhZ2VQb3J0VGltZXIoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcG9y
dCkNCiAgICAgICAgIDogbV9wb3J0KHBvcnQpDQpJbmRleDogV2ViQ29yZS9kb20vRHluYW1pY05v
ZGVMaXN0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuaAko
cmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmgJKHdvcmtp
bmcgY29weSkNCkBAIC0yNSw2ICsyNSw3IEBADQogI2RlZmluZSBEeW5hbWljTm9kZUxpc3RfaA0K
IA0KICNpbmNsdWRlICJOb2RlTGlzdC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
Pg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
Pg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQpAQCAtMzUsOSArMzYsOSBAQA0KICAgICBjbGFz
cyBFbGVtZW50Ow0KICAgICBjbGFzcyBOb2RlOw0KIA0KLSAgICBjbGFzcyBEeW5hbWljTm9kZUxp
c3QgOiBwdWJsaWMgTm9kZUxpc3Qgew0KKyAgICBjbGFzcyBEeW5hbWljTm9kZUxpc3QgOiBwdWJs
aWMgTm9kZUxpc3QsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQot
ICAgICAgICBzdHJ1Y3QgQ2FjaGVzIHsNCisgICAgICAgIHN0cnVjdCBDYWNoZXMgOiBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgICAgICAgICBDYWNoZXMoKTsNCiAgICAgICAgICAg
ICB2b2lkIHJlc2V0KCk7DQogDQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgJKHJldmlzaW9uIDM4
MzM0KQ0KKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgJKHdvcmtpbmcgY29weSkNCkBA
IC0zNyw2ICszNyw3IEBADQogI2luY2x1ZGUgIlRpbWVyLmgiDQogI2luY2x1ZGUgIldpZGdldC5o
Ig0KICNpbmNsdWRlICJucHJ1bnRpbWVfaW50ZXJuYWwuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4NCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4NCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPg0KQEAgLTc4LDcgKzc5LDcgQEANCiAg
ICAgICAgIFBsdWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseQ0KICAgICB9Ow0KIA0KLSAgICBj
bGFzcyBQbHVnaW5SZXF1ZXN0IHsNCisgICAgY2xhc3MgUGx1Z2luUmVxdWVzdCA6IHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBQbHVnaW5SZXF1ZXN0
KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5vdGlm
aWNhdGlvbiwgdm9pZCogbm90aWZ5RGF0YSwgYm9vbCBzaG91bGRBbGxvd1BvcHVwcykNCiAgICAg
ICAgICAgICA6IG1fZnJhbWVMb2FkUmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0KQ0KSW5kZXg6IFdl
YkNvcmUvcGx1Z2lucy9NaW1lVHlwZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbHVnaW5z
L01pbWVUeXBlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlw
ZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjAsNiArMjAsNyBAQA0KICNpZm5kZWYgTWltZVR5cGVf
aA0KICNkZWZpbmUgTWltZVR5cGVfaA0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
Pg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQpAQCAtMzEsNyArMzIsNyBAQA0KICAgICBj
bGFzcyBQbHVnaW47DQogICAgIGNsYXNzIFN0cmluZzsNCiANCi0gICAgY2xhc3MgTWltZVR5cGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxNaW1lVHlwZT4gew0KKyAgICBjbGFzcyBNaW1lVHlwZSA6IHB1
YmxpYyBSZWZDb3VudGVkPE1pbWVUeXBlPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1pbWVUeXBlPiBjcmVhdGUo
UGFzc1JlZlB0cjxQbHVnaW5EYXRhPiBwbHVnaW5EYXRhLCB1bnNpZ25lZCBpbmRleCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IE1pbWVUeXBlKHBsdWdpbkRhdGEsIGluZGV4KSk7IH0NCiAgICAgICAg
IH5NaW1lVHlwZSgpOw0KSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjIsNiArMjIsNyBAQA0KICNkZWZpbmUgUGx1Z2luQXJyYXlfaA0KIA0KICNpbmNsdWRlICJQbHVn
aW4uaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPg0KQEAgLTMyLDcgKzMzLDcgQEANCiAgICAgY2xhc3MgRnJhbWU7DQogICAgIGNs
YXNzIFBsdWdpbkRhdGE7DQogDQotICAgIGNsYXNzIFBsdWdpbkFycmF5IDogcHVibGljIFJlZkNv
dW50ZWQ8UGx1Z2luQXJyYXk+IHsNCisgICAgY2xhc3MgUGx1Z2luQXJyYXkgOiBwdWJsaWMgUmVm
Q291bnRlZDxQbHVnaW5BcnJheT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBw
dWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5BcnJheT4gY3JlYXRlKEZy
YW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpbkFycmF5KGZyYW1lKSk7IH0N
CiAgICAgICAgIH5QbHVnaW5BcnJheSgpOw0KSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVn
aW5WaWV3UXQuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZp
ZXdRdC5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5W
aWV3UXQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzksNiArMzksNyBAQA0KICNpbmNsdWRlICJy
dW50aW1lX3Jvb3QuaCINCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4NCiAjaW5jbHVkZSA8
cnVudGltZS9KU1ZhbHVlLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIg0KICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiDQog
DQpAQCAtMjM2LDcgKzIzNyw3IEBADQogICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1
Z2luVmlldygwKTsNCiAgICAgfQ0KIA0KLSAgICBkZWxldGUgKE5QU2V0V2luZG93Q2FsbGJhY2tT
dHJ1Y3QgKiltX25wV2luZG93LndzX2luZm87DQorICAgIFdURjo6ZmFzdERlbGV0ZSgoTlBTZXRX
aW5kb3dDYWxsYmFja1N0cnVjdCAqKW1fbnBXaW5kb3cud3NfaW5mbyk7DQogICAgIG1fbnBXaW5k
b3cud3NfaW5mbyA9IDA7DQogDQogICAgIC8vIERlc3Ryb3kgdGhlIHBsdWdpbg0KQEAgLTQ2OCw3
ICs0NjksNyBAQA0KICAgICB9DQogICAgIHNob3cgKCk7DQogDQotICAgIE5QU2V0V2luZG93Q2Fs
bGJhY2tTdHJ1Y3QgKndzaSA9IG5ldyBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KCk7DQorICAg
IE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QgKndzaSA9IFdURjo6ZmFzdE5ldzxOUFNldFdpbmRv
d0NhbGxiYWNrU3RydWN0PigpOw0KIA0KICAgICB3c2ktPnR5cGUgPSAwOw0KIA0KSW5kZXg6IFdl
YkNvcmUvcGx1Z2lucy9QbHVnaW4uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGx1Z2lucy9Q
bHVnaW4uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpbi5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjEsNiArMjEsNyBAQA0KICNkZWZpbmUgUGx1Z2luX2gNCiANCiAj
aW5jbHVkZSAiTWltZVR5cGUuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KIA0K
QEAgLTM5LDcgKzQwLDcgQEANCiANCiAgICAgY2xhc3MgUGx1Z2luRGF0YTsNCiANCi0gICAgY2xh
c3MgUGx1Z2luIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luPiB7DQorICAgIGNsYXNzIFBsdWdp
biA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpbj4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ug
ew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW4+IGNyZWF0
ZShQbHVnaW5EYXRhKiBwbHVnaW5EYXRhLCB1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFBsdWdpbihwbHVnaW5EYXRhLCBpbmRleCkpOyB9DQogICAgICAgICB+UGx1Z2luKCk7
DQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL01pbWVUeXBlQXJyYXkuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvcGx1Z2lucy9NaW1lVHlwZUFycmF5LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdl
YkNvcmUvcGx1Z2lucy9NaW1lVHlwZUFycmF5LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMiw2ICsy
Miw3IEBADQogI2RlZmluZSBNaW1lVHlwZUFycmF5X2gNCiANCiAjaW5jbHVkZSAiTWltZVR5cGUu
aCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPg0KQEAgLTMyLDcgKzMzLDcgQEANCiAgICAgY2xhc3MgRnJhbWU7DQogICAgIGNsYXNz
IFBsdWdpbkRhdGE7DQogDQotICAgIGNsYXNzIE1pbWVUeXBlQXJyYXkgOiBwdWJsaWMgUmVmQ291
bnRlZDxNaW1lVHlwZUFycmF5PiB7DQorICAgIGNsYXNzIE1pbWVUeXBlQXJyYXkgOiBwdWJsaWMg
UmVmQ291bnRlZDxNaW1lVHlwZUFycmF5PiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1pbWVUeXBlQXJyYXk+IGNy
ZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNaW1lVHlwZUFycmF5KGZy
YW1lKSk7IH0NCiAgICAgICAgIH5NaW1lVHlwZUFycmF5KCk7DQpJbmRleDogV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
cGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgJKHdvcmtpbmcgY29w
eSkNCkBAIC0yNyw2ICsyNyw3IEBADQogI2RlZmluZSBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVy
X2gNCiANCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+DQogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+DQogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4NCkBAIC0zNiw3ICszNyw3IEBADQog
DQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXIgew0KK2NsYXNzIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIgOiBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHR5cGVkZWYgdm9pZCBNYWluVGhyZWFkRnVuY3Rp
b24odm9pZCopOw0KIA0KSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCShyZXZpc2lvbiAz
ODMzNCkNCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMzMsNiArMzMsNyBAQA0KICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiDQogI2luY2x1ZGUg
IlRpbWVyLmgiDQogI2luY2x1ZGUgIm5wcnVudGltZV9pbnRlcm5hbC5oIg0KKyNpbmNsdWRlIDx3
dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPg0KIA0KQEAgLTQwLDcgKzQxLDcgQEANCiAgICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBNSU1FVG9EZXNjcmlwdGlvbnNNYXA7DQogICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+ID4gTUlNRVRvRXh0ZW5zaW9uc01hcDsN
CiANCi0gICAgY2xhc3MgUGx1Z2luUGFja2FnZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblBh
Y2thZ2U+IHsNCisgICAgY2xhc3MgUGx1Z2luUGFja2FnZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBs
dWdpblBhY2thZ2U+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0K
ICAgICAgICAgflBsdWdpblBhY2thZ2UoKTsNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBs
dWdpblBhY2thZ2U+IGNyZWF0ZVBhY2thZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCB0aW1l
X3QmIGxhc3RNb2RpZmllZCk7DQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5oCShyZXZpc2lv
biAzODMzNCkNCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmgJKHdvcmtpbmcgY29w
eSkNCkBAIC0zOCw2ICszOCw3IEBADQogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCINCiAjaW5jbHVk
ZSAiVGltZXIuaCINCiAjaW5jbHVkZSAibnBydW50aW1lX2ludGVybmFsLmgiDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+DQogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCkBAIC00OSwx
MyArNTAsMTMgQEANCiANCiAgICAgZW51bSBQbHVnaW5TdHJlYW1TdGF0ZSB7IFN0cmVhbUJlZm9y
ZVN0YXJ0ZWQsIFN0cmVhbVN0YXJ0ZWQsIFN0cmVhbVN0b3BwZWQgfTsNCiANCi0gICAgY2xhc3Mg
UGx1Z2luU3RyZWFtQ2xpZW50IHsNCisgICAgY2xhc3MgUGx1Z2luU3RyZWFtQ2xpZW50IDogcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHZpcnR1YWwg
flBsdWdpblN0cmVhbUNsaWVudCgpIHt9DQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlk
RmluaXNoTG9hZGluZyhQbHVnaW5TdHJlYW0qKSB7fQ0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBQ
bHVnaW5TdHJlYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5TdHJlYW0+LCBwcml2YXRlIE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IHsNCisgICAgY2xhc3MgUGx1Z2luU3RyZWFt
IDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luU3RyZWFtPiwgcHVibGljIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyQ2xpZW50IHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGx1Z2luU3RyZWFtPiBjcmVhdGUoUGx1Z2luU3RyZWFtQ2xpZW50KiBjbGllbnQsIEZy
YW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHNlbmROb3Rp
ZmljYXRpb24sIHZvaWQqIG5vdGlmeURhdGEsIGNvbnN0IE5QUGx1Z2luRnVuY3MqIGZ1bmN0aW9u
cywgTlBQIGluc3RhbmNlLCBjb25zdCBQbHVnaW5RdWlya1NldCYgcXVpcmtzKQ0KICAgICAgICAg
ew0KSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzEs
NiArMzEsNyBAQA0KICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiDQogI2luY2x1ZGUgIlN0cmlu
Z0hhc2guaCINCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPg0KIA0KQEAgLTQzLDcgKzQ0
LDcgQEANCiANCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxQbHVnaW5QYWNrYWdlPiwgUGx1
Z2luUGFja2FnZUhhc2g+IFBsdWdpblNldDsNCiAgIA0KLSAgICBjbGFzcyBQbHVnaW5EYXRhYmFz
ZSB7DQorICAgIGNsYXNzIFBsdWdpbkRhdGFiYXNlIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQbHVnaW5EYXRhYmFzZSogaW5zdGFs
bGVkUGx1Z2lucygpOw0KIA0KSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCShyZXZpc2lvbiAzODMz
NCkNCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjAsNiArMjAsNyBAQA0KICNpZm5kZWYgUGx1Z2luRGF0YV9oDQogI2RlZmluZSBQbHVnaW5EYXRh
X2gNCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIg0KQEAgLTI5LDE0ICszMCwxNCBAQA0KICAgICBjbGFzcyBQYWdlOw0KICAgICBz
dHJ1Y3QgUGx1Z2luSW5mbzsNCiANCi0gICAgc3RydWN0IE1pbWVDbGFzc0luZm8gew0KKyAgICBz
dHJ1Y3QgTWltZUNsYXNzSW5mbyA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAg
ICAgU3RyaW5nIHR5cGU7DQogICAgICAgICBTdHJpbmcgZGVzYzsNCiAgICAgICAgIFN0cmluZyBz
dWZmaXhlczsNCiAgICAgICAgIFBsdWdpbkluZm8qIHBsdWdpbjsNCiAgICAgfTsNCiANCi0gICAg
c3RydWN0IFBsdWdpbkluZm8gew0KKyAgICBzdHJ1Y3QgUGx1Z2luSW5mbyA6IHB1YmxpYyBXVEY6
OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAgICAgU3RyaW5nIG5hbWU7DQogICAgICAgICBTdHJpbmcg
ZmlsZTsNCiAgICAgICAgIFN0cmluZyBkZXNjOw0KQEAgLTQ0LDcgKzQ1LDcgQEANCiAgICAgfTsN
CiANCiAgICAgLy8gRklYTUU6IG1lcmdlIHdpdGggUGx1Z2luRGF0YWJhc2UgaW4gdGhlIGZ1dHVy
ZQ0KLSAgICBjbGFzcyBQbHVnaW5EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luRGF0YT4g
ew0KKyAgICBjbGFzcyBQbHVnaW5EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1Z2luRGF0YT4s
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQbHVnaW5EYXRhPiBjcmVhdGUoY29uc3QgUGFnZSogcGFnZSkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFBsdWdpbkRhdGEocGFnZSkpOyB9DQogICAgICAgICB+UGx1Z2luRGF0
YSgpOw0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Kb2luVGV4dE5vZGVzQ29tbWFuZC5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9lZGl0aW5nL0pvaW5UZXh0Tm9kZXNDb21tYW5kLmgJKHJldmlz
aW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZWRpdGluZy9Kb2luVGV4dE5vZGVzQ29tbWFuZC5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjcsMTIgKzI3LDEzIEBADQogI2RlZmluZSBKb2luVGV4dE5vZGVz
Q29tbWFuZF9oDQogDQogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KIGNsYXNzIFRleHQ7
DQogDQotY2xhc3MgSm9pblRleHROb2Rlc0NvbW1hbmQgOiBwdWJsaWMgU2ltcGxlRWRpdENvbW1h
bmQgew0KK2NsYXNzIEpvaW5UZXh0Tm9kZXNDb21tYW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21t
YW5kLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEpvaW5UZXh0Tm9kZXNDb21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxUZXh0PiB0
ZXh0MSwgUGFzc1JlZlB0cjxUZXh0PiB0ZXh0MikNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9VbmxpbmtDb21tYW5kLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2VkaXRpbmcvVW5s
aW5rQ29tbWFuZC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2VkaXRpbmcvVW5saW5r
Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTAgKzI3LDExIEBADQogI2RlZmluZSBV
bmxpbmtDb21tYW5kX2gNCiANCiAjaW5jbHVkZSAiQ29tcG9zaXRlRWRpdENvbW1hbmQuaCINCisj
aW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQog
DQotY2xhc3MgVW5saW5rQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7DQor
Y2xhc3MgVW5saW5rQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCwgcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxV
bmxpbmtDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQ0KICAgICB7DQpJbmRleDog
V2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IFdlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkNCkBA
IC0yNywxMCArMjcsMTEgQEANCiAjZGVmaW5lIFJlbW92ZUZvcm1hdENvbW1hbmRfaA0KIA0KICNp
bmNsdWRlICJDb21wb3NpdGVFZGl0Q29tbWFuZC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBSZW1vdmVGb3JtYXRD
b21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsNCitjbGFzcyBSZW1vdmVGb3Jt
YXRDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbW92ZUZvcm1h
dENvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpDQogICAgIHsNCkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuaAko
cmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFy
YXRvckNvbW1hbmQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI3LDEwICsyNywxMSBAQA0KICNkZWZp
bmUgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZF9oDQogDQogI2luY2x1ZGUgIkNvbXBv
c2l0ZUVkaXRDb21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQog
bmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNv
bW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgew0KK2NsYXNzIEluc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQsIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCwgYm9vbCB1c2VEZWZhdWx0UGFyYWdyYXBoRWxlbWVudCA9IGZhbHNlKQ0KICAgICB7DQpJbmRl
eDogV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuaAkocmV2aXNpb24gMzgzMzQp
DQorKysgV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmgJKHdvcmtpbmcgY29w
eSkNCkBAIC0yNywxMiArMjcsMTMgQEANCiAjZGVmaW5lIE1vdmVTZWxlY3Rpb25Db21tYW5kX2gN
CiANCiAjaW5jbHVkZSAiQ29tcG9zaXRlRWRpdENvbW1hbmQuaCINCisjaW5jbHVkZSA8d3RmL0Zh
c3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogY2xhc3MgRG9jdW1l
bnRGcmFnbWVudDsNCiANCi1jbGFzcyBNb3ZlU2VsZWN0aW9uQ29tbWFuZCA6IHB1YmxpYyBDb21w
b3NpdGVFZGl0Q29tbWFuZCB7DQorY2xhc3MgTW92ZVNlbGVjdGlvbkNvbW1hbmQgOiBwdWJsaWMg
Q29tcG9zaXRlRWRpdENvbW1hbmQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1Ymxp
YzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TW92ZVNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50LCBjb25zdCBQb3NpdGlvbiYgcG9z
aXRpb24sIGJvb2wgc21hcnRNb3ZlID0gZmFsc2UpDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9l
ZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2Vi
Q29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuaAkod29ya2luZyBjb3B5KQ0KQEAg
LTI3LDEwICsyNywxMSBAQA0KICNkZWZpbmUgQnJlYWtCbG9ja3F1b3RlQ29tbWFuZF9oDQogDQog
I2luY2x1ZGUgIkNvbXBvc2l0ZUVkaXRDb21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxs
b2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIEJyZWFrQmxvY2tx
dW90ZUNvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgew0KK2NsYXNzIEJyZWFr
QmxvY2txdW90ZUNvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQsIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QnJl
YWtCbG9ja3F1b3RlQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkNCiAgICAgew0K
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjcsMTAgKzI3LDExIEBADQogI2RlZmluZSBBcHBlbmROb2RlQ29tbWFuZF9oDQogDQogI2lu
Y2x1ZGUgIkVkaXRDb21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQog
DQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIEFwcGVuZE5vZGVDb21tYW5kIDogcHVi
bGljIFNpbXBsZUVkaXRDb21tYW5kIHsNCitjbGFzcyBBcHBlbmROb2RlQ29tbWFuZCA6IHB1Ymxp
YyBTaW1wbGVFZGl0Q29tbWFuZCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGlj
Og0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBlbmROb2RlQ29tbWFuZD4gY3JlYXRlKFBhc3NS
ZWZQdHI8Tm9kZT4gcGFyZW50Tm9kZSwgUGFzc1JlZlB0cjxOb2RlPiBjaGlsZFRvQXBwZW5kKQ0K
ICAgICB7DQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZl
bC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9u
TGlzdExldmVsLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQogI2RlZmluZSBN
b2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWxfaA0KIA0KICNpbmNsdWRlICJDb21wb3NpdGVFZGl0Q29t
bWFuZC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsNCiANCkBAIC00Niw3ICs0Nyw3IEBADQogfTsNCiANCiAvLyBJbmNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbENvbW1hbmQgbW92ZXMgdGhlIHNlbGVjdGVkIGxpc3QgaXRlbXMgb25lIGxl
dmVsIGRlZXBlci4NCi1jbGFzcyBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQgOiBw
dWJsaWMgTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZCB7DQorY2xhc3MgSW5jcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kIDogcHVibGljIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZl
bENvbW1hbmQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3Rh
dGljIGJvb2wgY2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1lbnQqKTsNCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Tm9kZT4gaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1l
bnQqKTsNCkBAIC02NSw3ICs2Niw3IEBADQogfTsNCiANCiAvLyBEZWNyZWFzZVNlbGVjdGlvbkxp
c3RMZXZlbENvbW1hbmQgbW92ZXMgdGhlIHNlbGVjdGVkIGxpc3QgaXRlbXMgb25lIGxldmVsIHNo
YWxsb3dlci4NCi1jbGFzcyBEZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQgOiBwdWJs
aWMgTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsQ29tbWFuZCB7DQorY2xhc3MgRGVjcmVhc2VTZWxl
Y3Rpb25MaXN0TGV2ZWxDb21tYW5kIDogcHVibGljIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbENv
bW1hbmQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGlj
IGJvb2wgY2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1lbnQqKTsNCiAgICAgc3Rh
dGljIHZvaWQgZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoRG9jdW1lbnQqKTsNCkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuaAkocmV2aXNpb24gMzgzMzQpDQorKysg
V2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuaAkod29ya2luZyBjb3B5KQ0KQEAg
LTI3LDEwICsyNywxMSBAQA0KICNkZWZpbmUgU3BsaXRFbGVtZW50Q29tbWFuZF9oDQogDQogI2lu
Y2x1ZGUgIkVkaXRDb21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQog
DQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIFNwbGl0RWxlbWVudENvbW1hbmQgOiBw
dWJsaWMgU2ltcGxlRWRpdENvbW1hbmQgew0KK2NsYXNzIFNwbGl0RWxlbWVudENvbW1hbmQgOiBw
dWJsaWMgU2ltcGxlRWRpdENvbW1hbmQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1
YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BsaXRFbGVtZW50Q29tbWFuZD4gY3JlYXRl
KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgUGFzc1JlZlB0cjxOb2RlPiBzcGxpdFBvaW50
Q2hpbGQpDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI3LDEwICsyNywxMSBAQA0KICNkZWZp
bmUgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZF9oDQogDQogI2luY2x1ZGUgIkNvbXBvc2l0ZUVkaXRD
b21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNl
IFdlYkNvcmUgew0KIA0KLWNsYXNzIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQgOiBwdWJsaWMgQ29t
cG9zaXRlRWRpdENvbW1hbmQgeyANCitjbGFzcyBEZWxldGVTZWxlY3Rpb25Db21tYW5kIDogcHVi
bGljIENvbXBvc2l0ZUVkaXRDb21tYW5kLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsgDQog
cHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxldGVTZWxlY3Rpb25Db21tYW5kPiBj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHNtYXJ0RGVsZXRlID0gZmFsc2UsIGJvb2wg
bWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSA9IHRydWUsIGJvb2wgcmVwbGFjZSA9IGZhbHNlLCBib29s
IGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cyA9IGZhbHNlKQ0KICAgICB7DQpJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgJKHdvcmtp
bmcgY29weSkNCkBAIC0yNywxMiArMjcsMTMgQEANCiAjZGVmaW5lIEluc2VydEludG9UZXh0Tm9k
ZUNvbW1hbmRfaA0KIA0KICNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIg0KKyNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiBjbGFzcyBUZXh0
Ow0KIA0KLWNsYXNzIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQgOiBwdWJsaWMgU2ltcGxlRWRp
dENvbW1hbmQgew0KK2NsYXNzIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQgOiBwdWJsaWMgU2lt
cGxlRWRpdENvbW1hbmQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZD4gY3JlYXRlKFBh
c3NSZWZQdHI8VGV4dD4gbm9kZSwgaW50IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0KQ0KICAg
ICB7DQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuaAkocmV2aXNpb24gMzgz
MzQpDQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgJKHdvcmtpbmcgY29w
eSkNCkBAIC0yNywxMCArMjcsMTEgQEANCiAjZGVmaW5lIEluc2VydFRleHRDb21tYW5kX2gNCiAN
CiAjaW5jbHVkZSAiQ29tcG9zaXRlRWRpdENvbW1hbmQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgSW5zZXJ0VGV4
dENvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgew0KK2NsYXNzIEluc2VydFRl
eHRDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc2VydFRleHRD
b21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQ0KICAgICB7DQpJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaAkocmV2aXNp
b24gMzgzMzQpDQorKysgV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21t
YW5kLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMCArMjcsMTEgQEANCiAjZGVmaW5lIE1lcmdl
SWRlbnRpY2FsRWxlbWVudHNDb21tYW5kX2gNCiANCiAjaW5jbHVkZSAiRWRpdENvbW1hbmQuaCIN
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7
DQogDQotY2xhc3MgTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQgOiBwdWJsaWMgU2ltcGxl
RWRpdENvbW1hbmQgew0KK2NsYXNzIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kIDogcHVi
bGljIFNpbXBsZUVkaXRDb21tYW5kLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJs
aWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5k
PiBjcmVhdGUoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50MSwgUGFzc1JlZlB0cjxFbGVtZW50
PiBlbGVtZW50MikNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5k
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjcsMTAgKzI3LDExIEBADQogI2RlZmluZSBUeXBpbmdDb21tYW5kX2gNCiAN
CiAjaW5jbHVkZSAiQ29tcG9zaXRlRWRpdENvbW1hbmQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgVHlwaW5nQ29t
bWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7DQorY2xhc3MgVHlwaW5nQ29tbWFu
ZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogcHVibGljOg0KICAgICBlbnVtIEVUeXBpbmdDb21tYW5kIHsgDQogICAgICAgICBEZWxl
dGVTZWxlY3Rpb24sDQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw2ICsyOSw3IEBADQogI2luY2x1ZGUgIkludFJlY3Qu
aCINCiAjaW5jbHVkZSAiU2VsZWN0aW9uLmgiDQogI2luY2x1ZGUgIlJhbmdlLmgiDQorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPg0K
IA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCkBAIC0zOCw3ICszOSw3IEBADQogY2xhc3MgUmVuZGVy
T2JqZWN0Ow0KIGNsYXNzIFZpc2libGVQb3NpdGlvbjsNCiANCi1jbGFzcyBTZWxlY3Rpb25Db250
cm9sbGVyIDogTm9uY29weWFibGUgew0KK2NsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIgOiBOb25j
b3B5YWJsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBlbnVt
IEVBbHRlcmF0aW9uIHsgTU9WRSwgRVhURU5EIH07DQogICAgIGVudW0gRURpcmVjdGlvbiB7IEZP
UldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCB9Ow0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9E
ZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2VkaXRp
bmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjcsMTIgKzI3LDEzIEBADQogI2RlZmluZSBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kX2gN
CiANCiAjaW5jbHVkZSAiRWRpdENvbW1hbmQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogY2xhc3MgVGV4dDsNCiANCi1jbGFz
cyBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21tYW5kIHsN
CitjbGFzcyBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21t
YW5kLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPFRl
eHQ+IG5vZGUsIGludCBvZmZzZXQsIGludCBjb3VudCkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZWRp
dGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9l
ZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTAgKzI3
LDExIEBADQogI2RlZmluZSBGb3JtYXRCbG9ja0NvbW1hbmRfaA0KIA0KICNpbmNsdWRlICJDb21w
b3NpdGVFZGl0Q29tbWFuZC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBGb3JtYXRCbG9ja0NvbW1hbmQgOiBwdWJs
aWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgew0KK2NsYXNzIEZvcm1hdEJsb2NrQ29tbWFuZCA6IHB1
YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
cHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtYXRCbG9ja0NvbW1hbmQ+IGNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGFnTmFtZSkNCiAgICAgew0KSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjcsMTMgKzI3LDE0IEBADQogI2RlZmluZSBBcHBseVN0eWxlQ29tbWFuZF9oDQogDQogI2luY2x1
ZGUgIkNvbXBvc2l0ZUVkaXRDb21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KIGNsYXNzIEhUTUxFbGVtZW50Ow0KIGNs
YXNzIFN0eWxlQ2hhbmdlOw0KIA0KLWNsYXNzIEFwcGx5U3R5bGVDb21tYW5kIDogcHVibGljIENv
bXBvc2l0ZUVkaXRDb21tYW5kIHsNCitjbGFzcyBBcHBseVN0eWxlQ29tbWFuZCA6IHB1YmxpYyBD
b21wb3NpdGVFZGl0Q29tbWFuZCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGlj
Og0KICAgICBlbnVtIEVQcm9wZXJ0eUxldmVsIHsgUHJvcGVydHlEZWZhdWx0LCBGb3JjZUJsb2Nr
UHJvcGVydGllcyB9Ow0KIA0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29t
bWFuZC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21t
YW5kLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2Rl
Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTIgKzI3LDEzIEBADQogI2RlZmluZSBT
cGxpdFRleHROb2RlQ29tbWFuZF9oDQogDQogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiDQorI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0K
IGNsYXNzIFRleHQ7DQogDQotY2xhc3MgU3BsaXRUZXh0Tm9kZUNvbW1hbmQgOiBwdWJsaWMgU2lt
cGxlRWRpdENvbW1hbmQgew0KK2NsYXNzIFNwbGl0VGV4dE5vZGVDb21tYW5kIDogcHVibGljIFNp
bXBsZUVkaXRDb21tYW5kLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwbGl0VGV4dE5vZGVDb21tYW5kPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxUZXh0PiBub2RlLCBpbnQgb2Zmc2V0KQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9l
ZGl0aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBX
ZWJDb3JlL2VkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0yNywxMiArMjcsMTMgQEANCiAjZGVmaW5lIFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZF9o
DQogDQogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KIGNsYXNzIENTU1N0eWxlRGVjbGFy
YXRpb247DQogDQotY2xhc3MgUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kIDogcHVibGljIFNpbXBs
ZUVkaXRDb21tYW5kIHsNCitjbGFzcyBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQgOiBwdWJsaWMg
U2ltcGxlRWRpdENvbW1hbmQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoN
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kPiBjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgaW50IHByb3Bl
cnR5KQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMiArMjcsMTMgQEANCiAjZGVm
aW5lIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kX2gNCiANCiAjaW5jbHVkZSAiQ29tcG9zaXRlRWRp
dENvbW1hbmQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7DQogDQogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsNCiANCi1jbGFzcyBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7DQorY2xh
c3MgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQs
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQs
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQsDQogICAgICAgICBib29sIHNl
bGVjdFJlcGxhY2VtZW50ID0gdHJ1ZSwgYm9vbCBzbWFydFJlcGxhY2UgPSBmYWxzZSwgYm9vbCBt
YXRjaFN0eWxlID0gZmFsc2UsIGJvb2wgcHJldmVudE5lc3RpbmcgPSB0cnVlLCBib29sIG1vdmlu
Z1BhcmFncmFwaCA9IGZhbHNlLA0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJl
c2VydmluZ0NoaWxkcmVuQ29tbWFuZC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9lZGl0aW5n
L1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTAgKzI3LDExIEBADQogI2RlZmluZSBSZW1vdmVOb2Rl
UHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZF9oDQogDQogI2luY2x1ZGUgIkNvbXBvc2l0ZUVkaXRD
b21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNl
IFdlYkNvcmUgew0KIA0KLWNsYXNzIFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5k
IDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsNCitjbGFzcyBSZW1vdmVOb2RlUHJlc2Vy
dmluZ0NoaWxkcmVuQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCwgcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
ZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZD4gY3JlYXRlKFBhc3NSZWZQdHI8Tm9k
ZT4gbm9kZSkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRl
Q29tbWFuZC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1
dGVDb21tYW5kLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZWRpdGluZy9TZXROb2Rl
QXR0cmlidXRlQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjgsMTAgKzI4LDExIEBADQog
DQogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiDQogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIN
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7
DQogDQotY2xhc3MgU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQgOiBwdWJsaWMgU2ltcGxlRWRpdENv
bW1hbmQgew0KK2NsYXNzIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kIDogcHVibGljIFNpbXBsZUVk
aXRDb21tYW5kLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0
cjxFbGVtZW50PiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvUmVt
b3ZlTm9kZUF0dHJpYnV0ZUNvbW1hbmQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVOb2RlQXR0cmlidXRlQ29tbWFuZC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUF0dHJpYnV0ZUNvbW1hbmQuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTI4LDEwICsyOCwxMSBAQA0KIA0KICNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIg0KICNpbmNs
dWRlICJRdWFsaWZpZWROYW1lLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQog
DQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIFJlbW92ZU5vZGVBdHRyaWJ1dGVDb21t
YW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21tYW5kIHsNCitjbGFzcyBSZW1vdmVOb2RlQXR0cmli
dXRlQ29tbWFuZCA6IHB1YmxpYyBTaW1wbGVFZGl0Q29tbWFuZCwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW1vdmVOb2RlQXR0
cmlidXRlQ29tbWFuZD4gY3JlYXRlKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L1NwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnRDb21tYW5kLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29udGFp
bmluZ0VsZW1lbnRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMCArMjcsMTEgQEAN
CiAjZGVmaW5lIFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmRfaA0KIA0KICNp
bmNsdWRlICJDb21wb3NpdGVFZGl0Q29tbWFuZC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBTcGxpdFRleHROb2Rl
Q29udGFpbmluZ0VsZW1lbnRDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsN
CitjbGFzcyBTcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnRDb21tYW5kIDogcHVibGljIENv
bXBvc2l0ZUVkaXRDb21tYW5kLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6
DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENv
bW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPFRleHQ+IG5vZGUsIGludCBvZmZzZXQpDQogICAgIHsN
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQu
aAkod29ya2luZyBjb3B5KQ0KQEAgLTI3LDEwICsyNywxMSBAQA0KICNkZWZpbmUgSW5zZXJ0Tm9k
ZUJlZm9yZUNvbW1hbmRfaA0KIA0KICNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIg0KKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFz
cyBJbnNlcnROb2RlQmVmb3JlQ29tbWFuZCA6IHB1YmxpYyBTaW1wbGVFZGl0Q29tbWFuZCB7DQor
Y2xhc3MgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQgOiBwdWJsaWMgU2ltcGxlRWRpdENvbW1hbmQs
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPE5vZGU+IGNo
aWxkVG9JbnNlcnQsIFBhc3NSZWZQdHI8Tm9kZT4gY2hpbGRUb0luc2VydEJlZm9yZSkNCiAgICAg
ew0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjcsMTAgKzI3LDExIEBADQogI2RlZmluZSBJbnNlcnRMaXN0Q29tbWFuZF9oDQogDQog
I2luY2x1ZGUgIkNvbXBvc2l0ZUVkaXRDb21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxs
b2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIEluc2VydExpc3RD
b21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsNCitjbGFzcyBJbnNlcnRMaXN0
Q29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogcHVibGljOg0KICAgICBlbnVtIFR5cGUgeyBPcmRlcmVkTGlzdCwgVW5vcmRl
cmVkTGlzdCB9Ow0KIA0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmgJKHJl
dmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMjcsMTAgKzI3LDExIEBADQogI2RlZmluZSBSZW1vdmVOb2RlQ29t
bWFuZF9oDQogDQogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0
QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIFJlbW92ZU5v
ZGVDb21tYW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21tYW5kIHsNCitjbGFzcyBSZW1vdmVOb2Rl
Q29tbWFuZCA6IHB1YmxpYyBTaW1wbGVFZGl0Q29tbWFuZCwgcHVibGljIFdURjo6RmFzdEFsbG9j
QmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW1vdmVOb2RlQ29tbWFu
ZD4gY3JlYXRlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBX
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjcsNiArMjcsNyBAQA0KICNkZWZpbmUgRGVsZXRlQnV0dG9uQ29udHJvbGxlcl9oDQogDQog
I2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbi5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
Pg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCkBAIC0zNiw3ICszNyw3IEBADQogY2xhc3Mg
UmVuZGVyT2JqZWN0Ow0KIGNsYXNzIFNlbGVjdGlvbjsNCiANCi1jbGFzcyBEZWxldGVCdXR0b25D
b250cm9sbGVyIHsNCitjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyIDogcHVibGljIFdURjo6
RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBEZWxldGVCdXR0b25Db250cm9sbGVyKEZy
YW1lKik7DQogDQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFu
Q29tbWFuZC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2VkaXRpbmcv
V3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywx
MCArMjcsMTEgQEANCiAjZGVmaW5lIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZF9oDQog
DQogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIFdyYXBDb250ZW50c0luRHVt
bXlTcGFuQ29tbWFuZCA6IHB1YmxpYyBTaW1wbGVFZGl0Q29tbWFuZCB7DQorY2xhc3MgV3JhcENv
bnRlbnRzSW5EdW1teVNwYW5Db21tYW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21tYW5kLCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZD4gY3JlYXRlKFBhc3NSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudCkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJl
YWtDb21tYW5kLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
TGluZUJyZWFrQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTAgKzI3LDExIEBADQog
I2RlZmluZSBJbnNlcnRMaW5lQnJlYWtDb21tYW5kX2gNCiANCiAjaW5jbHVkZSAiQ29tcG9zaXRl
RWRpdENvbW1hbmQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1l
c3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZCA6IHB1Ymxp
YyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7DQorY2xhc3MgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZCA6
IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNlcnRMaW5lQnJlYWtDb21tYW5k
PiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9lZGl0
aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2VkaXRpbmcv
Q3JlYXRlTGlua0NvbW1hbmQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9lZGl0aW5n
L0NyZWF0ZUxpbmtDb21tYW5kLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMCArMjcsMTEgQEAN
CiAjZGVmaW5lIENyZWF0ZUxpbmtDb21tYW5kX2gNCiANCiAjaW5jbHVkZSAiQ29tcG9zaXRlRWRp
dENvbW1hbmQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7DQogDQotY2xhc3MgQ3JlYXRlTGlua0NvbW1hbmQgOiBwdWJsaWMgQ29tcG9z
aXRlRWRpdENvbW1hbmQgew0KK2NsYXNzIENyZWF0ZUxpbmtDb21tYW5kIDogcHVibGljIENvbXBv
c2l0ZUVkaXRDb21tYW5kLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENyZWF0ZUxpbmtDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGxpbmtVUkwpDQogICAgIHsNCkluZGV4OiBXZWJDb3Jl
L2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI3
LDEwICsyNywxMSBAQA0KICNkZWZpbmUgSW5kZW50T3V0ZGVudENvbW1hbmRfaA0KIA0KICNpbmNs
dWRlICJDb21wb3NpdGVFZGl0Q29tbWFuZC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBJbmRlbnRPdXRkZW50Q29t
bWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7DQorY2xhc3MgSW5kZW50T3V0ZGVu
dENvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQsIHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgZW51bSBFSW5kZW50VHlwZSB7IEluZGVudCwgT3V0
ZGVudCB9Ow0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmRlbnRPdXRkZW50Q29tbWFuZD4gY3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCwgRUluZGVudFR5cGUgdHlwZSwgaW50IG1hcmdpbkluUGl4
ZWxzID0gMCkNCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI0LDEyICsyNCwxMyBAQA0K
ICNkZWZpbmUgQ1NTUHJvcGVydHlfaA0KIA0KICNpbmNsdWRlICJDU1NWYWx1ZS5oIg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNs
YXNzIENTU1Byb3BlcnR5IHsNCitjbGFzcyBDU1NQcm9wZXJ0eSA6IHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgQ1NTUHJvcGVydHkoaW50IHByb3BJRCwgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIGludCBzaG9ydGhh
bmRJRCA9IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSkNCiAgICAgICAgIDogbV9pZChwcm9wSUQp
DQpJbmRleDogV2ViQ29yZS9jc3MvRm9udFZhbHVlLmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L2Nzcy9Gb250VmFsdWUuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3MvRm9udFZh
bHVlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMiw2ICsyMiw3IEBADQogI2RlZmluZSBGb250VmFs
dWVfaA0KIA0KICNpbmNsdWRlICJDU1NWYWx1ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+DQogDQpAQCAtMzAsNyArMzEsNyBAQA0KIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOw0K
IGNsYXNzIENTU1ZhbHVlTGlzdDsNCiANCi1jbGFzcyBGb250VmFsdWUgOiBwdWJsaWMgQ1NTVmFs
dWUgew0KK2NsYXNzIEZvbnRWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSwgcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb250VmFsdWU+
IGNyZWF0ZSgpDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTg4LDYgKzg4LDcgQEANCiAjaW5jbHVkZSAiV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuaCINCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCINCiAjaW5jbHVkZSAibG9hZGVyLmgiDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4N
CiANCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQ0KQEAgLTMyNCw3ICszMjUsNyBAQA0K
ICAgICByZXR1cm47IFwNCiB9DQogDQotY2xhc3MgQ1NTUnVsZVNldCB7DQorY2xhc3MgQ1NTUnVs
ZVNldCA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgQ1NTUnVs
ZVNldCgpOw0KICAgICB+Q1NTUnVsZVNldCgpOw0KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhZ2VS
dWxlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5oCShyZXZpc2lv
biAzODMzNCkNCisrKyBXZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjMsNiArMjMsNyBAQA0KICNkZWZpbmUgQ1NTUGFnZVJ1bGVfaA0KIA0KICNpbmNsdWRlICJD
U1NSdWxlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCiANCkBAIC0zMCw3ICsz
MSw3IEBADQogDQogY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247DQogDQotY2xhc3Mg
Q1NTUGFnZVJ1bGUgOiBwdWJsaWMgQ1NTUnVsZSB7DQorY2xhc3MgQ1NTUGFnZVJ1bGUgOiBwdWJs
aWMgQ1NTUnVsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NQYWdlUnVsZT4gY3JlYXRlKENTU1N0eWxlU2hlZXQqIHBhcmVu
dCkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjgs
NiArMjgsNyBAQA0KIA0KICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCINCiAjaW5jbHVkZSAiU3Ry
aW5nSGFzaC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogDQpAQCAtNDIsNyArNDMs
NyBAQA0KIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsNCiBjbGFzcyBTdHJpbmc7DQogDQotY2xhc3Mg
Q1NTRm9udFNlbGVjdG9yIDogcHVibGljIEZvbnRTZWxlY3RvciB7DQorY2xhc3MgQ1NTRm9udFNl
bGVjdG9yIDogcHVibGljIEZvbnRTZWxlY3RvciwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NGb250U2VsZWN0b3I+IGNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NJbmhl
cml0ZWRWYWx1ZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFs
dWUuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUu
aAkod29ya2luZyBjb3B5KQ0KQEAgLTIyLDExICsyMiwxMiBAQA0KICNkZWZpbmUgQ1NTSW5oZXJp
dGVkVmFsdWVfaA0KIA0KICNpbmNsdWRlICJDU1NWYWx1ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KIA0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBDU1NJbmhlcml0ZWRWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZSB7DQorY2xhc3MgQ1NTSW5oZXJpdGVkVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUsIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NT
SW5oZXJpdGVkVmFsdWU+IGNyZWF0ZSgpDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXhwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTMxLDEyICszMSwxMyBAQA0KICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIN
CiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCINCiAjaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIN
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
Pg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiBjbGFzcyBDU1NQYXJzZXJWYWx1ZUxpc3Q7DQog
DQotY2xhc3MgTWVkaWFRdWVyeUV4cA0KK2NsYXNzIE1lZGlhUXVlcnlFeHAgOiBwdWJsaWMgV1RG
OjpGYXN0QWxsb2NCYXNlDQogew0KIHB1YmxpYzoNCiAgICAgTWVkaWFRdWVyeUV4cChjb25zdCBB
dG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSwgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZXMpOw0K
SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oCShyZXZpc2lvbiAzODMzNCkNCisr
KyBXZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
MjYsNiArMjYsNyBAQA0KICNpZm5kZWYgQ1NTU2VnbWVudGVkRm9udEZhY2VfaA0KICNkZWZpbmUg
Q1NTU2VnbWVudGVkRm9udEZhY2VfaA0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
Pg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
Pg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KQEAgLTQwLDcgKzQxLDcgQEANCiBjbGFz
cyBGb250RGVzY3JpcHRpb247DQogY2xhc3MgU2VnbWVudGVkRm9udERhdGE7DQogDQotY2xhc3Mg
Q1NTU2VnbWVudGVkRm9udEZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NTZWdtZW50ZWRGb250
RmFjZT4gew0KK2NsYXNzIENTU1NlZ21lbnRlZEZvbnRGYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8
Q1NTU2VnbWVudGVkRm9udEZhY2U+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJs
aWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiBjcmVhdGUo
Q1NTRm9udFNlbGVjdG9yKiBzZWxlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IENTU1NlZ21l
bnRlZEZvbnRGYWNlKHNlbGVjdG9yKSk7IH0NCiAgICAgfkNTU1NlZ21lbnRlZEZvbnRGYWNlKCk7
DQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMyw2ICsyMyw3IEBADQogDQog
I2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiDQogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCINCisjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQpA
QCAtMzQsNyArMzUsNyBAQA0KIA0KIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7DQogDQotY2xh
c3MgQ1NTU3R5bGVTaGVldCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsNCitjbGFzcyBDU1NTdHlsZVNo
ZWV0IDogcHVibGljIFN0eWxlU2hlZXQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1
YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKCkNCiAg
ICAgew0KSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvY3NzL01lZGlhUXVlcnkuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksMTIgKzI5LDEzIEBADQogI2RlZmlu
ZSBNZWRpYVF1ZXJ5X2gNCiANCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KIA0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsNCiBjbGFzcyBNZWRpYVF1ZXJ5RXhwOw0KIA0KLWNsYXNzIE1lZGlh
UXVlcnkNCitjbGFzcyBNZWRpYVF1ZXJ5IDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZQ0KIHsN
CiBwdWJsaWM6DQogICAgIGVudW0gUmVzdHJpY3RvciB7DQpJbmRleDogV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQogI2luY2x1ZGUgIk1lZGlhUXVl
cnlFeHAuaCINCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCINCiAjaW5jbHVkZSAiU3RyaW5nSGFz
aC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+DQpAQCAtNjMsNyArNjQsNyBAQA0KIGNsYXNzIFN0eWxlZEVsZW1lbnQ7DQogY2xhc3MgV2Vi
S2l0Q1NTS2V5ZnJhbWVzUnVsZTsNCiANCi1jbGFzcyBNZWRpYVF1ZXJ5UmVzdWx0IHsNCitjbGFz
cyBNZWRpYVF1ZXJ5UmVzdWx0IDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGlj
Og0KICAgICBNZWRpYVF1ZXJ5UmVzdWx0KGNvbnN0IE1lZGlhUXVlcnlFeHAmIGV4cHIsIGJvb2wg
cmVzdWx0KQ0KICAgICAgICAgOiBtX2V4cHJlc3Npb24oZXhwcikNCkBAIC03Niw3ICs3Nyw3IEBA
DQogfTsNCiANCiAgICAgLy8gVGhpcyBjbGFzcyBzZWxlY3RzIGEgUmVuZGVyU3R5bGUgZm9yIGEg
Z2l2ZW4gZWxlbWVudCBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gb2Ygc3R5bGVzaGVldHMuDQotICAg
IGNsYXNzIENTU1N0eWxlU2VsZWN0b3IgOiBOb25jb3B5YWJsZSB7DQorICAgIGNsYXNzIENTU1N0
eWxlU2VsZWN0b3IgOiBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHB1YmxpYzoNCiAgICAgICAgIENTU1N0eWxlU2VsZWN0b3IoRG9jdW1lbnQqLCBjb25zdCBT
dHJpbmcmIHVzZXJTdHlsZVNoZWV0LCBTdHlsZVNoZWV0TGlzdCosIENTU1N0eWxlU2hlZXQqLCBi
b29sIHN0cmljdFBhcnNpbmcsIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKTsNCiAgICAg
ICAgIH5DU1NTdHlsZVNlbGVjdG9yKCk7DQpAQCAtMjc1LDcgKzI3Niw3IEBADQogICAgICAgICBI
YXNoTWFwPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiA+IG1fcmVzb2x2ZWRWYXJpYWJsZXNEZWNsYXJhdGlvbnM7DQogICAgIH07
DQogDQotICAgIGNsYXNzIENTU1J1bGVEYXRhIHsNCisgICAgY2xhc3MgQ1NTUnVsZURhdGEgOiBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgQ1NTUnVs
ZURhdGEodW5zaWduZWQgcG9zLCBDU1NTdHlsZVJ1bGUqIHIsIENTU1NlbGVjdG9yKiBzZWwsIENT
U1J1bGVEYXRhKiBwcmV2ID0gMCkNCiAgICAgICAgICAgICA6IG1fcG9zaXRpb24ocG9zKQ0KQEAg
LTMwMSw3ICszMDIsNyBAQA0KICAgICAgICAgQ1NTUnVsZURhdGEqIG1fbmV4dDsNCiAgICAgfTsN
CiANCi0gICAgY2xhc3MgQ1NTUnVsZURhdGFMaXN0IHsNCisgICAgY2xhc3MgQ1NTUnVsZURhdGFM
aXN0IDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAg
IENTU1J1bGVEYXRhTGlzdCh1bnNpZ25lZCBwb3MsIENTU1N0eWxlUnVsZSogcnVsZSwgQ1NTU2Vs
ZWN0b3IqIHNlbCkNCiAgICAgICAgICAgICA6IG1fZmlyc3QobmV3IENTU1J1bGVEYXRhKHBvcywg
cnVsZSwgc2VsKSkNCkluZGV4OiBXZWJDb3JlL2Nzcy9Db3VudGVyLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2Nzcy9Db3VudGVyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3Nz
L0NvdW50ZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIzLDEwICsyMywxMSBAQA0KIA0KICNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIg0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0K
KyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsN
CiANCi1jbGFzcyBDb3VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Q291bnRlcj4gew0KK2NsYXNz
IENvdW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDb3VudGVyPiwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb3VudGVyPiBjcmVh
dGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllciwgUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBzZXBhcmF0b3IpDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQ0KQEAgLTIzLDYgKzIzLDcgQEAN
CiANCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIg0KICNpbmNsdWRlICJOb2RlLmgi
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUg
ew0KIA0KQEAgLTMwLDcgKzMxLDcgQEANCiANCiBlbnVtIEVVcGRhdGVMYXlvdXQgeyBEb05vdFVw
ZGF0ZUxheW91dCA9IGZhbHNlLCBVcGRhdGVMYXlvdXQgPSB0cnVlIH07DQogDQotY2xhc3MgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uIDogcHVibGljIENTU1N0eWxlRGVjbGFyYXRpb24gew0K
K2NsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NTdHlsZURlY2xh
cmF0aW9uLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIGZyaWVu
ZCBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZShQ
YXNzUmVmUHRyPE5vZGU+KTsNCiAgICAgdmlydHVhbCB+Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uKCk7DQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29y
ZS9jc3MvQ1NTTWVkaWFSdWxlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMyArMjcsMTQgQEAN
CiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCINCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiDQogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiIC8vIG5lZWRlZCBzbyBiaW5kaW5ncyB3aWxsIGNvbXBp
bGUNCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7DQogDQogY2xhc3MgQ1NTUnVsZUxpc3Q7DQogY2xhc3MgTWVkaWFMaXN0Ow0KIA0KLWNsYXNz
IENTU01lZGlhUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsNCitjbGFzcyBDU1NNZWRpYVJ1bGUgOiBw
dWJsaWMgQ1NTUnVsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NNZWRpYVJ1bGU+IGNyZWF0ZShDU1NTdHlsZVNoZWV0KiBw
YXJlbnQsIFBhc3NSZWZQdHI8TWVkaWFMaXN0PiBtZWRpYSwgUGFzc1JlZlB0cjxDU1NSdWxlTGlz
dD4gcnVsZXMpDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIyLDYg
KzIyLDcgQEANCiAjZGVmaW5lIENTU1ZhbHVlTGlzdF9oDQogDQogI2luY2x1ZGUgIkNTU1ZhbHVl
LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4NCiANCkBAIC0yOSw3ICszMCw3IEBA
DQogDQogY2xhc3MgQ1NTUGFyc2VyVmFsdWVMaXN0Ow0KIA0KLWNsYXNzIENTU1ZhbHVlTGlzdCA6
IHB1YmxpYyBDU1NWYWx1ZSB7DQorY2xhc3MgQ1NTVmFsdWVMaXN0IDogcHVibGljIENTU1ZhbHVl
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENTU1ZhbHVlTGlzdD4gY3JlYXRlQ29tbWFTZXBhcmF0ZWQoKQ0KICAgICB7DQpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyVmFsdWVzLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMiw2ICsyMiw3IEBADQogI2Rl
ZmluZSBDU1NQYXJzZXJWYWx1ZXNfaA0KIA0KICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCINCisj
aW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQog
DQpAQCAtNjAsNyArNjEsNyBAQA0KICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjcmVhdGVDU1NW
YWx1ZSgpOw0KIH07DQogDQotY2xhc3MgQ1NTUGFyc2VyVmFsdWVMaXN0IHsNCitjbGFzcyBDU1NQ
YXJzZXJWYWx1ZUxpc3QgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQog
ICAgIENTU1BhcnNlclZhbHVlTGlzdCgpDQogICAgICAgICA6IG1fY3VycmVudCgwKQ0KQEAgLTg4
LDcgKzg5LDcgQEANCiAgICAgdW5zaWduZWQgbV92YXJpYWJsZXNDb3VudDsNCiB9Ow0KIA0KLXN0
cnVjdCBDU1NQYXJzZXJGdW5jdGlvbiB7DQorc3RydWN0IENTU1BhcnNlckZ1bmN0aW9uIDogcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIENTU1BhcnNlclN0cmluZyBuYW1lOw0KICAg
ICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3M7DQogDQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ2hh
cnNldFJ1bGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxlLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxlLmgJKHdvcmtp
bmcgY29weSkNCkBAIC0yNCwxMCArMjQsMTEgQEANCiANCiAjaW5jbHVkZSAiQ1NTUnVsZS5oIg0K
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBDU1NDaGFyc2V0UnVsZSA6
IHB1YmxpYyBDU1NSdWxlIHsNCitjbGFzcyBDU1NDaGFyc2V0UnVsZSA6IHB1YmxpYyBDU1NSdWxl
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENTU0NoYXJzZXRSdWxlPiBjcmVhdGUoQ1NTU3R5bGVTaGVldCogcGFyZW50LCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nKQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUmVmbGVj
dFZhbHVlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAko
cmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgJKHdvcmtp
bmcgY29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogDQogI2luY2x1ZGUgIkNTU1JlZmxlY3Rpb25E
aXJlY3Rpb24uaCINCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPg0KIA0KQEAgLTM1LDcgKzM2LDcgQEANCiANCiBjbGFzcyBDU1NQcmltaXRpdmVW
YWx1ZTsNCiANCi1jbGFzcyBDU1NSZWZsZWN0VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgew0KK2Ns
YXNzIENTU1JlZmxlY3RWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NSZWZsZWN0VmFs
dWU+IGNyZWF0ZShDU1NSZWZsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwNCiAgICAgICAgIFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG9mZnNldCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
bWFzaykNCkluZGV4OiBXZWJDb3JlL2Nzcy9QYWlyLmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L2Nzcy9QYWlyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL1BhaXIuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTIzLDYgKzIzLDcgQEANCiAjaWZuZGVmIFBhaXJfaA0KICNkZWZpbmUg
UGFpcl9oDQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+DQogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiDQogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQpAQCAtMzMsNyArMzQsNyBAQA0KIC8vIGFuZCBib3JkZXIt
c3BhY2luZyAoYWxsIG9mIHdoaWNoIGFyZSBzcGFjZS1zZXBhcmF0ZWQgc2V0cyBvZiB0d28gdmFs
dWVzKS4gIEF0IHRoZSBtb21lbnQgd2UgYXJlIG9ubHkgdXNpbmcgaXQgZm9yDQogLy8gYm9yZGVy
LXJhZGl1cyBhbmQgYmFja2dyb3VuZC1zaXplLCBidXQgKEZJWE1FKSBib3JkZXItc3BhY2luZyBh
bmQgYmFja2dyb3VuZC1wb3NpdGlvbiBjb3VsZCBiZSBjb252ZXJ0ZWQgb3ZlciB0byB1c2UNCiAv
LyBpdCAoZWxpbWluYXRpbmcgc29tZSBleHRyYSAtd2Via2l0LSBpbnRlcm5hbCBwcm9wZXJ0aWVz
KS4NCi1jbGFzcyBQYWlyIDogcHVibGljIFJlZkNvdW50ZWQ8UGFpcj4gew0KK2NsYXNzIFBhaXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxQYWlyPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
cHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQYWlyPiBjcmVhdGUoKQ0KICAgICB7DQpJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw3IEBADQogI2RlZmluZSBDU1NG
b250RmFjZV9oDQogDQogI2luY2x1ZGUgIkZvbnRUcmFpdHNNYXNrLmgiDQorI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+DQogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQpAQCAtNDAs
NyArNDEsNyBAQA0KIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsNCiBjbGFzcyBTaW1wbGVGb250RGF0
YTsNCiANCi1jbGFzcyBDU1NGb250RmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0ZvbnRGYWNl
PiB7DQorY2xhc3MgQ1NTRm9udEZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NGb250RmFjZT4s
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q1NTRm9udEZhY2U+IGNyZWF0ZShGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgQ1NTRm9udEZhY2UodHJhaXRzTWFzaykpOyB9DQogICAgIH5DU1NG
b250RmFjZSgpOw0KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCShyZXZpc2lvbiAzODMz
NCkNCisrKyBXZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjksNiArMjksNyBAQA0KICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCINCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VDbGllbnQuaCINCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4NCiANCiAjaWYgRU5BQkxFKFNWR19GT05UUykNCkBAIC00Myw3ICs0NCw3IEBADQogY2xh
c3MgRm9udERlc2NyaXB0aW9uOw0KIGNsYXNzIFNpbXBsZUZvbnREYXRhOw0KIA0KLWNsYXNzIENT
U0ZvbnRGYWNlU291cmNlIDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsNCitjbGFzcyBD
U1NGb250RmFjZVNvdXJjZSA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCwgcHVibGljIFdU
Rjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBDU1NGb250RmFjZVNvdXJjZShjb25z
dCBTdHJpbmcmLCBDYWNoZWRGb250KiA9IDApOw0KICAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNv
dXJjZSgpOw0KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBX
ZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjgsMTIgKzI4
LDEzIEBADQogDQogI2luY2x1ZGUgIkNTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCINCiAjaW5jbHVk
ZSAiSFRNTENhbnZhc0VsZW1lbnQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4N
CiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogY2xhc3MgRG9jdW1lbnQ7DQogDQotY2xhc3Mg
Q1NTQ2FudmFzVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSwgcHJpdmF0ZSBD
YW52YXNPYnNlcnZlciB7DQorY2xhc3MgQ1NTQ2FudmFzVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZSwgcHJpdmF0ZSBDYW52YXNPYnNlcnZlciwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NDYW52YXNWYWx1
ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENTU0NhbnZhc1ZhbHVlKTsgfQ0KICAg
ICB2aXJ0dWFsIH5DU1NDYW52YXNWYWx1ZSgpOw0KSW5kZXg6IFdlYkNvcmUvY3NzL1NoYWRvd1Zh
bHVlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5oCShyZXZpc2lv
biAzODMzNCkNCisrKyBXZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjIsNiArMjIsNyBAQA0KICNkZWZpbmUgU2hhZG93VmFsdWVfaA0KIA0KICNpbmNsdWRlICJD
U1NWYWx1ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogDQpAQCAtMzAsNyAr
MzEsNyBAQA0KIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOw0KIA0KIC8vIFVzZWQgZm9yIHRleHQt
c2hhZG93IGFuZCBib3gtc2hhZG93DQotY2xhc3MgU2hhZG93VmFsdWUgOiBwdWJsaWMgQ1NTVmFs
dWUgew0KK2NsYXNzIFNoYWRvd1ZhbHVlIDogcHVibGljIENTU1ZhbHVlLCBwdWJsaWMgV1RGOjpG
YXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRvd1Zh
bHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geCwNCiAgICAgICAgIFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHksDQpJbmRleDogV2ViQ29yZS9jc3MvU3R5bGVT
aGVldExpc3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgJKHdvcmtp
bmcgY29weSkNCkBAIC0yMSw2ICsyMSw3IEBADQogI2lmbmRlZiBTdHlsZVNoZWV0TGlzdF9oDQog
I2RlZmluZSBTdHlsZVNoZWV0TGlzdF9oDQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4NCkBAIC0zNCw3ICszNSw3IEBADQogDQog
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4gU3R5bGVTaGVldFZlY3RvcjsNCiAN
Ci1jbGFzcyBTdHlsZVNoZWV0TGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hlZXRMaXN0
PiB7DQorY2xhc3MgU3R5bGVTaGVldExpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVNoZWV0
TGlzdD4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3R5bGVTaGVldExpc3Q+IGNyZWF0ZShEb2N1bWVudCogZG9jKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgU3R5bGVTaGVldExpc3QoZG9jKSk7IH0NCiAgICAgflN0eWxlU2hlZXRM
aXN0KCk7DQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oCShyZXZpc2lvbiAzODMz
NCkNCisrKyBXZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0yMiw2ICsyMiw3IEBADQogI2RlZmluZSBDU1NCb3JkZXJJbWFnZVZhbHVlX2gNCiANCiAj
aW5jbHVkZSAiQ1NTVmFsdWUuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPg0KIA0K
QEAgLTI5LDcgKzMwLDcgQEANCiANCiBjbGFzcyBSZWN0Ow0KIA0KLWNsYXNzIENTU0JvcmRlcklt
YWdlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgew0KK2NsYXNzIENTU0JvcmRlckltYWdlVmFsdWUg
OiBwdWJsaWMgQ1NTVmFsdWUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoN
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTQm9yZGVySW1hZ2VWYWx1ZT4gY3JlYXRlKFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPFJlY3Q+IHNsaWNlUmVjdCwgaW50IGhv
cml6b250YWxSdWxlLCBpbnQgdmVydGljYWxSdWxlKQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9j
c3MvQ1NTVmFyaWFibGVzRGVjbGFyYXRpb24uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvY3Nz
L0NTU1ZhcmlhYmxlc0RlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUv
Y3NzL0NTU1ZhcmlhYmxlc0RlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw2ICsy
OSw3IEBADQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQogI2luY2x1ZGUgIlN0cmluZ0hh
c2guaCINCiAjaW5jbHVkZSAiU3R5bGVCYXNlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KQEAgLTQxLDcgKzQyLDcgQEANCiBjbGFzcyBD
U1NSdWxlOw0KIGNsYXNzIENTU1ZhbHVlTGlzdDsNCiANCi1jbGFzcyBDU1NWYXJpYWJsZXNEZWNs
YXJhdGlvbiA6IHB1YmxpYyBTdHlsZUJhc2Ugew0KK2NsYXNzIENTU1ZhcmlhYmxlc0RlY2xhcmF0
aW9uIDogcHVibGljIFN0eWxlQmFzZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVi
bGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbj4gY3Jl
YXRlKFN0eWxlQmFzZSogb3duaW5nUnVsZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG5hbWVzLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlQmFzZT4gPiYgdmFsdWVzKQ0KICAgICB7DQpJbmRleDog
V2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Nzcy9D
U1NTdHlsZVJ1bGUuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVS
dWxlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMyw2ICsyMyw3IEBADQogI2RlZmluZSBDU1NTdHls
ZVJ1bGVfaA0KIA0KICNpbmNsdWRlICJDU1NSdWxlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxs
b2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4NCiANCkBAIC0zMSw3ICszMiw3IEBADQogY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb247DQogY2xhc3MgQ1NTU2VsZWN0b3I7DQogDQotY2xhc3MgQ1NTU3R5bGVSdWxlIDog
cHVibGljIENTU1J1bGUgew0KK2NsYXNzIENTU1N0eWxlUnVsZSA6IHB1YmxpYyBDU1NSdWxlLCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1N0eWxlUnVsZT4gY3JlYXRlKENTU1N0eWxlU2hlZXQqIHBhcmVudCkNCiAgICAgew0K
SW5kZXg6IFdlYkNvcmUvY3NzL0NTU05hbWVzcGFjZS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9jc3MvQ1NTTmFtZXNwYWNlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL0NT
U05hbWVzcGFjZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjUsMTAgKzI1LDExIEBADQogI2RlZmlu
ZSBDU1NOYW1lc3BhY2VfaA0KIA0KICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCINCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotICAg
IHN0cnVjdCBDU1NOYW1lc3BhY2Ugew0KKyAgICBzdHJ1Y3QgQ1NTTmFtZXNwYWNlIDogcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgICAgICBBdG9taWNTdHJpbmcgbV9wcmVmaXg7DQog
ICAgICAgICBBdG9taWNTdHJpbmcgbV91cmk7DQogICAgICAgICBDU1NOYW1lc3BhY2UqIG1fcGFy
ZW50Ow0KSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhTGlzdC5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL01l
ZGlhTGlzdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjIsNiArMjIsNyBAQA0KICNkZWZpbmUgTWVk
aWFMaXN0X2gNCiANCiAjaW5jbHVkZSAiU3R5bGVCYXNlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0
QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4NCiANCkBAIC0zNCw3ICszNSw3IEBADQogDQogdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsNCiANCi1jbGFzcyBNZWRpYUxpc3QgOiBwdWJsaWMgU3R5bGVCYXNlIHsNCitjbGFz
cyBNZWRpYUxpc3QgOiBwdWJsaWMgU3R5bGVCYXNlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNl
IHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhTGlzdD4gY3JlYXRlKCkN
CiAgICAgew0KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1J1bGVMaXN0LmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2Nzcy9DU1NSdWxlTGlzdC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3Jl
L2Nzcy9DU1NSdWxlTGlzdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjUsNiArMjUsNyBAQA0KICNk
ZWZpbmUgQ1NTUnVsZUxpc3RfaA0KIA0KICNpbmNsdWRlICJEZXByZWNhdGVkUHRyTGlzdC5oIg0K
KyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+DQpAQCAtMzQsNyArMzUsNyBAQA0KIGNsYXNzIENTU1J1bGU7DQogY2xhc3MgU3R5bGVMaXN0
Ow0KIA0KLWNsYXNzIENTU1J1bGVMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUnVsZUxpc3Q+
IHsNCitjbGFzcyBDU1NSdWxlTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1J1bGVMaXN0Piwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NSdWxlTGlzdD4gY3JlYXRlKFN0eWxlTGlzdCogbGlzdCwgYm9vbCBvbWl0Q2hhcnNl
dFJ1bGVzID0gZmFsc2UpDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkocmV2aXNpb24gMzgz
MzQpDQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI1
LDExICsyNSwxMiBAQA0KICNkZWZpbmUgQ1NTU2VsZWN0b3JfaA0KIA0KICNpbmNsdWRlICJRdWFs
aWZpZWROYW1lLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNw
YWNlIFdlYkNvcmUgew0KIA0KICAgICAvLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzZWxlY3Rv
ciBmb3IgYSBTdHlsZVJ1bGUNCi0gICAgY2xhc3MgQ1NTU2VsZWN0b3Igew0KKyAgICBjbGFzcyBD
U1NTZWxlY3RvciA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQog
ICAgICAgICBDU1NTZWxlY3RvcigpDQogICAgICAgICAgICAgOiBtX3RhZ0hpc3RvcnkoMCkNCklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI4LDYgKzI4LDcgQEAN
CiANCiAjaW5jbHVkZSAiQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIg0KICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4NCiANCkBAIC00OCw3
ICs0OSw3IEBADQogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9jb2xvcjsNCiB9Ow0K
IA0KLWNsYXNzIENTU0dyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZSB7DQorY2xhc3MgQ1NTR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZh
bHVlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU0dyYWRpZW50VmFsdWU+IGNyZWF0ZSgpDQogICAgIHsNCkluZGV4OiBXZWJD
b3JlL2Nzcy9DU1NWYXJpYWJsZXNSdWxlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Nzcy9D
U1NWYXJpYWJsZXNSdWxlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL0NTU1Zh
cmlhYmxlc1J1bGUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI4LDYgKzI4LDcgQEANCiANCiAjaW5j
bHVkZSAiQ1NTUnVsZS5oIg0KICNpbmNsdWRlICJDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbi5oIg0K
KyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KQEAgLTM1LDcgKzM2LDcgQEANCiBjbGFzcyBDU1NT
dHlsZVNoZWV0Ow0KIGNsYXNzIE1lZGlhTGlzdDsNCiANCi1jbGFzcyBDU1NWYXJpYWJsZXNSdWxl
IDogcHVibGljIENTU1J1bGUgew0KK2NsYXNzIENTU1ZhcmlhYmxlc1J1bGUgOiBwdWJsaWMgQ1NT
UnVsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDU1NWYXJpYWJsZXNSdWxlPiBjcmVhdGUoQ1NTU3R5bGVTaGVldCogcGFyZW50
LCBNZWRpYUxpc3QqIG1lZGlhTGlzdCwgYm9vbCB2YXJpYWJsZXNLZXl3b3JkKQ0KICAgICB7DQpJ
bmRleDogV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaAkocmV2aXNpb24gMzgzMzQpDQor
KysgV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgJKHdvcmtpbmcgY29weSkNCkBA
IC0yOSw2ICsyOSw3IEBADQogI2luY2x1ZGUgIkNTU1J1bGUuaCINCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCkBAIC0zNiw3ICszNyw3
IEBADQogDQogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsNCiANCi1jbGFzcyBXZWJLaXRDU1NL
ZXlmcmFtZVJ1bGUgOiBwdWJsaWMgQ1NTUnVsZSB7DQorY2xhc3MgV2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlIDogcHVibGljIENTU1J1bGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1Ymxp
YzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBjcmVhdGUo
KQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZS5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZS5o
CShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURlcGVuZGVudFZh
bHVlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMiArMjcsMTMgQEANCiAjZGVmaW5lIENTU1Zh
cmlhYmxlRGVwZW5kZW50VmFsdWVfaA0KIA0KICNpbmNsdWRlICJDU1NWYWx1ZS5oIg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiBj
bGFzcyBDU1NWYWx1ZUxpc3Q7DQogDQotY2xhc3MgQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZSA6
IHB1YmxpYyBDU1NWYWx1ZSB7DQorY2xhc3MgQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZSA6IHB1
YmxpYyBDU1NWYWx1ZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYXJpYWJsZURlcGVuZGVudFZhbHVlPiBjcmVhdGUoUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdCkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvY3NzL01l
ZGlhUXVlcnlFdmFsdWF0b3IuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV2YWx1YXRvci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksNiArMjksNyBAQA0KICNk
ZWZpbmUgTWVkaWFRdWVyeUV2YWx1YXRvcl9oDQogDQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNv
cmUgew0KIGNsYXNzIENTU1N0eWxlU2VsZWN0b3I7DQpAQCAtNDksNyArNTAsNyBAQA0KICAqIHRo
ZSBkZXZpY2UgY2hhcmFjdGVyaXN0aWNzIGFyZSBub3Qga25vd24uIFRoaXMgY2FuIGJlIHVzZWQg
dG8gcHJ1bmUgdGhlIGxvYWRpbmcNCiAgKiBvZiBzdHlsZXNoZWV0cyB0byBvbmx5IHRob3NlIHdo
aWNoIGFyZSBwcm9iYWJsZSB0byBtYXRjaC4NCiAgKi8NCi1jbGFzcyBNZWRpYVF1ZXJ5RXZhbHVh
dG9yDQorY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvciA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2UNCiB7DQogcHVibGljOg0KICAgICAvKiogQ3JlYXRlcyBldmFsdWF0b3Igd2hpY2ggZXZhbHVh
dGVzIG9ubHkgc2ltcGxlIG1lZGlhIHF1ZXJpZXMNCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9jc3MvQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3Mv
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQ0KQEAgLTI1LDEzICsy
NSwxNCBAQA0KICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIg0KICNpbmNsdWRlICJEZXBy
ZWNhdGVkVmFsdWVMaXN0LmgiDQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KIGNs
YXNzIENTU1Byb3BlcnR5Ow0KIGNsYXNzIE5vZGU7DQogDQotY2xhc3MgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24gOiBwdWJsaWMgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7DQorY2xhc3MgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24gOiBwdWJsaWMgQ1NTU3R5bGVEZWNsYXJhdGlvbiwgcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY3JlYXRlKCkNCiAgICAgew0KSW5kZXg6IFdlYkNv
cmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
Y3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiAr
MjcsNyBAQA0KICNkZWZpbmUgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZV9oDQogDQogI2luY2x1ZGUg
IkNTU1J1bGUuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPg0KICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCINCiANCkBAIC0zOCw3ICsz
OSw3IEBADQogDQogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsNCiANCi1jbGFzcyBXZWJLaXRD
U1NLZXlmcmFtZXNSdWxlIDogcHVibGljIENTU1J1bGUgew0KK2NsYXNzIFdlYktpdENTU0tleWZy
YW1lc1J1bGUgOiBwdWJsaWMgQ1NTUnVsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
cHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZXNSdWxlPiBj
cmVhdGUoKQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgJKHdvcmtp
bmcgY29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogDQogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiDQog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogDQogI2lmIEVOQUJMRShTVkdfRk9O
VFMpDQpAQCAtMzYsNyArMzcsNyBAQA0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFz
cyBDU1NGb250RmFjZVNyY1ZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsNCitjbGFzcyBDU1NGb250
RmFjZVNyY1ZhbHVlIDogcHVibGljIENTU1ZhbHVlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNl
IHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0ZvbnRGYWNlU3JjVmFsdWU+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9j
c3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvY3NzL0NT
U1VuaWNvZGVSYW5nZVZhbHVlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL0NT
U1VuaWNvZGVSYW5nZVZhbHVlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMiArMjcsMTMgQEAN
CiAjZGVmaW5lIENTU1VuaWNvZGVSYW5nZVZhbHVlX2gNCiANCiAjaW5jbHVkZSAiQ1NTVmFsdWUu
aCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPg0KIA0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBDU1NVbmljb2RlUmFuZ2VWYWx1ZSA6IHB1YmxpYyBDU1NW
YWx1ZSB7DQorY2xhc3MgQ1NTVW5pY29kZVJhbmdlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUsIHB1
YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTVW5pY29kZVJhbmdlVmFsdWU+IGNyZWF0ZShVQ2hhcjMyIGZyb20sIFVDaGFyMzIgdG8p
DQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2Nzcy9SZWN0LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL2Nzcy9SZWN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL1JlY3QuaAko
d29ya2luZyBjb3B5KQ0KQEAgLTIyLDYgKzIyLDcgQEANCiAjZGVmaW5lIFJlY3RfaA0KIA0KICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0K
QEAgLTQ5LDcgKzUwLDcgQEANCiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9s
ZWZ0Ow0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBSZWN0IDogcHVibGljIFJlY3RCYXNlLCBwdWJs
aWMgUmVmQ291bnRlZDxSZWN0PiB7DQorICAgIGNsYXNzIFJlY3QgOiBwdWJsaWMgUmVjdEJhc2Us
IHB1YmxpYyBSZWZDb3VudGVkPFJlY3Q+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAg
ICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVjdD4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlY3QpOyB9DQogDQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTSW5p
dGlhbFZhbHVlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUu
aAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgJKHdv
cmtpbmcgY29weSkNCkBAIC0yMiwxMSArMjIsMTIgQEANCiAjZGVmaW5lIENTU0luaXRpYWxWYWx1
ZV9oDQogDQogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogDQogbmFtZXNwYWNlIFdlYkNv
cmUgew0KIA0KLWNsYXNzIENTU0luaXRpYWxWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7DQorY2xh
c3MgQ1NTSW5pdGlhbFZhbHVlIDogcHVibGljIENTU1ZhbHVlLCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0luaXRpYWxWYWx1
ZT4gY3JlYXRlRXhwbGljaXQoKQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTSW1wb3J0
UnVsZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmgJKHdvcmtpbmcgY29w
eSkNCkBAIC0yNywxMyArMjcsMTQgQEANCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUu
aCINCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiDQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUg
ew0KIA0KIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7DQogY2xhc3MgTWVkaWFMaXN0Ow0KIA0K
LWNsYXNzIENTU0ltcG9ydFJ1bGUgOiBwdWJsaWMgQ1NTUnVsZSwgcHJpdmF0ZSBDYWNoZWRSZXNv
dXJjZUNsaWVudCB7DQorY2xhc3MgQ1NTSW1wb3J0UnVsZSA6IHB1YmxpYyBDU1NSdWxlLCBwcml2
YXRlIENhY2hlZFJlc291cmNlQ2xpZW50LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBw
dWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0ltcG9ydFJ1bGU+IGNyZWF0ZShDU1NT
dHlsZVNoZWV0KiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgaHJlZiwgUGFzc1JlZlB0cjxNZWRpYUxp
c3Q+IG1lZGlhKQ0KICAgICB7DQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgJKHJldmlz
aW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgJKHdvcmtpbmcg
Y29weSkNCkBAIC0yMyw2ICsyMyw3IEBADQogI2RlZmluZSBDU1NQcmltaXRpdmVWYWx1ZV9oDQog
DQogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+
DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0K
QEAgLTM2LDcgKzM3LDcgQEANCiANCiBzdHJ1Y3QgTGVuZ3RoOw0KIA0KLWNsYXNzIENTU1ByaW1p
dGl2ZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsNCitjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZSA6
IHB1YmxpYyBDU1NWYWx1ZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0K
ICAgICBlbnVtIFVuaXRUeXBlcyB7DQogICAgICAgICBDU1NfVU5LTk9XTiA9IDAsDQpJbmRleDog
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVJ1bGUuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VSdWxlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMyw2ICsyMyw3IEBADQogI2RlZmlu
ZSBDU1NGb250RmFjZVJ1bGVfaA0KIA0KICNpbmNsdWRlICJDU1NSdWxlLmgiDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCiANCkBAIC0zMCw3ICszMSw3IEBADQogDQogY2xhc3MgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb247DQogDQotY2xhc3MgQ1NTRm9udEZhY2VSdWxlIDogcHVi
bGljIENTU1J1bGUgew0KK2NsYXNzIENTU0ZvbnRGYWNlUnVsZSA6IHB1YmxpYyBDU1NSdWxlLCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU0ZvbnRGYWNlUnVsZT4gY3JlYXRlKCkNCiAgICAgew0KSW5kZXg6IFdlYkNvcmUvY3Nz
L0NTU0Z1bmN0aW9uVmFsdWUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvY3NzL0NTU0Z1bmN0
aW9uVmFsdWUuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25W
YWx1ZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTMgKzI3LDE0IEBADQogI2RlZmluZSBDU1NG
dW5jdGlvblZhbHVlX2gNCiANCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCINCisjaW5jbHVkZSA8d3Rm
L0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogY2xhc3MgQ1NT
VmFsdWVMaXN0Ow0KIHN0cnVjdCBDU1NQYXJzZXJGdW5jdGlvbjsNCiANCi1jbGFzcyBDU1NGdW5j
dGlvblZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsNCitjbGFzcyBDU1NGdW5jdGlvblZhbHVlIDog
cHVibGljIENTU1ZhbHVlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShDU1NQYXJzZXJG
dW5jdGlvbiogZnVuY3Rpb24pDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NUaW1pbmdG
dW5jdGlvblZhbHVlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5j
dGlvblZhbHVlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1
bmN0aW9uVmFsdWUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI3LDExICsyNywxMiBAQA0KICNkZWZp
bmUgQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZV9oDQogDQogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIENTU1RpbWluZ0Z1bmN0aW9u
VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgew0KK2NsYXNzIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUg
OiBwdWJsaWMgQ1NTVmFsdWUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoN
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKGRv
dWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikNCiAgICAgew0KSW5kZXg6
IFdlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Jy
aWRnZS9jL2NfcnVudGltZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2JyaWRnZS9j
L2NfcnVudGltZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsMTEgKzMwLDEyIEBADQogDQogI2lu
Y2x1ZGUgIm5wcnVudGltZV9pbnRlcm5hbC5oIg0KICNpbmNsdWRlICJydW50aW1lLmgiDQorI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIEpTQyB7DQogbmFtZXNw
YWNlIEJpbmRpbmdzIHsNCiANCi1jbGFzcyBDRmllbGQgOiBwdWJsaWMgRmllbGQgew0KK2NsYXNz
IENGaWVsZCA6IHB1YmxpYyBGaWVsZCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVi
bGljOg0KICAgICBDRmllbGQoTlBJZGVudGlmaWVyIGlkZW50KSA6IF9maWVsZElkZW50aWZpZXIo
aWRlbnQpIHsgfQ0KIA0KQEAgLTQ3LDcgKzQ4LDcgQEANCiB9Ow0KIA0KIA0KLWNsYXNzIENNZXRo
b2QgOiBwdWJsaWMgTWV0aG9kDQorY2xhc3MgQ01ldGhvZCA6IHB1YmxpYyBNZXRob2QsIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2UNCiB7DQogcHVibGljOg0KICAgICBDTWV0aG9kKE5QSWRlbnRp
ZmllciBpZGVudCkgOiBfbWV0aG9kSWRlbnRpZmllcihpZGVudCkgeyB9DQpJbmRleDogV2ViQ29y
ZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JyaWRnZS9j
L2NfaW5zdGFuY2UuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw2ICsyOSw3IEBADQogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQ0KIA0KICNpbmNsdWRlICJydW50aW1lLmgiDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2lu
Y2x1ZGUgInJ1bnRpbWVfcm9vdC5oIg0KIA0KQEAgLTQwLDcgKzQxLDcgQEANCiANCiBjbGFzcyBD
Q2xhc3M7DQogDQotY2xhc3MgQ0luc3RhbmNlIDogcHVibGljIEluc3RhbmNlIHsNCitjbGFzcyBD
SW5zdGFuY2UgOiBwdWJsaWMgSW5zdGFuY2UsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
IHB1YmxpYzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0luc3RhbmNlPiBjcmVhdGUoTlBPYmpl
Y3QqIG9iamVjdCwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQ0KICAgICB7DQpJ
bmRleDogV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L2JyaWRnZS9jL2NfY2xhc3MuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9icmlkZ2Uv
Yy9jX2NsYXNzLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCwxMiArMzAsMTMgQEANCiANCiAjaW5j
bHVkZSAibnBydW50aW1lX2ludGVybmFsLmgiDQogI2luY2x1ZGUgInJ1bnRpbWUuaCINCisjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4NCiAN
CiBuYW1lc3BhY2UgSlNDIHsNCiBuYW1lc3BhY2UgQmluZGluZ3Mgew0KIA0KLWNsYXNzIENDbGFz
cyA6IHB1YmxpYyBDbGFzcyB7DQorY2xhc3MgQ0NsYXNzIDogcHVibGljIENsYXNzLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwcm90ZWN0ZWQ6DQogICAgIENDbGFzcyhOUENsYXNzKik7
IC8vIFVzZSBjbGFzc0ZvcklzQSB0byBjcmVhdGUgYSBDQ2xhc3MuDQogICAgIA0KSW5kZXg6IFdl
YkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JyaWRn
ZS9xdC9xdF9jbGFzcy5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2JyaWRnZS9xdC9x
dF9jbGFzcy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjMsNiArMjMsNyBAQA0KICNpbmNsdWRlICJy
dW50aW1lLmgiDQogDQogI2luY2x1ZGUgInFnbG9iYWwuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiANCiBRVF9CRUdJTl9OQU1FU1BBQ0UNCiBjbGFzcyBRT2JqZWN0Ow0KQEAg
LTMzLDcgKzM0LDcgQEANCiBuYW1lc3BhY2UgQmluZGluZ3Mgew0KIA0KIA0KLWNsYXNzIFF0Q2xh
c3MgOiBwdWJsaWMgQ2xhc3Mgew0KK2NsYXNzIFF0Q2xhc3MgOiBwdWJsaWMgQ2xhc3MsIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHByb3RlY3RlZDoNCiAgICAgUXRDbGFzcyhjb25zdCBR
TWV0YU9iamVjdCopOw0KIA0KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAkocmV2aXNpb24g
MzgzMzQpDQorKysgV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjksMTMgKzI5LDE0IEBADQogI2luY2x1ZGUgPHFtZXRhb2JqZWN0Lmg+DQogI2luY2x1
ZGUgPHFwb2ludGVyLmg+DQogI2luY2x1ZGUgPHF2YXJpYW50Lmg+DQorI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIEpTQyB7DQogbmFtZXNwYWNlIEJpbmRpbmdz
IHsNCiANCiBjbGFzcyBRdEluc3RhbmNlOw0KIA0KLWNsYXNzIFF0RmllbGQgOiBwdWJsaWMgRmll
bGQgew0KK2NsYXNzIFF0RmllbGQgOiBwdWJsaWMgRmllbGQsIHB1YmxpYyBXVEY6OkZhc3RBbGxv
Y0Jhc2Ugew0KIHB1YmxpYzoNCiANCiAgICAgdHlwZWRlZiBlbnVtIHsNCkBAIC05MCw3ICs5MSw3
IEBADQogfTsNCiANCiANCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUXRBcnJheSA6IHB1
YmxpYyBBcnJheQ0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBRdEFycmF5IDogcHVibGlj
IEFycmF5LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlDQogew0KIHB1YmxpYzoNCiAgICAgUXRB
cnJheShRTGlzdDxUPiBsaXN0LCBRTWV0YVR5cGU6OlR5cGUgdHlwZSwgUGFzc1JlZlB0cjxSb290
T2JqZWN0Pik7DQpAQCAtMTE5LDcgKzEyMCw3IEBADQogfTsNCiANCiBjbGFzcyBRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kOw0KLWNsYXNzIFF0UnVudGltZU1ldGFNZXRob2REYXRhIDogcHVibGlj
IFF0UnVudGltZU1ldGhvZERhdGEgew0KK2NsYXNzIFF0UnVudGltZU1ldGFNZXRob2REYXRhIDog
cHVibGljIFF0UnVudGltZU1ldGhvZERhdGEsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
ICAgICBwdWJsaWM6DQogICAgICAgICB+UXRSdW50aW1lTWV0YU1ldGhvZERhdGEoKTsNCiAgICAg
ICAgIFFCeXRlQXJyYXkgbV9zaWduYXR1cmU7DQpAQCAtMTI5LDcgKzEzMCw3IEBADQogICAgICAg
ICBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kICptX2Rpc2Nvbm5lY3Q7DQogfTsNCiANCi1jbGFz
cyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kRGF0YSA6IHB1YmxpYyBRdFJ1bnRpbWVNZXRob2RE
YXRhIHsNCitjbGFzcyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kRGF0YSA6IHB1YmxpYyBRdFJ1
bnRpbWVNZXRob2REYXRhLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGlj
Og0KICAgICAgICAgflF0UnVudGltZUNvbm5lY3Rpb25NZXRob2REYXRhKCk7DQogICAgICAgICBR
Qnl0ZUFycmF5IG1fc2lnbmF0dXJlOw0KQEAgLTE5OSw3ICsyMDAsNyBAQA0KICAgICBmcmllbmQg
Y2xhc3MgUXRDb25uZWN0aW9uT2JqZWN0Ow0KIH07DQogDQotY2xhc3MgUXRDb25uZWN0aW9uT2Jq
ZWN0OiBwdWJsaWMgUU9iamVjdA0KK2NsYXNzIFF0Q29ubmVjdGlvbk9iamVjdDogcHVibGljIFFP
YmplY3QsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2UNCiB7DQogcHVibGljOg0KICAgICBRdENv
bm5lY3Rpb25PYmplY3QoUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBpbnN0YW5jZSwgaW50IHNpZ25h
bEluZGV4LCBKU09iamVjdCogdGhpc09iamVjdCwgSlNPYmplY3QqIGZ1bmNPYmplY3QpOw0KSW5k
ZXg6IFdlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3Jl
L2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjUsNiArMjUsNyBA
QA0KICNpbmNsdWRlIDxxcG9pbnRlci5oPg0KICNpbmNsdWRlIDxxaGFzaC5oPg0KICNpbmNsdWRl
IDxxc2V0Lmg+DQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNl
IEpTQyB7DQogDQpAQCAtMzQsNyArMzUsNyBAQA0KIGNsYXNzIFF0RmllbGQ7DQogY2xhc3MgUXRS
dW50aW1lTWV0YU1ldGhvZDsNCiANCi1jbGFzcyBRdEluc3RhbmNlIDogcHVibGljIEluc3RhbmNl
IHsNCitjbGFzcyBRdEluc3RhbmNlIDogcHVibGljIEluc3RhbmNlLCBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIH5RdEluc3RhbmNlKCk7DQogDQpJbmRleDogV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9yb290LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9yb290LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw3IEBADQogI2VuZGlmDQog
I2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPg0KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCkBAIC01MCw3ICs1MSw3IEBA
DQogZXh0ZXJuIFJvb3RPYmplY3QqIGZpbmRQcm90ZWN0aW5nUm9vdE9iamVjdChKU09iamVjdCop
Ow0KIGV4dGVybiBSb290T2JqZWN0KiBmaW5kUm9vdE9iamVjdChKU0dsb2JhbE9iamVjdCopOw0K
IA0KLWNsYXNzIFJvb3RPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxSb290T2JqZWN0PiB7DQor
Y2xhc3MgUm9vdE9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPFJvb3RPYmplY3Q+LCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgZnJpZW5kIGNsYXNzIEphdmFKU09iamVjdDsNCiAN
CiBwdWJsaWM6DQpJbmRleDogV2ViQ29yZS94bWwvWE1MU2VyaWFsaXplci5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS94bWwvWE1MU2VyaWFsaXplci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBX
ZWJDb3JlL3htbC9YTUxTZXJpYWxpemVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yMCw2ICsyMCw3
IEBADQogI2lmbmRlZiBYTUxTZXJpYWxpemVyX2gNCiAjZGVmaW5lIFhNTFNlcmlhbGl6ZXJfaA0K
IA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPg0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KIA0KQEAgLTI5LDcgKzMwLDcg
QEANCiANCiAgICAgY2xhc3MgTm9kZTsNCiANCi0gICAgY2xhc3MgWE1MU2VyaWFsaXplciA6IHB1
YmxpYyBSZWZDb3VudGVkPFhNTFNlcmlhbGl6ZXI+IHsNCisgICAgY2xhc3MgWE1MU2VyaWFsaXpl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFhNTFNlcmlhbGl6ZXI+LCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8WE1MU2Vy
aWFsaXplcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFhNTFNlcmlhbGl6ZXIpOyB9
DQogICAgICAgICANCkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTQ3LDExICs0NywxMiBAQA0KICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQu
aCINCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCINCiAjaW5jbHVkZSAibWFya3Vw
LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNMb2NrLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLXN0cnVjdCBQcmVmbGlnaHRS
ZXN1bHRDYWNoZUl0ZW0gew0KK3N0cnVjdCBQcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0gOiBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtKHVu
c2lnbmVkIGV4cGlyeURlbHRhLCBib29sIGNyZWRlbnRpYWxzLCBIYXNoU2V0PFN0cmluZz4qIG1l
dGhvZHMsIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+KiBoZWFkZXJzKQ0KICAgICAg
ICAgOiBtX2Fic29sdXRlRXhwaXJ5VGltZShjdXJyZW50VGltZSgpICsgZXhwaXJ5RGVsdGEpDQog
ICAgICAgICAsIG1fY3JlZGVudGlhbHMoY3JlZGVudGlhbHMpDQpJbmRleDogV2ViQ29yZS94bWwv
WFBhdGhQcmVkaWNhdGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUveG1sL1hQYXRoUHJlZGlj
YXRlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmgJ
KHdvcmtpbmcgY29weSkNCkBAIC0zMSwxMiArMzEsMTMgQEANCiANCiAjaW5jbHVkZSAiWFBhdGhF
eHByZXNzaW9uTm9kZS5oIg0KICNpbmNsdWRlICJYUGF0aFZhbHVlLmgiDQorI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KICAgICBuYW1l
c3BhY2UgWFBhdGggew0KICAgICAgICAgDQotICAgICAgICBjbGFzcyBOdW1iZXIgOiBwdWJsaWMg
RXhwcmVzc2lvbiB7DQorICAgICAgICBjbGFzcyBOdW1iZXIgOiBwdWJsaWMgRXhwcmVzc2lvbiwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgICAgICBwdWJsaWM6DQogICAgICAgICAg
ICAgTnVtYmVyKGRvdWJsZSk7DQogICAgICAgICBwcml2YXRlOg0KQEAgLTQ0LDcgKzQ1LDcgQEAN
CiAgICAgICAgICAgICBWYWx1ZSBtX3ZhbHVlOw0KICAgICAgICAgfTsNCiANCi0gICAgICAgIGNs
YXNzIFN0cmluZ0V4cHJlc3Npb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7DQorICAgICAgICBjbGFz
cyBTdHJpbmdFeHByZXNzaW9uIDogcHVibGljIEV4cHJlc3Npb24sIHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KICAgICAgICAgcHVibGljOg0KICAgICAgICAgICAgIFN0cmluZ0V4cHJlc3Np
b24oY29uc3QgU3RyaW5nJik7DQogICAgICAgICBwcml2YXRlOg0KQEAgLTUyLDEyICs1MywxMiBA
QA0KICAgICAgICAgICAgIFZhbHVlIG1fdmFsdWU7DQogICAgICAgICB9Ow0KIA0KLSAgICAgICAg
Y2xhc3MgTmVnYXRpdmUgOiBwdWJsaWMgRXhwcmVzc2lvbiB7DQorICAgICAgICBjbGFzcyBOZWdh
dGl2ZSA6IHB1YmxpYyBFeHByZXNzaW9uLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAg
ICAgICAgIHByaXZhdGU6DQogICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNv
bnN0Ow0KICAgICAgICAgfTsNCiANCi0gICAgICAgIGNsYXNzIE51bWVyaWNPcCA6IHB1YmxpYyBF
eHByZXNzaW9uIHsNCisgICAgICAgIGNsYXNzIE51bWVyaWNPcCA6IHB1YmxpYyBFeHByZXNzaW9u
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgICAgIHB1YmxpYzoNCiAgICAgICAg
ICAgICBlbnVtIE9wY29kZSB7DQogICAgICAgICAgICAgICAgIE9QX0FkZCwgT1BfU3ViLCBPUF9N
dWwsIE9QX0RpdiwgT1BfTW9kDQpAQCAtNjgsNyArNjksNyBAQA0KICAgICAgICAgICAgIE9wY29k
ZSBtX29wY29kZTsNCiAgICAgICAgIH07DQogDQotICAgICAgICBjbGFzcyBFcVRlc3RPcCA6IHB1
YmxpYyBFeHByZXNzaW9uIHsNCisgICAgICAgIGNsYXNzIEVxVGVzdE9wIDogcHVibGljIEV4cHJl
c3Npb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAgICAgcHVibGljOg0KICAg
ICAgICAgICAgIGVudW0gT3Bjb2RlIHsgT1BfRVEsIE9QX05FLCBPUF9HVCwgT1BfTFQsIE9QX0dF
LCBPUF9MRSB9Ow0KICAgICAgICAgICAgIEVxVGVzdE9wKE9wY29kZSwgRXhwcmVzc2lvbiogbGhz
LCBFeHByZXNzaW9uKiByaHMpOw0KQEAgLTc4LDcgKzc5LDcgQEANCiAgICAgICAgICAgICBPcGNv
ZGUgbV9vcGNvZGU7DQogICAgICAgICB9Ow0KIA0KLSAgICAgICAgY2xhc3MgTG9naWNhbE9wIDog
cHVibGljIEV4cHJlc3Npb24gew0KKyAgICAgICAgY2xhc3MgTG9naWNhbE9wIDogcHVibGljIEV4
cHJlc3Npb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAgICAgcHVibGljOg0K
ICAgICAgICAgICAgIGVudW0gT3Bjb2RlIHsgT1BfQW5kLCBPUF9PciB9Ow0KICAgICAgICAgICAg
IExvZ2ljYWxPcChPcGNvZGUsIEV4cHJlc3Npb24qIGxocywgRXhwcmVzc2lvbiogcmhzKTsNCkBA
IC04OCwxMiArODksMTIgQEANCiAgICAgICAgICAgICBPcGNvZGUgbV9vcGNvZGU7DQogICAgICAg
ICB9Ow0KIA0KLSAgICAgICAgY2xhc3MgVW5pb24gOiBwdWJsaWMgRXhwcmVzc2lvbiB7DQorICAg
ICAgICBjbGFzcyBVbmlvbiA6IHB1YmxpYyBFeHByZXNzaW9uLCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgICAgIHByaXZhdGU6DQogICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBl
dmFsdWF0ZSgpIGNvbnN0Ow0KICAgICAgICAgfTsNCiANCi0gICAgICAgIGNsYXNzIFByZWRpY2F0
ZSA6IE5vbmNvcHlhYmxlIHsNCisgICAgICAgIGNsYXNzIFByZWRpY2F0ZSA6IE5vbmNvcHlhYmxl
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgICAgIHB1YmxpYzoNCiAgICAgICAg
ICAgICBQcmVkaWNhdGUoRXhwcmVzc2lvbiopOw0KICAgICAgICAgICAgIH5QcmVkaWNhdGUoKTsN
CkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRvci5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS94bWwvWFBhdGhFdmFsdWF0b3IuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS94
bWwvWFBhdGhFdmFsdWF0b3IuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDYgKzI5LDcgQEANCiAN
CiAjaWYgRU5BQkxFKFhQQVRIKQ0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
Pg0KIA0KQEAgLTQyLDcgKzQzLDcgQEANCiAgICAgY2xhc3MgWFBhdGhOU1Jlc29sdmVyOw0KICAg
ICBjbGFzcyBYUGF0aFJlc3VsdDsNCiANCi0gICAgY2xhc3MgWFBhdGhFdmFsdWF0b3IgOiBwdWJs
aWMgUmVmQ291bnRlZDxYUGF0aEV2YWx1YXRvcj4gew0KKyAgICBjbGFzcyBYUGF0aEV2YWx1YXRv
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFhQYXRoRXZhbHVhdG9yPiwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhQYXRo
RXZhbHVhdG9yPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgWFBhdGhFdmFsdWF0b3Ip
OyB9DQogICAgICAgICANCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDM4
MzM0KQ0KKysrIFdlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQ0K
QEAgLTM2LDYgKzM2LDcgQEANCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCINCiAjaW5jbHVkZSAiWFBh
dGhVdGlsLmgiDQogI2luY2x1ZGUgIlhQYXRoVmFsdWUuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4NCiANCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7DQpAQCAtNzIsMTExICs3MywxMTEgQEANCiANCiBzdGF0aWMgSGFzaE1hcDxTdHJp
bmcsIEZ1bmN0aW9uUmVjPiogZnVuY3Rpb25NYXA7DQogDQotY2xhc3MgRnVuTGFzdCA6IHB1Ymxp
YyBGdW5jdGlvbiB7DQorY2xhc3MgRnVuTGFzdCA6IHB1YmxpYyBGdW5jdGlvbiwgcHVibGljIFdU
Rjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsN
CiB9Ow0KIA0KLWNsYXNzIEZ1blBvc2l0aW9uIDogcHVibGljIEZ1bmN0aW9uIHsNCitjbGFzcyBG
dW5Qb3NpdGlvbiA6IHB1YmxpYyBGdW5jdGlvbiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsNCiB9Ow0KIA0KLWNsYXNzIEZ1
bkNvdW50IDogcHVibGljIEZ1bmN0aW9uIHsNCitjbGFzcyBGdW5Db3VudCA6IHB1YmxpYyBGdW5j
dGlvbiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHZpcnR1YWwgVmFsdWUgZXZh
bHVhdGUoKSBjb25zdDsNCiB9Ow0KIA0KLWNsYXNzIEZ1bklkIDogcHVibGljIEZ1bmN0aW9uIHsN
CitjbGFzcyBGdW5JZCA6IHB1YmxpYyBGdW5jdGlvbiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsNCiB9Ow0KIA0KLWNsYXNz
IEZ1bkxvY2FsTmFtZSA6IHB1YmxpYyBGdW5jdGlvbiB7DQorY2xhc3MgRnVuTG9jYWxOYW1lIDog
cHVibGljIEZ1bmN0aW9uLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgdmlydHVh
bCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0Ow0KIH07DQogDQotY2xhc3MgRnVuTmFtZXNwYWNlVVJJ
IDogcHVibGljIEZ1bmN0aW9uIHsNCitjbGFzcyBGdW5OYW1lc3BhY2VVUkkgOiBwdWJsaWMgRnVu
Y3Rpb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICB2aXJ0dWFsIFZhbHVlIGV2
YWx1YXRlKCkgY29uc3Q7DQogfTsNCiANCi1jbGFzcyBGdW5OYW1lIDogcHVibGljIEZ1bmN0aW9u
IHsNCitjbGFzcyBGdW5OYW1lIDogcHVibGljIEZ1bmN0aW9uLCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0Ow0KIH07DQogDQot
Y2xhc3MgRnVuU3RyaW5nIDogcHVibGljIEZ1bmN0aW9uIHsNCitjbGFzcyBGdW5TdHJpbmcgOiBw
dWJsaWMgRnVuY3Rpb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICB2aXJ0dWFs
IFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7DQogfTsNCiANCi1jbGFzcyBGdW5Db25jYXQgOiBwdWJs
aWMgRnVuY3Rpb24gew0KK2NsYXNzIEZ1bkNvbmNhdCA6IHB1YmxpYyBGdW5jdGlvbiwgcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25z
dDsNCiB9Ow0KIA0KLWNsYXNzIEZ1blN0YXJ0c1dpdGggOiBwdWJsaWMgRnVuY3Rpb24gew0KK2Ns
YXNzIEZ1blN0YXJ0c1dpdGggOiBwdWJsaWMgRnVuY3Rpb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxv
Y0Jhc2Ugew0KICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7DQogfTsNCiANCi1j
bGFzcyBGdW5Db250YWlucyA6IHB1YmxpYyBGdW5jdGlvbiB7DQorY2xhc3MgRnVuQ29udGFpbnMg
OiBwdWJsaWMgRnVuY3Rpb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICB2aXJ0
dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7DQogfTsNCiANCi1jbGFzcyBGdW5TdWJzdHJpbmdC
ZWZvcmUgOiBwdWJsaWMgRnVuY3Rpb24gew0KK2NsYXNzIEZ1blN1YnN0cmluZ0JlZm9yZSA6IHB1
YmxpYyBGdW5jdGlvbiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHZpcnR1YWwg
VmFsdWUgZXZhbHVhdGUoKSBjb25zdDsNCiB9Ow0KIA0KLWNsYXNzIEZ1blN1YnN0cmluZ0FmdGVy
IDogcHVibGljIEZ1bmN0aW9uIHsNCitjbGFzcyBGdW5TdWJzdHJpbmdBZnRlciA6IHB1YmxpYyBG
dW5jdGlvbiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHZpcnR1YWwgVmFsdWUg
ZXZhbHVhdGUoKSBjb25zdDsNCiB9Ow0KIA0KLWNsYXNzIEZ1blN1YnN0cmluZyA6IHB1YmxpYyBG
dW5jdGlvbiB7DQorY2xhc3MgRnVuU3Vic3RyaW5nIDogcHVibGljIEZ1bmN0aW9uLCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0
Ow0KIH07DQogDQotY2xhc3MgRnVuU3RyaW5nTGVuZ3RoIDogcHVibGljIEZ1bmN0aW9uIHsNCitj
bGFzcyBGdW5TdHJpbmdMZW5ndGggOiBwdWJsaWMgRnVuY3Rpb24sIHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7DQogfTsNCiAN
Ci1jbGFzcyBGdW5Ob3JtYWxpemVTcGFjZSA6IHB1YmxpYyBGdW5jdGlvbiB7DQorY2xhc3MgRnVu
Tm9ybWFsaXplU3BhY2UgOiBwdWJsaWMgRnVuY3Rpb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7DQogfTsNCiANCi1jbGFz
cyBGdW5UcmFuc2xhdGUgOiBwdWJsaWMgRnVuY3Rpb24gew0KK2NsYXNzIEZ1blRyYW5zbGF0ZSA6
IHB1YmxpYyBGdW5jdGlvbiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHZpcnR1
YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsNCiB9Ow0KIA0KLWNsYXNzIEZ1bkJvb2xlYW4gOiBw
dWJsaWMgRnVuY3Rpb24gew0KK2NsYXNzIEZ1bkJvb2xlYW4gOiBwdWJsaWMgRnVuY3Rpb24sIHB1
YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkg
Y29uc3Q7DQogfTsNCiANCi1jbGFzcyBGdW5Ob3QgOiBwdWJsaWMgRnVuY3Rpb24gew0KK2NsYXNz
IEZ1bk5vdCA6IHB1YmxpYyBGdW5jdGlvbiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
ICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsNCiB9Ow0KIA0KLWNsYXNzIEZ1blRy
dWUgOiBwdWJsaWMgRnVuY3Rpb24gew0KK2NsYXNzIEZ1blRydWUgOiBwdWJsaWMgRnVuY3Rpb24s
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRl
KCkgY29uc3Q7DQogfTsNCiANCi1jbGFzcyBGdW5GYWxzZSA6IHB1YmxpYyBGdW5jdGlvbiB7DQor
Y2xhc3MgRnVuRmFsc2UgOiBwdWJsaWMgRnVuY3Rpb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7DQogfTsNCiANCi1jbGFz
cyBGdW5MYW5nIDogcHVibGljIEZ1bmN0aW9uIHsNCitjbGFzcyBGdW5MYW5nIDogcHVibGljIEZ1
bmN0aW9uLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgdmlydHVhbCBWYWx1ZSBl
dmFsdWF0ZSgpIGNvbnN0Ow0KIH07DQogDQotY2xhc3MgRnVuTnVtYmVyIDogcHVibGljIEZ1bmN0
aW9uIHsNCitjbGFzcyBGdW5OdW1iZXIgOiBwdWJsaWMgRnVuY3Rpb24sIHB1YmxpYyBXVEY6OkZh
c3RBbGxvY0Jhc2Ugew0KICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7DQogfTsN
CiANCi1jbGFzcyBGdW5TdW0gOiBwdWJsaWMgRnVuY3Rpb24gew0KK2NsYXNzIEZ1blN1bSA6IHB1
YmxpYyBGdW5jdGlvbiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHZpcnR1YWwg
VmFsdWUgZXZhbHVhdGUoKSBjb25zdDsNCiB9Ow0KIA0KLWNsYXNzIEZ1bkZsb29yIDogcHVibGlj
IEZ1bmN0aW9uIHsNCitjbGFzcyBGdW5GbG9vciA6IHB1YmxpYyBGdW5jdGlvbiwgcHVibGljIFdU
Rjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsN
CiB9Ow0KIA0KLWNsYXNzIEZ1bkNlaWxpbmcgOiBwdWJsaWMgRnVuY3Rpb24gew0KK2NsYXNzIEZ1
bkNlaWxpbmcgOiBwdWJsaWMgRnVuY3Rpb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
ICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7DQogfTsNCiANCi1jbGFzcyBGdW5S
b3VuZCA6IHB1YmxpYyBGdW5jdGlvbiB7DQorY2xhc3MgRnVuUm91bmQgOiBwdWJsaWMgRnVuY3Rp
b24sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1
YXRlKCkgY29uc3Q7DQogcHVibGljOg0KICAgICBzdGF0aWMgZG91YmxlIHJvdW5kKGRvdWJsZSk7
DQpJbmRleDogV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgJKHdvcmtpbmcgY29weSkNCkBA
IC0yOSw2ICsyOSw3IEBADQogI2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2guaCINCiAjaW5jbHVk
ZSAiRXZlbnRMaXN0ZW5lci5oIg0KICNpbmNsdWRlICJFdmVudFRhcmdldC5oIg0KKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQpAQCAtNDEs
NyArNDIsNyBAQA0KICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ow0KICAgICBjbGFz
cyBYTUxIdHRwUmVxdWVzdDsNCiANCi0gICAgY2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQgOiBw
dWJsaWMgUmVmQ291bnRlZDxYTUxIdHRwUmVxdWVzdFVwbG9hZD4sIHB1YmxpYyBFdmVudFRhcmdl
dCB7DQorICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0VXBsb2FkIDogcHVibGljIFJlZkNvdW50ZWQ8
WE1MSHR0cFJlcXVlc3RVcGxvYWQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBXVEY6OkZh
c3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxY
TUxIdHRwUmVxdWVzdFVwbG9hZD4gY3JlYXRlKFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVz
dCkNCiAgICAgICAgIHsNCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aFN0ZXAuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUveG1sL1hQYXRoU3RlcC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL3htbC9YUGF0aFN0ZXAuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMyLDYgKzMyLDcgQEANCiAj
aW5jbHVkZSAiTm9kZS5oIg0KICNpbmNsdWRlICJYUGF0aEV4cHJlc3Npb25Ob2RlLmgiDQogI2lu
Y2x1ZGUgIlhQYXRoTm9kZVNldC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0K
IA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCkBAIC0zOSw3ICs0MCw3IEBADQogDQogICAgICAg
ICBjbGFzcyBQcmVkaWNhdGU7DQogICAgICAgICANCi0gICAgICAgIGNsYXNzIFN0ZXAgOiBwdWJs
aWMgUGFyc2VOb2RlLCBOb25jb3B5YWJsZSB7DQorICAgICAgICBjbGFzcyBTdGVwIDogcHVibGlj
IFBhcnNlTm9kZSwgTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAg
ICAgICAgcHVibGljOg0KICAgICAgICAgICAgIGVudW0gQXhpcyB7DQogICAgICAgICAgICAgICAg
IEFuY2VzdG9yQXhpcywgQW5jZXN0b3JPclNlbGZBeGlzLCBBdHRyaWJ1dGVBeGlzLA0KQEAgLTQ5
LDcgKzUwLDcgQEANCiAgICAgICAgICAgICAgICAgU2VsZkF4aXMNCiAgICAgICAgICAgICB9Ow0K
ICAgICAgICAgICAgIA0KLSAgICAgICAgICAgIGNsYXNzIE5vZGVUZXN0IHsNCisgICAgICAgICAg
ICBjbGFzcyBOb2RlVGVzdCA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAgICAg
ICAgIHB1YmxpYzoNCiAgICAgICAgICAgICAgICAgZW51bSBLaW5kIHsNCiAgICAgICAgICAgICAg
ICAgICAgIFRleHROb2RlVGVzdCwgQ29tbWVudE5vZGVUZXN0LCBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25Ob2RlVGVzdCwgQW55Tm9kZVRlc3QsIE5hbWVUZXN0LA0KSW5kZXg6IFdlYkNvcmUveG1sL1hQ
YXRoVmFsdWUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUveG1sL1hQYXRoVmFsdWUuaAkocmV2
aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMzEsMTIgKzMxLDEzIEBADQogDQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQog
I2luY2x1ZGUgIlhQYXRoTm9kZVNldC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
Pg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiAgICAgbmFtZXNwYWNlIFhQYXRoIHsNCiAg
ICAgDQotICAgICAgICBjbGFzcyBWYWx1ZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxWYWx1ZURh
dGE+IHsNCisgICAgICAgIGNsYXNzIFZhbHVlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFZhbHVl
RGF0YT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAgICAgcHVibGljOiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZhbHVlRGF0YT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFZhbHVlRGF0YSk7IH0NCiAgICAgICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxWYWx1ZURhdGE+IGNyZWF0ZShjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7
IHJldHVybiBhZG9wdFJlZihuZXcgVmFsdWVEYXRhKG5vZGVTZXQpKTsgfQ0KSW5kZXg6IFdlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAs
MTAgKzMwLDExIEBADQogI2RlZmluZSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbl9oDQogDQogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4N
CiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0RXhj
ZXB0aW9uIDogcHVibGljIEV4Y2VwdGlvbkJhc2Ugew0KKyAgICBjbGFzcyBYTUxIdHRwUmVxdWVz
dEV4Y2VwdGlvbiA6IHB1YmxpYyBFeGNlcHRpb25CYXNlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NC
YXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8WE1MSHR0cFJl
cXVlc3RFeGNlcHRpb24+IGNyZWF0ZShjb25zdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uKQ0KICAgICAgICAgew0KSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lv
bi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmgJKHJldmlz
aW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjksNiArMjksNyBAQA0KIA0KICNpZiBFTkFCTEUoWFBBVEgpDQogDQorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogDQpAQCAtNDUsNyArNDYsNyBAQA0KICAgICAg
ICAgY2xhc3MgRXhwcmVzc2lvbjsNCiAgICAgfQ0KIA0KLSAgICBjbGFzcyBYUGF0aEV4cHJlc3Np
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxYUGF0aEV4cHJlc3Npb24+IHsNCisgICAgY2xhc3MgWFBh
dGhFeHByZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8WFBhdGhFeHByZXNzaW9uPiwgcHVibGlj
IFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFhQYXRoRXhwcmVzc2lvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFhQ
YXRoRXhwcmVzc2lvbik7IH0NCiAgICAgICAgIH5YUGF0aEV4cHJlc3Npb24oKTsNCkluZGV4OiBX
ZWJDb3JlL3htbC9YUGF0aFBhdGguaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUveG1sL1hQYXRo
UGF0aC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3htbC9YUGF0aFBhdGguaAkod29y
a2luZyBjb3B5KQ0KQEAgLTMxLDYgKzMxLDcgQEANCiANCiAjaW5jbHVkZSAiWFBhdGhFeHByZXNz
aW9uTm9kZS5oIg0KICNpbmNsdWRlICJYUGF0aE5vZGVTZXQuaCINCisjaW5jbHVkZSA8d3RmL0Zh
c3RBbGxvY0Jhc2UuaD4NCiANCiBpbnQgeHBhdGh5eXBhcnNlKHZvaWQqKTsNCiANCkBAIC00MSw3
ICs0Miw3IEBADQogICAgICAgICBjbGFzcyBQcmVkaWNhdGU7DQogICAgICAgICBjbGFzcyBTdGVw
Ow0KIA0KLSAgICAgICAgY2xhc3MgRmlsdGVyIDogcHVibGljIEV4cHJlc3Npb24gew0KKyAgICAg
ICAgY2xhc3MgRmlsdGVyIDogcHVibGljIEV4cHJlc3Npb24sIHB1YmxpYyBXVEY6OkZhc3RBbGxv
Y0Jhc2Ugew0KICAgICAgICAgcHVibGljOg0KICAgICAgICAgICAgIEZpbHRlcihFeHByZXNzaW9u
KiwgY29uc3QgVmVjdG9yPFByZWRpY2F0ZSo+JiA9IFZlY3RvcjxQcmVkaWNhdGUqPigpKTsNCiAg
ICAgICAgICAgICB2aXJ0dWFsIH5GaWx0ZXIoKTsNCkBAIC01Myw3ICs1NCw3IEBADQogICAgICAg
ICAgICAgVmVjdG9yPFByZWRpY2F0ZSo+IG1fcHJlZGljYXRlczsNCiAgICAgICAgIH07DQogDQot
ICAgICAgICBjbGFzcyBMb2NhdGlvblBhdGggOiBwdWJsaWMgRXhwcmVzc2lvbiB7DQorICAgICAg
ICBjbGFzcyBMb2NhdGlvblBhdGggOiBwdWJsaWMgRXhwcmVzc2lvbiwgcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZSB7DQogICAgICAgICBwdWJsaWM6DQogICAgICAgICAgICAgTG9jYXRpb25QYXRo
KCk7DQogICAgICAgICAgICAgdmlydHVhbCB+TG9jYXRpb25QYXRoKCk7DQpAQCAtNzIsNyArNzMs
NyBAQA0KICAgICAgICAgICAgIGJvb2wgbV9hYnNvbHV0ZTsNCiAgICAgICAgIH07DQogDQotICAg
ICAgICBjbGFzcyBQYXRoIDogcHVibGljIEV4cHJlc3Npb24NCisgICAgICAgIGNsYXNzIFBhdGgg
OiBwdWJsaWMgRXhwcmVzc2lvbiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZQ0KICAgICAgICAg
ew0KICAgICAgICAgcHVibGljOg0KICAgICAgICAgICAgIFBhdGgoRmlsdGVyKiwgTG9jYXRpb25Q
YXRoKik7DQpJbmRleDogV2ViQ29yZS94bWwvWFBhdGhFeGNlcHRpb24uaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUveG1sL1hQYXRoRXhjZXB0aW9uLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdl
YkNvcmUveG1sL1hQYXRoRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCwxMiArMzAs
MTMgQEANCiAjZGVmaW5lIFhQYXRoRXhjZXB0aW9uX2gNCiANCiAjaW5jbHVkZSAiRXhjZXB0aW9u
QmFzZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KICNpZiBFTkFCTEUo
WFBBVEgpDQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLSAgICBjbGFzcyBYUGF0aEV4Y2Vw
dGlvbiA6IHB1YmxpYyBFeGNlcHRpb25CYXNlIHsNCisgICAgY2xhc3MgWFBhdGhFeGNlcHRpb24g
OiBwdWJsaWMgRXhjZXB0aW9uQmFzZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAg
IHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhQYXRoRXhjZXB0aW9uPiBjcmVh
dGUoY29uc3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikNCiAgICAgICAg
IHsNCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aFJlc3VsdC5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS94bWwvWFBhdGhSZXN1bHQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS94bWwv
WFBhdGhSZXN1bHQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDYgKzI5LDcgQEANCiANCiAjaWYg
RU5BQkxFKFhQQVRIKQ0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KICNpbmNsdWRlICJYUGF0aFZhbHVlLmgiDQogDQpAQCAt
NDEsNyArNDIsNyBAQA0KICAgICBjbGFzcyBOb2RlOw0KICAgICBjbGFzcyBTdHJpbmc7DQogDQot
ICAgIGNsYXNzIFhQYXRoUmVzdWx0IDogcHVibGljIFJlZkNvdW50ZWQ8WFBhdGhSZXN1bHQ+IHsN
CisgICAgY2xhc3MgWFBhdGhSZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRlZDxYUGF0aFJlc3VsdD4s
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBlbnVt
IFhQYXRoUmVzdWx0VHlwZSB7DQogICAgICAgICAgICAgQU5ZX1RZUEUgPSAwLA0KSW5kZXg6IFdl
YkNvcmUveG1sL0RPTVBhcnNlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS94bWwvRE9NUGFy
c2VyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUveG1sL0RPTVBhcnNlci5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMTksNiArMTksNyBAQA0KICNpZm5kZWYgRE9NUGFyc2VyX2gNCiAjZGVm
aW5lIERPTVBhcnNlcl9oDQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogI2luY2x1ZGUgIkRvY3VtZW50LmgiDQogDQpAQCAt
MjYsNyArMjcsNyBAQA0KIA0KICAgICBjbGFzcyBTdHJpbmc7DQogICAgIA0KLSAgICBjbGFzcyBE
T01QYXJzZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QYXJzZXI+IHsNCisgICAgY2xhc3MgRE9N
UGFyc2VyIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NUGFyc2VyPiwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVBh
cnNlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVBhcnNlcik7IH0NCiAgICAg
ICAgIA0KSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiArMjcsNyBA
QA0KICNpbmNsdWRlICJGb3JtRGF0YS5oIg0KICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
DQogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmgiDQorI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4NCiANCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7DQpAQCAtMzUsNyArMzYsNyBAQA0KIGNsYXNzIEZpbGU7DQogY2xhc3MgVGV4dFJl
c291cmNlRGVjb2RlcjsNCiANCi1jbGFzcyBYTUxIdHRwUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwcml2YXRlIFN1YnJlc291
cmNlTG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsNCitjbGFzcyBYTUxIdHRw
UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGljIEV2ZW50
VGFyZ2V0LCBwcml2YXRlIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KSB7
IHJldHVybiBhZG9wdFJlZihuZXcgWE1MSHR0cFJlcXVlc3QoZG9jdW1lbnQpKTsgfQ0KICAgICB+
WE1MSHR0cFJlcXVlc3QoKTsNCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aFZhcmlhYmxlUmVmZXJl
bmNlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3htbC9YUGF0aFZhcmlhYmxlUmVmZXJlbmNl
LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUveG1sL1hQYXRoVmFyaWFibGVSZWZlcmVu
Y2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDEyICsyOSwxMyBAQA0KICNpZiBFTkFCTEUoWFBB
VEgpDQogDQogI2luY2x1ZGUgIlhQYXRoRXhwcmVzc2lvbk5vZGUuaCINCisjaW5jbHVkZSA8d3Rm
L0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogICAgIG5hbWVz
cGFjZSBYUGF0aCB7DQogICAgIA0KLSAgICAgICAgY2xhc3MgVmFyaWFibGVSZWZlcmVuY2UgOiBw
dWJsaWMgRXhwcmVzc2lvbiB7DQorICAgICAgICBjbGFzcyBWYXJpYWJsZVJlZmVyZW5jZSA6IHB1
YmxpYyBFeHByZXNzaW9uLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgICAgIHB1
YmxpYzoNCiAgICAgICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIG5hbWUp
Ow0KICAgICAgICAgcHJpdmF0ZToNCkluZGV4OiBXZWJDb3JlL3htbC9OYXRpdmVYUGF0aE5TUmVz
b2x2ZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUveG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZl
ci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3htbC9OYXRpdmVYUGF0aE5TUmVzb2x2
ZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMwLDExICszMCwxMiBAQA0KIA0KICNpbmNsdWRlICJY
UGF0aE5TUmVzb2x2ZXIuaCINCiAjaW5jbHVkZSAiTm9kZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogDQogbmFtZXNwYWNlIFdl
YkNvcmUgew0KIA0KLSAgICBjbGFzcyBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIgOiBwdWJsaWMgWFBh
dGhOU1Jlc29sdmVyIHsNCisgICAgY2xhc3MgTmF0aXZlWFBhdGhOU1Jlc29sdmVyIDogcHVibGlj
IFhQYXRoTlNSZXNvbHZlciwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1Ymxp
YzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdGl2ZVhQYXRoTlNSZXNvbHZlcj4gY3Jl
YXRlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZVhQ
YXRoTlNSZXNvbHZlcihub2RlKSk7IH0NCiAgICAgICAgIHZpcnR1YWwgfk5hdGl2ZVhQYXRoTlNS
ZXNvbHZlcigpOw0KSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmNwcA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUveG1sL1hQYXRoUmVzdWx0LmNwcAkocmV2aXNpb24gMzgzMzQpDQorKysg
V2ViQ29yZS94bWwvWFBhdGhSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzUsMTIgKzM1
LDEzIEBADQogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCINCiAjaW5jbHVkZSAiWFBhdGhFdmFs
dWF0b3IuaCINCiAjaW5jbHVkZSAiWFBhdGhFeGNlcHRpb24uaCINCisjaW5jbHVkZSA8d3RmL0Zh
c3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQogdXNpbmcgbmFtZXNw
YWNlIFhQYXRoOw0KIA0KLWNsYXNzIEludmFsaWRhdGluZ0V2ZW50TGlzdGVuZXIgOiBwdWJsaWMg
RXZlbnRMaXN0ZW5lciB7DQorY2xhc3MgSW52YWxpZGF0aW5nRXZlbnRMaXN0ZW5lciA6IHB1Ymxp
YyBFdmVudExpc3RlbmVyLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEludmFsaWRhdGluZ0V2ZW50TGlzdGVuZXI+IGNyZWF0ZShY
UGF0aFJlc3VsdCogcmVzdWx0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgSW52YWxpZGF0aW5nRXZl
bnRMaXN0ZW5lcihyZXN1bHQpKTsgfQ0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZl
bnQqLCBib29sKSB7IG1fcmVzdWx0LT5pbnZhbGlkYXRlSXRlcmF0b3JTdGF0ZSgpOyB9DQpJbmRl
eDogV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9oaXN0
b3J5L0hpc3RvcnlJdGVtLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMiw2ICszMiw3IEBADQogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQog
I2luY2x1ZGUgIlN0cmluZ0hhc2guaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4N
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4NCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPg0KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+DQpAQCAtNTgsNyArNTksNyBAQA0KIA0KIGV4dGVybiB2b2lk
ICgqbm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKSgpOw0KIA0KLWNsYXNzIEhpc3RvcnlJdGVtIDog
cHVibGljIFJlZkNvdW50ZWQ8SGlzdG9yeUl0ZW0+IHsNCitjbGFzcyBIaXN0b3J5SXRlbSA6IHB1
YmxpYyBSZWZDb3VudGVkPEhpc3RvcnlJdGVtPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogICAgIGZyaWVuZCBjbGFzcyBQYWdlQ2FjaGU7DQogDQogcHVibGljOiANCkluZGV4OiBXZWJD
b3JlL2hpc3RvcnkvUGFnZUNhY2hlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvaGlzdG9yeS9QYWdlQ2Fj
aGUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI4LDYgKzI4LDcgQEANCiANCiAjaW5jbHVkZSAiSGlz
dG9yeUl0ZW0uaCINCiAjaW5jbHVkZSAiVGltZXIuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxv
Y0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4NCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+DQpAQCAtMzcsNyArMzgsNyBAQA0K
ICAgICBjbGFzcyBDYWNoZWRQYWdlOw0KICAgICBjbGFzcyBIaXN0b3J5SXRlbTsNCiAgICAgDQot
ICAgIGNsYXNzIFBhZ2VDYWNoZSA6IE5vbmNvcHlhYmxlIHsNCisgICAgY2xhc3MgUGFnZUNhY2hl
IDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6
DQogICAgICAgICBmcmllbmQgUGFnZUNhY2hlKiBwYWdlQ2FjaGUoKTsNCiANCkluZGV4OiBXZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZExpc3QuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2LDcgQEAN
CiAjaWZuZGVmIEJhY2tGb3J3YXJkTGlzdF9oDQogI2RlZmluZSBCYWNrRm9yd2FyZExpc3RfaA0K
IA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPg0KQEAgLTM5LDcgKzQwLDcgQEANCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SGlzdG9y
eUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0b3I7DQogdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxIaXN0
b3J5SXRlbT4gPiBIaXN0b3J5SXRlbUhhc2hTZXQ7DQogDQotY2xhc3MgQmFja0ZvcndhcmRMaXN0
IDogcHVibGljIFJlZkNvdW50ZWQ8QmFja0ZvcndhcmRMaXN0PiB7DQorY2xhc3MgQmFja0Zvcndh
cmRMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8QmFja0ZvcndhcmRMaXN0PiwgcHVibGljIFdURjo6
RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOiANCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmFja0Zv
cndhcmRMaXN0PiBjcmVhdGUoUGFnZSogcGFnZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhY2tG
b3J3YXJkTGlzdChwYWdlKSk7IH0NCiAgICAgfkJhY2tGb3J3YXJkTGlzdCgpOw0KSW5kZXg6IFdl
YkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkUGFnZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsNiArMzAsNyBAQA0KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+DQogI2luY2x1ZGUgIlBhdXNlZFRpbWVvdXRzLmgiDQogI2luY2x1ZGUgPHJ1
bnRpbWUvUHJvdGVjdC5oPg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsNCiAgICAgDQpAQCAtNDIsNyArNDMsNyBAQA0KICAgICBjbGFzcyBQ
YWdlOw0KICAgICBjbGFzcyBQYXVzZWRUaW1lb3V0czsNCiANCi1jbGFzcyBDYWNoZWRQYWdlIDog
cHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVkUGFnZT4gew0KK2NsYXNzIENhY2hlZFBhZ2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxDYWNoZWRQYWdlPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQog
cHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWNoZWRQYWdlPiBjcmVhdGUoUGFnZSop
Ow0KICAgICB+Q2FjaGVkUGFnZSgpOw0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0
eWxlU2hlZXQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxl
U2hlZXQuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsNiArMzAsNyBAQA0KIA0KICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZS5oIg0KICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCINCisjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KIA0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsNCkBAIC0zNyw3ICszOCw3IEBADQogICAgIGNsYXNzIERvY0xvYWRl
cjsNCiAgICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsNCiANCi0gICAgY2xhc3MgQ2FjaGVk
Q1NTU3R5bGVTaGVldCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7DQorICAgIGNsYXNzIENhY2hl
ZENTU1N0eWxlU2hlZXQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UsIHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBDYWNoZWRDU1NTdHlsZVNoZWV0KGNv
bnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOw0KICAgICAgICAgdmlydHVh
bCB+Q2FjaGVkQ1NTU3R5bGVTaGVldCgpOw0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5o
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsNiAr
MjcsNyBAQA0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlckNsaWVudC5oIg0KICNpbmNsdWRlICJUaW1lci5oIg0KKyNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4NCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4NCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+DQpAQCAtMzcsNyArMzgs
NyBAQA0KICAgICBjbGFzcyBEb2NMb2FkZXI7DQogICAgIGNsYXNzIFJlcXVlc3Q7DQogDQotICAg
IGNsYXNzIExvYWRlciA6IE5vbmNvcHlhYmxlIHsNCisgICAgY2xhc3MgTG9hZGVyIDogTm9uY29w
eWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAg
ICBMb2FkZXIoKTsNCiAgICAgICAgIH5Mb2FkZXIoKTsNCkBAIC01NSw3ICs1Niw3IEBADQogICAg
ICAgICANCiAgICAgICAgIHZvaWQgcmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8TG9hZGVyPiopOw0K
IA0KLSAgICAgICAgY2xhc3MgSG9zdCA6IHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQg
ew0KKyAgICAgICAgY2xhc3MgSG9zdCA6IHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQs
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICAgICAgcHVibGljOg0KICAgICAgICAg
ICAgIEhvc3QoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBtYXhSZXF1ZXN0c0lu
RmxpZ2h0KTsNCiAgICAgICAgICAgICB+SG9zdCgpOw0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0lt
YWdlRG9jdW1lbnQuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1
bWVudC5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvbG9hZGVyL0ltYWdlRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNDIsNiArNDIsNyBAQA0KICNpbmNsdWRlICJTZXR0
aW5ncy5oIg0KICNpbmNsdWRlICJUZXh0LmgiDQogI2luY2x1ZGUgIlhNTFRva2VuaXplci5oIg0K
KyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIHVzaW5nIHN0ZDo6bWluOw0KIA0K
QEAgLTQ5LDcgKzUwLDcgQEANCiANCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOw0KIA0KLWNs
YXNzIEltYWdlRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsNCitjbGFzcyBJ
bWFnZUV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciwgcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUV2ZW50
TGlzdGVuZXI+IGNyZWF0ZShJbWFnZURvY3VtZW50KiBkb2N1bWVudCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEltYWdlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCkpOyB9DQogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVFdmVudChFdmVudCosIGJvb2wgaXNXaW5kb3dFdmVudCk7DQpAQCAtNTksNyArNjAs
NyBAQA0KICAgICBJbWFnZURvY3VtZW50KiBtX2RvYzsNCiB9Ow0KICAgICANCi1jbGFzcyBJbWFn
ZVRva2VuaXplciA6IHB1YmxpYyBUb2tlbml6ZXIgew0KK2NsYXNzIEltYWdlVG9rZW5pemVyIDog
cHVibGljIFRva2VuaXplciwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0K
ICAgICBJbWFnZVRva2VuaXplcihJbWFnZURvY3VtZW50KiBkb2MpIDogbV9kb2MoZG9jKSB7fQ0K
IA0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMzgzMzQpDQorKysgV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtODgsNiArODgs
NyBAQA0KICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiDQogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNMb2NrLmg+DQogI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4NCisjaW5jbHVkZSA8d3Rm
L0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykNCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZS5oIg0KQEAgLTExNyw3ICsxMTgsNyBAQA0K
IGNvbnN0IHVuc2lnbmVkIGludCBjTWF4UGVuZGluZ1NvdXJjZUxlbmd0aEluTG93QmFuZHdpZHRo
RGlzcGxheSA9IDEyOCAqIDEwMjQ7DQogI2VuZGlmDQogDQotc3RydWN0IEZvcm1TdWJtaXNzaW9u
IHsNCitzdHJ1Y3QgRm9ybVN1Ym1pc3Npb24gOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiAgICAgY29uc3QgY2hhciogYWN0aW9uOw0KICAgICBTdHJpbmcgdXJsOw0KICAgICBSZWZQdHI8
Rm9ybURhdGE+IGRhdGE7DQpAQCAtMTM5LDcgKzE0MCw3IEBADQogICAgIH0NCiB9Ow0KIA0KLXN0
cnVjdCBTY2hlZHVsZWRSZWRpcmVjdGlvbiB7DQorc3RydWN0IFNjaGVkdWxlZFJlZGlyZWN0aW9u
IDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIGVudW0gVHlwZSB7IHJlZGlyZWN0
aW9uLCBsb2NhdGlvbkNoYW5nZSwgaGlzdG9yeU5hdmlnYXRpb24sIGxvY2F0aW9uQ2hhbmdlRHVy
aW5nTG9hZCB9Ow0KICAgICBUeXBlIHR5cGU7DQogICAgIGRvdWJsZSBkZWxheTsNCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9UZXh0RG9jdW1lbnQuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9s
b2FkZXIvVGV4dERvY3VtZW50LmNwcAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9sb2Fk
ZXIvVGV4dERvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTMxLDYgKzMxLDcgQEANCiAj
aW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiDQogI2luY2x1ZGUgIlRleHQuaCINCiAjaW5jbHVk
ZSAiWE1MVG9rZW5pemVyLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsNCiANCkBAIC0zOCw3ICszOSw3IEBADQogDQogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsNCiANCi1jbGFzcyBUZXh0VG9rZW5pemVyIDogcHVibGljIFRva2Vu
aXplciB7DQorY2xhc3MgVGV4dFRva2VuaXplciA6IHB1YmxpYyBUb2tlbml6ZXIsIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgVGV4dFRva2VuaXplcihEb2N1bWVu
dCopOw0KICAgICBUZXh0VG9rZW5pemVyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqKTsNCkluZGV4
OiBXZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3Jl
L2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2LDcg
QEANCiAjaWZuZGVmIFByb2dyZXNzVHJhY2tlcl9oDQogI2RlZmluZSBQcm9ncmVzc1RyYWNrZXJf
aA0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPg0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4NCiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPg0KQEAgLTM2LDcgKzM3LDcgQEANCiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOw0KIHN0
cnVjdCBQcm9ncmVzc0l0ZW07DQogDQotY2xhc3MgUHJvZ3Jlc3NUcmFja2VyIDogTm9uY29weWFi
bGUgew0KK2NsYXNzIFByb2dyZXNzVHJhY2tlciA6IE5vbmNvcHlhYmxlLCBwdWJsaWMgV1RGOjpG
YXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIFByb2dyZXNzVHJhY2tlcigpOw0KICAgICB+
UHJvZ3Jlc3NUcmFja2VyKCk7DQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24g
MzgzMzQpDQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0zOCw2ICszOCw3IEBADQogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIg0KICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiDQogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIC8qDQogIFRoaXMgZmlsZSBob2xkcyBlbXB0
eSBDbGllbnQgc3R1YnMgZm9yIHVzZSBieSBXZWJDb3JlLg0KQEAgLTU0LDcgKzU1LDcgQEANCiAN
CiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogDQotY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJs
aWMgQ2hyb21lQ2xpZW50IHsNCitjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJv
bWVDbGllbnQsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgdmly
dHVhbCB+RW1wdHlDaHJvbWVDbGllbnQoKSB7IH0NCiAgICAgdmlydHVhbCB2b2lkIGNocm9tZURl
c3Ryb3llZCgpIHsgfQ0KQEAgLTEzMCw3ICsxMzEsNyBAQA0KICAgICB2aXJ0dWFsIHZvaWQgcnVu
T3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pIHsgfQ0KIH07DQogDQot
Y2xhc3MgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7
DQorY2xhc3MgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVu
dCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICB2aXJ0dWFsIH5F
bXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgeyAgfQ0KICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2Fk
ZXJEZXN0cm95ZWQoKSB7IH0NCkBAIC0yNzMsNyArMjc0LDcgQEANCiANCiB9Ow0KIA0KLWNsYXNz
IEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7DQorY2xhc3MgRW1wdHlF
ZGl0b3JDbGllbnQgOiBwdWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NC
YXNlIHsNCiBwdWJsaWM6DQogICAgIHZpcnR1YWwgfkVtcHR5RWRpdG9yQ2xpZW50KCkgeyB9DQog
ICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgeyB9DQpAQCAtMzU0LDcgKzM1NSw3IEBA
DQogDQogfTsNCiANCi1jbGFzcyBFbXB0eUNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIENvbnRl
eHRNZW51Q2xpZW50IHsNCitjbGFzcyBFbXB0eUNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIENv
bnRleHRNZW51Q2xpZW50LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQog
ICAgIHZpcnR1YWwgfkVtcHR5Q29udGV4dE1lbnVDbGllbnQoKSB7ICB9DQogICAgIHZpcnR1YWwg
dm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgpIHsgfQ0KQEAgLTM3NCw3ICszNzUsNyBAQA0KICNl
bmRpZg0KIH07DQogDQotY2xhc3MgRW1wdHlEcmFnQ2xpZW50IDogcHVibGljIERyYWdDbGllbnQg
ew0KK2NsYXNzIEVtcHR5RHJhZ0NsaWVudCA6IHB1YmxpYyBEcmFnQ2xpZW50LCBwdWJsaWMgV1RG
OjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHZpcnR1YWwgfkVtcHR5RHJhZ0NsaWVu
dCgpIHt9DQogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlv
bihEcmFnRGVzdGluYXRpb25BY3Rpb24sIERyYWdEYXRhKikgeyB9DQpAQCAtMzg2LDcgKzM4Nyw3
IEBADQogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIHsgfQ0KIH07
DQogDQotY2xhc3MgRW1wdHlJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgSW5zcGVjdG9yQ2xpZW50
IHsNCitjbGFzcyBFbXB0eUluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQs
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgdmlydHVhbCB+RW1w
dHlJbnNwZWN0b3JDbGllbnQoKSB7IH0NCiANCkluZGV4OiBXZWJDb3JlL2xvYWRlci9NYWluUmVz
b3VyY2VMb2FkZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJj
ZUxvYWRlci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2xvYWRlci9NYWluUmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkZXIuaCINCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCINCiAjaW5jbHVk
ZSAiVGltZXIuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQpAQCAtNDAsNyArNDEsNyBA
QA0KICAgICBjbGFzcyBGb3JtU3RhdGU7DQogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsNCiAN
Ci0gICAgY2xhc3MgTWFpblJlc291cmNlTG9hZGVyIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsN
CisgICAgY2xhc3MgTWFpblJlc291cmNlTG9hZGVyIDogcHVibGljIFJlc291cmNlTG9hZGVyLCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWFpblJlc291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqKTsNCiAgICAgICAg
IHZpcnR1YWwgfk1haW5SZXNvdXJjZUxvYWRlcigpOw0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1Jl
cXVlc3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL1JlcXVlc3QuaAkocmV2aXNp
b24gMzgzMzQpDQorKysgV2ViQ29yZS9sb2FkZXIvUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjMsNiArMjMsNyBAQA0KICNpZm5kZWYgUmVxdWVzdF9oDQogI2RlZmluZSBSZXF1ZXN0X2gN
CiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCkBAIC0zMCw3ICszMSw3IEBADQogICAgIGNs
YXNzIENhY2hlZFJlc291cmNlOw0KICAgICBjbGFzcyBEb2NMb2FkZXI7DQogDQotICAgIGNsYXNz
IFJlcXVlc3Qgew0KKyAgICBjbGFzcyBSZXF1ZXN0IDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFz
ZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFJlcXVlc3QoRG9jTG9hZGVyKiwgQ2FjaGVkUmVz
b3VyY2UqLCBib29sIGluY3JlbWVudGFsLCBib29sIHNraXBDYW5Mb2FkQ2hlY2ssIGJvb2wgc2Vu
ZFJlc291cmNlTG9hZENhbGxiYWNrcyk7DQogICAgICAgICB+UmVxdWVzdCgpOw0KSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQ2xpZW50LmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUNsaWVudC5oCShyZXZpc2lvbiAzODMzNCkN
CisrKyBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjgsNiArMjgsNyBAQA0KICANCiAjaWZuZGVmIEljb25EYXRhYmFzZUNsaWVudF9o
DQogI2RlZmluZSBJY29uRGF0YWJhc2VDbGllbnRfaA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KIA0KIC8vIEFsbCBvZiB0aGVzZSBjbGllbnQgbWV0aG9kcyB3aWxsIGJlIGNhbGxl
ZCBmcm9tIGEgbm9uLW1haW4gdGhyZWFkDQogLy8gVGFrZSBhcHByb3ByaWF0ZSBtZWFzdXJlcw0K
QEAgLTM2LDcgKzM3LDcgQEANCiANCiBjbGFzcyBTdHJpbmc7DQogDQotY2xhc3MgSWNvbkRhdGFi
YXNlQ2xpZW50IHsNCitjbGFzcyBJY29uRGF0YWJhc2VDbGllbnQgOiBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHZpcnR1YWwgfkljb25EYXRhYmFzZUNsaWVudCgp
IHsgfQ0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybUltcG9ydCgpIHsgcmV0dXJuIHRydWU7IH0N
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAkocmV2aXNpb24gMzgzMzQpDQor
KysgV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQ0KQEAg
LTM3LDYgKzM3LDcgQEANCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4NCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+DQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4NCisjaW5jbHVkZSA8d3Rm
L0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkNCiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPg0KICNlbmRpZg0KQEAgLTY0LDcgKzY1LDcgQEANCiAgICAgSWNvbkxv
YWRVbmtub3duDQogfTsNCiANCi1jbGFzcyBJY29uRGF0YWJhc2UgOiBOb25jb3B5YWJsZSB7DQor
Y2xhc3MgSWNvbkRhdGFiYXNlIDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KIA0KIC8vICoqKiBNYWluIFRocmVhZCBPbmx5ICoqKg0KIHB1YmxpYzoNCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9pY29uL1BhZ2VVUkxSZWNvcmQuaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvbG9hZGVyL2ljb24vUGFnZVVSTFJlY29yZC5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL2xvYWRlci9pY29uL1BhZ2VVUkxSZWNvcmQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMxLDYg
KzMxLDcgQEANCiANCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCiANCisjaW5jbHVkZSA8
d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCiANCkBAIC01MSw3ICs1Miw3IEBADQogICAgIFN0cmluZyBp
Y29uVVJMOw0KIH07DQogDQotY2xhc3MgUGFnZVVSTFJlY29yZCA6IE5vbmNvcHlhYmxlIHsNCitj
bGFzcyBQYWdlVVJMUmVjb3JkIDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KIHB1YmxpYzoNCiAgICAgUGFnZVVSTFJlY29yZChjb25zdCBTdHJpbmcmIHBhZ2VVUkwp
Ow0KICAgICB+UGFnZVVSTFJlY29yZCgpOw0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkxvYWRlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVy
LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMjgsNiArMjgsNyBAQA0KIA0KICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlckNsaWVudC5oIg0KICNpbmNsdWRlIDxtZW1vcnk+DQorI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+DQogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQpAQCAtMzgsNyArMzks
NyBAQA0KIGNsYXNzIEtVUkw7DQogY2xhc3MgU2hhcmVkQnVmZmVyOw0KIA0KLWNsYXNzIEljb25M
b2FkZXIgOiBwcml2YXRlIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LCBOb25jb3B5YWJsZSB7DQor
Y2xhc3MgSWNvbkxvYWRlciA6IHByaXZhdGUgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQsIE5vbmNv
cHlhYmxlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRp
YyBzdGQ6OmF1dG9fcHRyPEljb25Mb2FkZXI+IGNyZWF0ZShGcmFtZSopOw0KICAgICB+SWNvbkxv
YWRlcigpOw0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvblJlY29yZC5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvblJlY29yZC5oCSh3b3JraW5nIGNvcHkpDQpA
QCAtMzAsNiArMzAsNyBAQA0KICNkZWZpbmUgSWNvblJlY29yZF9oDQogDQogI2luY2x1ZGUgIlBh
Z2VVUkxSZWNvcmQuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiDQogDQpAQCAt
NjQsNyArNjUsNyBAQA0KICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOw0KIH07DQogICAg
IA0KLWNsYXNzIEljb25SZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxJY29uUmVjb3JkPiB7DQor
Y2xhc3MgSWNvblJlY29yZCA6IHB1YmxpYyBSZWZDb3VudGVkPEljb25SZWNvcmQ+LCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgZnJpZW5kIGNsYXNzIFBhZ2VVUkxSZWNvcmQ7DQog
cHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJY29uUmVjb3JkPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiB1cmwpDQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRm9ybVN0YXRlLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuaAkocmV2aXNpb24gMzgzMzQpDQorKysg
V2ViQ29yZS9sb2FkZXIvRm9ybVN0YXRlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw2ICsyOSw3
IEBADQogI2lmbmRlZiBGb3JtU3RhdGVfaA0KICNkZWZpbmUgRm9ybVN0YXRlX2gNCiANCisjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4N
CiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KQEAg
LTM4LDcgKzM5LDcgQEANCiAgICAgY2xhc3MgRnJhbWU7DQogICAgIGNsYXNzIEhUTUxGb3JtRWxl
bWVudDsNCiANCi0gICAgY2xhc3MgRm9ybVN0YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9ybVN0
YXRlPiB7DQorICAgIGNsYXNzIEZvcm1TdGF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvcm1TdGF0
ZT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGNyZWF0ZShQYXNzUmVmUHRyPEhUTUxGb3JtRWxl
bWVudD4gZm9ybSwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhbHVlcywgUGFzc1Jl
ZlB0cjxGcmFtZT4gc291cmNlRnJhbWUpOw0KIA0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMzcsNiArMzcsNyBAQA0KICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCINCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIg0KICNpbmNsdWRlICJTdWJz
dGl0dXRlRGF0YS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4NCkBAIC02Niw3ICs2Nyw3IEBADQogICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQ
dHI8UmVzb3VyY2VMb2FkZXI+ID4gUmVzb3VyY2VMb2FkZXJTZXQ7DQogICAgIHR5cGVkZWYgVmVj
dG9yPFJlc291cmNlUmVzcG9uc2U+IFJlc3BvbnNlVmVjdG9yOw0KIA0KLSAgICBjbGFzcyBEb2N1
bWVudExvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPiB7DQorICAgIGNs
YXNzIERvY3VtZW50TG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+LCBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQ0KICAgICAgICAgew0KSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCShyZXZpc2lv
biAzODMzNCkNCisrKyBXZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMTMgKzI3LDE0IEBADQogICovDQogDQogI2luY2x1ZGUg
IlJlc291cmNlTG9hZGVyLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KICAgICBj
bGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjsNCiANCi0gICAgY2xhc3MgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQgew0KKyAgICBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlckNsaWVudCA6IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6
DQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsNCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNv
bnN0IGNoYXIqLCBpbnQpID0gMDsNCkBAIC00NSw3ICs0Niw3IEBADQogICAgICAgICB2aXJ0dWFs
IH5OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCgpIHsgfQ0KICAgICB9Ow0KIA0KLSAg
ICBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciA6IHB1YmxpYyBSZXNvdXJjZUxvYWRl
ciB7DQorICAgIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyIDogcHVibGljIFJlc291
cmNlTG9hZGVyLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGNyZWF0
ZShGcmFtZSosIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50Kik7DQogICAgICAgICB2
aXJ0dWFsIH5OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcigpOw0KSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL0NhY2hlZFNjcmlwdC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
U2NyaXB0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlw
dC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzAsMTIgKzMwLDEzIEBADQogDQogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlLmgiDQogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIg0KKyNpbmNsdWRlIDx3
dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCiAgICAgY2xh
c3MgRG9jTG9hZGVyOw0KIA0KLSAgICBjbGFzcyBDYWNoZWRTY3JpcHQgOiBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2Ugew0KKyAgICBjbGFzcyBDYWNoZWRTY3JpcHQgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2UsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBD
YWNoZWRTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7DQog
ICAgICAgICB2aXJ0dWFsIH5DYWNoZWRTY3JpcHQoKTsNCkluZGV4OiBXZWJDb3JlL2xvYWRlci9D
YWNoZWRGb250LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRGb250LmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuaAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTI4LDYgKzI4LDcgQEANCiANCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2Uu
aCINCiAjaW5jbHVkZSAiRm9udFJlbmRlcmluZ01vZGUuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPg0KIA0KICNpZiBFTkFCTEUoU1ZH
X0ZPTlRTKQ0KQEAgLTQzLDcgKzQ0LDcgQEANCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOw0KIGNs
YXNzIFNWR0ZvbnRFbGVtZW50Ow0KIA0KLWNsYXNzIENhY2hlZEZvbnQgOiBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2Ugew0KK2NsYXNzIENhY2hlZEZvbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UsIHB1
YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgQ2FjaGVkRm9udChjb25z
dCBTdHJpbmcmIHVybCk7DQogICAgIHZpcnR1YWwgfkNhY2hlZEZvbnQoKTsNCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9DYWNoZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUu
aAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTMyLDYgKzMyLDcgQEANCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCINCiAj
aW5jbHVkZSAiU3RyaW5nSGFzaC5oIg0KICNpbmNsdWRlICJsb2FkZXIuaCINCisjaW5jbHVkZSA8
d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4NCiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4NCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+DQpAQCAtNTcs
NyArNTgsNyBAQA0KIC8vIC0tLS0tLS18LS0tLS0rKysrKysrKysrKysrKyt8DQogLy8gLS0tLS0t
LXwtLS0tLSsrKysrKysrKysrKysrK3wrKysrKw0KIA0KLWNsYXNzIENhY2hlIDogTm9uY29weWFi
bGUgew0KK2NsYXNzIENhY2hlIDogTm9uY29weWFibGUsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jh
c2Ugew0KIHB1YmxpYzoNCiAgICAgZnJpZW5kIENhY2hlKiBjYWNoZSgpOw0KIA0KSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRl
ci9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL2xvYWRlci9DYWNo
ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjgsNiArMjgsNyBAQA0KICNpbmNsdWRlICJJ
bWFnZS5oIg0KICNpbmNsdWRlICJJbnRSZWN0LmgiDQogI2luY2x1ZGUgIlRpbWVyLmgiDQorI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4NCiAN
CiBuYW1lc3BhY2UgV2ViQ29yZSB7DQpAQCAtMzUsNyArMzYsNyBAQA0KIGNsYXNzIERvY0xvYWRl
cjsNCiBjbGFzcyBDYWNoZTsNCiANCi1jbGFzcyBDYWNoZWRJbWFnZSA6IHB1YmxpYyBDYWNoZWRS
ZXNvdXJjZSwgcHVibGljIEltYWdlT2JzZXJ2ZXIgew0KK2NsYXNzIENhY2hlZEltYWdlIDogcHVi
bGljIENhY2hlZFJlc291cmNlLCBwdWJsaWMgSW1hZ2VPYnNlcnZlciwgcHVibGljIFdURjo6RmFz
dEFsbG9jQmFzZSB7DQogICAgIGZyaWVuZCBjbGFzcyBDYWNoZTsNCiANCiBwdWJsaWM6DQpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvVXNlclN0eWxlU2hlZXRMb2FkZXIuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvbG9hZGVyL1VzZXJTdHlsZVNoZWV0TG9hZGVyLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvbG9hZGVyL1VzZXJTdHlsZVNoZWV0TG9hZGVyLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0zMyw2ICszMyw3IEBADQogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiDQog
DQogI2luY2x1ZGUgIkRvY3VtZW50LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+
DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KICAgICBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0
Ow0KQEAgLTQwLDcgKzQxLDcgQEANCiANCiAgICAgLy8gVGhpcyBjbGFzcyBpcyBkZXByZWNhdGVk
IGFuZCBzaG91bGQgbm90IGJlIHVzZWQgaW4gYW55IG5ldyBjb2RlLiBVc2VyDQogICAgIC8vIHN0
eWxlc2hlZXQgbG9hZGluZyBzaG91bGQgaW5zdGVhZCBoYXBwZW4gdGhyb3VnaCBQYWdlLg0KLSAg
ICBjbGFzcyBVc2VyU3R5bGVTaGVldExvYWRlciA6IENhY2hlZFJlc291cmNlQ2xpZW50IHsNCisg
ICAgY2xhc3MgVXNlclN0eWxlU2hlZXRMb2FkZXIgOiBDYWNoZWRSZXNvdXJjZUNsaWVudCwgcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFVzZXJTdHls
ZVNoZWV0TG9hZGVyKFBhc3NSZWZQdHI8RG9jdW1lbnQ+LCBjb25zdCBTdHJpbmcmIHVybCk7DQog
ICAgICAgICB+VXNlclN0eWxlU2hlZXRMb2FkZXIoKTsNCkluZGV4OiBXZWJDb3JlL2xvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRlci9UZXh0
UmVzb3VyY2VEZWNvZGVyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvbG9hZGVyL1Rl
eHRSZXNvdXJjZURlY29kZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI0LDEwICsyNCwxMSBAQA0K
ICNkZWZpbmUgVGV4dFJlc291cmNlRGVjb2Rlcl9oDQogDQogI2luY2x1ZGUgIlRleHREZWNvZGVy
LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNv
cmUgew0KIA0KLWNsYXNzIFRleHRSZXNvdXJjZURlY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiB7DQorY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFRleHRSZXNvdXJjZURlY29kZXI+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NC
YXNlIHsNCiBwdWJsaWM6DQogICAgIGVudW0gRW5jb2RpbmdTb3VyY2Ugew0KICAgICAgICAgRGVm
YXVsdEVuY29kaW5nLA0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmNwcAkocmV2aXNp
b24gMzgzMzQpDQorKysgV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtMzksMTIgKzM5LDEzIEBADQogI2luY2x1ZGUgIlNldHRpbmdzLmgiDQogI2lu
Y2x1ZGUgIlRleHQuaCINCiAjaW5jbHVkZSAiWE1MVG9rZW5pemVyLmgiDQorI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KICAgICANCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOw0KICAgICANCi1jbGFzcyBQbHVnaW5Ub2tlbml6ZXIgOiBw
dWJsaWMgVG9rZW5pemVyIHsNCitjbGFzcyBQbHVnaW5Ub2tlbml6ZXIgOiBwdWJsaWMgVG9rZW5p
emVyLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIFBsdWdpblRv
a2VuaXplcihEb2N1bWVudCogZG9jKSA6IG1fZG9jKGRvYyksIG1fZW1iZWRFbGVtZW50KDApIHt9
DQogICAgICAgICANCkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMyLDEwICszMiwxMSBAQA0KICNpbmNsdWRl
ICJTdWJzdGl0dXRlUmVzb3VyY2UuaCINCiANCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIN
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29yZSB7
DQogDQotY2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7
DQorY2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSwgcHVi
bGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0
IEtVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7DQogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSk7DQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaAkocmV2aXNpb24gMzgzMzQp
DQorKysgV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgJ
KHdvcmtpbmcgY29weSkNCkBAIC0zNCwxMiArMzQsMTMgQEANCiAjaW5jbHVkZSAiS1VSTC5oIg0K
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KIA0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBBcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uIDogTm9uY29weWFibGUgew0KK2NsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24gOiBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGlj
Og0KICAgICBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uKCk7DQogDQpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRG9jTG9hZGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRlci9Eb2NMb2Fk
ZXIuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkNCkBAIC0yOCw2ICsyOCw3IEBADQogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
LmgiDQogI2luY2x1ZGUgIkNhY2hlUG9saWN5LmgiDQogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIN
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4NCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4NCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+DQpAQCAtNDUsNyArNDYsNyBAQA0KIGNsYXNzIEtVUkw7DQogDQogLy8gVGhlIERvY0xvYWRl
ciBtYW5hZ2VzIHRoZSBsb2FkaW5nIG9mIHNjcmlwdHMvaW1hZ2VzL3N0eWxlc2hlZXRzIGZvciBh
IHNpbmdsZSBkb2N1bWVudC4NCi1jbGFzcyBEb2NMb2FkZXINCitjbGFzcyBEb2NMb2FkZXIgOiBw
dWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlDQogew0KIGZyaWVuZCBjbGFzcyBDYWNoZTsNCiBmcmll
bmQgY2xhc3MgSW1hZ2VMb2FkZXI7DQpJbmRleDogV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFj
a2VyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5j
cHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw3IEBADQogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiDQogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCINCiAjaW5jbHVkZSAi
U3lzdGVtVGltZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIHVzaW5n
IHN0ZDo6bWluOw0KIA0KQEAgLTQ2LDcgKzQ3LDcgQEANCiANCiBzdGF0aWMgY29uc3QgaW50IHBy
b2dyZXNzSXRlbURlZmF1bHRFc3RpbWF0ZWRMZW5ndGggPSAxMDI0ICogMTY7DQogDQotc3RydWN0
IFByb2dyZXNzSXRlbSB7DQorc3RydWN0IFByb2dyZXNzSXRlbSA6IHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KICAgICBQcm9ncmVzc0l0ZW0obG9uZyBsb25nIGxlbmd0aCkgDQogICAgICAg
ICA6IGJ5dGVzUmVjZWl2ZWQoMCkNCiAgICAgICAgICwgZXN0aW1hdGVkTGVuZ3RoKGxlbmd0aCkg
eyB9DQpJbmRleDogV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0zMSw2ICszMSw3IEBADQogIA0KICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5o
Ig0KICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9j
QmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICANCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7DQpAQCAtNDEsNyArNDIsNyBAQA0KICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7DQog
ICAgIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50Ow0KICAgICANCi0gICAgY2xhc3MgU3Vi
cmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgew0KKyAgICBjbGFzcyBTdWJy
ZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZXNvdXJjZUxvYWRlciwgcHVibGljIFdURjo6RmFzdEFs
bG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBjcmVhdGUoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2tpcENhbkxvYWRDaGVjayA9IGZhbHNlLCBib29s
IHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlLCBib29sIHNob3VsZENvbnRlbnRTbmlm
ZiA9IHRydWUpOw0KICAgICAgICAgDQpJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBs
aWNpdEFuaW1hdGlvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9J
bXBsaWNpdEFuaW1hdGlvbi5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMSwxMiArMzEs
MTMgQEANCiANCiAjaW5jbHVkZSAiQW5pbWF0aW9uQmFzZS5oIg0KICNpbmNsdWRlICJEb2N1bWVu
dC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsNCiANCiAvLyBBbiBJbXBsaWNpdEFuaW1hdGlvbiB0cmFja3MgdGhlIHN0YXRlIG9mIGEg
dHJhbnNpdGlvbiBvZiBhIHNwZWNpZmljIENTUyBwcm9wZXJ0eQ0KIC8vIGZvciBhIHNpbmdsZSBS
ZW5kZXJPYmplY3QuDQotY2xhc3MgSW1wbGljaXRBbmltYXRpb24gOiBwdWJsaWMgQW5pbWF0aW9u
QmFzZSB7DQorY2xhc3MgSW1wbGljaXRBbmltYXRpb24gOiBwdWJsaWMgQW5pbWF0aW9uQmFzZSwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbXBsaWNpdEFuaW1hdGlvbj4gY3JlYXRlKGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9u
LCBpbnQgYW5pbWF0aW5nUHJvcGVydHksIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIENvbXBvc2l0
ZUFuaW1hdGlvbiogY29tcG9zaXRlQW5pbWF0aW9uLCBSZW5kZXJTdHlsZSogZnJvbVN0eWxlKQ0K
ICAgICB7DQpJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24u
Y3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmlt
YXRpb24uY3BwCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zNSwxMCArMzUsMTEgQEAN
CiAjaW5jbHVkZSAiS2V5ZnJhbWVBbmltYXRpb24uaCINCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiDQogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NC
YXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KLWNsYXNzIENvbXBvc2l0ZUFuaW1h
dGlvblByaXZhdGUgew0KK2NsYXNzIENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGUgOiBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIENvbXBvc2l0ZUFuaW1hdGlvblBy
aXZhdGUoQW5pbWF0aW9uQ29udHJvbGxlciogYW5pbWF0aW9uQ29udHJvbGxlciwgQ29tcG9zaXRl
QW5pbWF0aW9uKiBjb21wb3NpdGVBbmltYXRpb24pDQogICAgICAgICA6IG1faXNTdXNwZW5kZWQo
ZmFsc2UpDQpJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVy
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMSwxMiArMzEsMTMg
QEANCiAjaW5jbHVkZSAiQ29tcG9zaXRlQW5pbWF0aW9uLmgiDQogI2luY2x1ZGUgIkZyYW1lLmgi
DQogI2luY2x1ZGUgIlRpbWVyLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQog
DQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KIHN0YXRpYyBjb25zdCBkb3VibGUgY0FuaW1hdGlv
blRpbWVyRGVsYXkgPSAwLjAyNTsNCiANCi1jbGFzcyBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZSB7DQorY2xhc3MgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUgOiBwdWJsaWMgV1RGOjpGYXN0
QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlKEZy
YW1lKik7DQogICAgIH5BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZSgpOw0KSW5kZXg6IFdlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oCShyZXZpc2lvbiAzODMz
NCkNCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMzEsNiArMzEsNyBAQA0KIA0KICNpbmNsdWRlICJBdG9taWNTdHJpbmcu
aCINCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4NCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+DQogDQpAQCAtNDMsNyArNDQs
NyBAQA0KIA0KIC8vIEEgQ29tcG9zaXRlQW5pbWF0aW9uIHJlcHJlc2VudHMgYSBjb2xsZWN0aW9u
IG9mIGFuaW1hdGlvbnMgdGhhdCBhcmUgcnVubmluZw0KIC8vIG9uIGEgc2luZ2xlIFJlbmRlck9i
amVjdCwgc3VjaCBhcyBhIG51bWJlciBvZiBwcm9wZXJ0aWVzIHRyYW5zaXRpb25pbmcgYXQgb25j
ZS4NCi1jbGFzcyBDb21wb3NpdGVBbmltYXRpb24gOiBwdWJsaWMgTm9uY29weWFibGUgew0KK2Ns
YXNzIENvbXBvc2l0ZUFuaW1hdGlvbiA6IHB1YmxpYyBOb25jb3B5YWJsZSwgcHVibGljIFdURjo6
RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBDb21wb3NpdGVBbmltYXRpb24oQW5pbWF0
aW9uQ29udHJvbGxlciogYW5pbWF0aW9uQ29udHJvbGxlcik7DQogICAgIH5Db21wb3NpdGVBbmlt
YXRpb24oKTsNCkluZGV4OiBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0
aW9uLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJh
bWVBbmltYXRpb24uaAkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDEyICszMywxMyBAQA0KICNpbmNs
dWRlICJEb2N1bWVudC5oIg0KICNpbmNsdWRlICJLZXlmcmFtZUxpc3QuaCINCiAjaW5jbHVkZSAi
UmVuZGVyU3R5bGUuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiBuYW1l
c3BhY2UgV2ViQ29yZSB7DQogDQogLy8gQSBLZXlmcmFtZUFuaW1hdGlvbiB0cmFja3MgdGhlIHN0
YXRlIG9mIGFuIGV4cGxpY2l0IGFuaW1hdGlvbg0KIC8vIGZvciBhIHNpbmdsZSBSZW5kZXJPYmpl
Y3QuDQotY2xhc3MgS2V5ZnJhbWVBbmltYXRpb24gOiBwdWJsaWMgQW5pbWF0aW9uQmFzZSB7DQor
Y2xhc3MgS2V5ZnJhbWVBbmltYXRpb24gOiBwdWJsaWMgQW5pbWF0aW9uQmFzZSwgcHVibGljIFdU
Rjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxLZXlm
cmFtZUFuaW1hdGlvbj4gY3JlYXRlKGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBpbnQgaW5kZXgsIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcG9zaXRl
QW5pbWF0aW9uLCBSZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0eWxlKQ0KICAgICB7DQpJbmRleDog
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkNCkBAIC00NSw2ICs0NSw3IEBADQogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiDQogI2lu
Y2x1ZGUgIlN5c3RlbVRpbWUuaCINCiAjaW5jbHVkZSAiVW5pdEJlemllci5oIg0KKyNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCkBAIC0y
MDQsNyArMjA1LDcgQEANCiB9Ow0KIA0KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KLWNsYXNzIFBy
b3BlcnR5V3JhcHBlciA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VD4gew0KK2NsYXNz
IFByb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VD4sIHB1Ymxp
YyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgUHJvcGVydHlXcmFwcGVyKGlu
dCBwcm9wLCBUIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5
bGU6OipzZXR0ZXIpKFQpKQ0KICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VD4ocHJv
cCwgZ2V0dGVyKQ0KQEAgLTIyMSw3ICsyMjIsNyBAQA0KICAgICB2b2lkIChSZW5kZXJTdHlsZTo6
Km1fc2V0dGVyKShUKTsNCiB9Ow0KIA0KLWNsYXNzIFByb3BlcnR5V3JhcHBlclNoYWRvdyA6IHB1
YmxpYyBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8U2hhZG93RGF0YSo+IHsNCitjbGFzcyBQcm9wZXJ0
eVdyYXBwZXJTaGFkb3cgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyR2V0dGVyPFNoYWRvd0RhdGEq
PiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogcHVibGljOg0KICAgICBQcm9wZXJ0eVdy
YXBwZXJTaGFkb3coaW50IHByb3AsIFNoYWRvd0RhdGEqIChSZW5kZXJTdHlsZTo6KmdldHRlciko
KSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFNoYWRvd0RhdGEqLCBib29sKSkN
CiAgICAgICAgIDogUHJvcGVydHlXcmFwcGVyR2V0dGVyPFNoYWRvd0RhdGEqPihwcm9wLCBnZXR0
ZXIpDQpAQCAtMjU5LDcgKzI2MCw3IEBADQogICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0
ZXIpKFNoYWRvd0RhdGEqLCBib29sKTsNCiB9Ow0KIA0KLWNsYXNzIFByb3BlcnR5V3JhcHBlck1h
eWJlSW52YWxpZENvbG9yIDogcHVibGljIFByb3BlcnR5V3JhcHBlckJhc2Ugew0KK2NsYXNzIFBy
b3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yIDogcHVibGljIFByb3BlcnR5V3JhcHBlckJh
c2UsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgUHJvcGVydHlX
cmFwcGVyTWF5YmVJbnZhbGlkQ29sb3IoaW50IHByb3AsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5
bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBD
b2xvciYpKQ0KICAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApDQpJbmRleDogV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL05hdmln
YXRvci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHdv
cmtpbmcgY29weSkNCkBAIC0yMCw2ICsyMCw3IEBADQogI2lmbmRlZiBOYXZpZ2F0b3JfaA0KICNk
ZWZpbmUgTmF2aWdhdG9yX2gNCiANCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4N
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPg0KQEAgLTMzLDcgKzM0LDcgQEANCiAgICAgY2xhc3Mg
UGx1Z2luQXJyYXk7DQogICAgIGNsYXNzIFN0cmluZzsNCiANCi0gICAgY2xhc3MgTmF2aWdhdG9y
IDogcHVibGljIFJlZkNvdW50ZWQ8TmF2aWdhdG9yPiB7DQorICAgIGNsYXNzIE5hdmlnYXRvciA6
IHB1YmxpYyBSZWZDb3VudGVkPE5hdmlnYXRvcj4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ug
ew0KICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOYXZpZ2F0b3I+IGNy
ZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXZpZ2F0b3IoZnJhbWUp
KTsgfQ0KICAgICAgICAgfk5hdmlnYXRvcigpOw0KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9wb3Np
dGlvbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmgJKHJldmlz
aW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjgsMTMgKzI4LDE0IEBADQogDQogI2luY2x1ZGUgIkV2ZW50LmgiDQogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7DQogDQotY2xhc3MgR2VvcG9zaXRpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxHZW9wb3NpdGlvbj4gew0KK2NsYXNzIEdlb3Bvc2l0aW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8R2VvcG9zaXRpb24+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJs
aWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb3Bvc2l0aW9uPiBjcmVhdGUoZG91YmxlIGxh
dGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFj
eSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBoZWFkaW5nLCBkb3VibGUgc3BlZWQs
IERPTVRpbWVTdGFtcCB0aW1lc3RhbXApIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW9wb3NpdGlv
bihsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhbHRpdHVkZSwgYWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJh
Y3ksIGhlYWRpbmcsIHNwZWVkLCB0aW1lc3RhbXApKTsgfQ0KICAgICANCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBj
b3B5KQ0KQEAgLTMwLDYgKzMwLDcgQEANCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiDQogI2lu
Y2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIg0KICNpbmNsdWRlICJLVVJMLmgiDQorI2luY2x1ZGUg
PHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0KQEAgLTQz
LDcgKzQ0LDcgQEANCiAgICAgICAgIEVkaXRhYmxlTGlua05ldmVyTGl2ZQ0KICAgICB9Ow0KIA0K
LSAgICBjbGFzcyBTZXR0aW5ncyB7DQorICAgIGNsYXNzIFNldHRpbmdzIDogcHVibGljIFdURjo6
RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIFNldHRpbmdzKFBhZ2UqKTsN
CiANCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDYgKzI5LDcgQEANCiAjaW5jbHVkZSAi
S1VSTC5oIg0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+DQpAQCAtNjQsNyArNjUsNyBAQA0KIA0KICAgICB0eXBlZGVmIGludCBFeGNl
cHRpb25Db2RlOw0KIA0KLSAgICBjbGFzcyBET01XaW5kb3cgOiBwdWJsaWMgUmVmQ291bnRlZDxE
T01XaW5kb3c+IHsNCisgICAgY2xhc3MgRE9NV2luZG93IDogcHVibGljIFJlZkNvdW50ZWQ8RE9N
V2luZG93PiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVdpbmRvdz4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IERPTVdpbmRvdyhmcmFtZSkpOyB9DQogICAgICAgICB2aXJ0dWFs
IH5ET01XaW5kb3coKTsNCkluZGV4OiBXZWJDb3JlL3BhZ2UvTG9jYXRpb24uaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL3BhZ2UvTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDYgKzI5LDcgQEANCiAj
aWZuZGVmIExvY2F0aW9uX2gNCiAjZGVmaW5lIExvY2F0aW9uX2gNCiANCisjaW5jbHVkZSA8d3Rm
L0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiANCkBAIC0zOCw3ICszOSw3IEBADQogICAgIGNsYXNzIEtV
Ukw7DQogICAgIGNsYXNzIFN0cmluZzsNCiANCi0gICAgY2xhc3MgTG9jYXRpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxMb2NhdGlvbj4gew0KKyAgICBjbGFzcyBMb2NhdGlvbiA6IHB1YmxpYyBSZWZD
b3VudGVkPExvY2F0aW9uPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1Ymxp
YzoNCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvY2F0aW9uPiBjcmVhdGUoRnJhbWUqIGZy
YW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTG9jYXRpb24oZnJhbWUpKTsgfQ0KIA0KSW5kZXg6
IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUv
cGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wYWdl
L1Bvc2l0aW9uT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjYsMTIgKzI2LDEzIEBADQog
I2lmbmRlZiBQb3NpdGlvbk9wdGlvbnNfaA0KICNkZWZpbmUgUG9zaXRpb25PcHRpb25zX2gNCiAN
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4NCiANCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7DQogICAgIA0KLWNsYXNzIFBvc2l0aW9uT3B0aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVkPFBv
c2l0aW9uT3B0aW9ucz4gew0KK2NsYXNzIFBvc2l0aW9uT3B0aW9ucyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBvc2l0aW9uT3B0aW9ucz4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1Ymxp
YzoNCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBjcmVhdGUoYm9vbCBo
aWdoQWNjdXJhY3ksIHVuc2lnbmVkIHRpbWVvdXQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3Np
dGlvbk9wdGlvbnMoaGlnaEFjY3VyYWN5LCB0aW1lb3V0KSk7IH0NCiANCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTMxLDYgKzMxLDcgQEANCiAjaW5jbHVkZSAiSW50
UG9pbnQuaCINCiAjaW5jbHVkZSAiSW50UmVjdC5oIg0KICNpbmNsdWRlICJLVVJMLmgiDQorI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KIA0K
QEAgLTQ3LDcgKzQ4LDcgQEANCiAgICAgY2xhc3MgUmFuZ2U7DQogICAgIGNsYXNzIFNlbGVjdGlv
bkNvbnRyb2xsZXI7DQogICAgIA0KLSAgICBjbGFzcyBEcmFnQ29udHJvbGxlciB7DQorICAgIGNs
YXNzIERyYWdDb250cm9sbGVyIDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1
YmxpYzoNCiAgICAgICAgIERyYWdDb250cm9sbGVyKFBhZ2UqLCBEcmFnQ2xpZW50Kik7DQogICAg
ICAgICB+RHJhZ0NvbnRyb2xsZXIoKTsNCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI4LDYg
KzI4LDcgQEANCiAjaW5jbHVkZSAiSW50U2l6ZS5oIg0KICNpbmNsdWRlICJSZW5kZXJMYXllci5o
Ig0KICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNl
Lmg+DQogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+DQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4N
CiANCkBAIC00OCw3ICs0OSw3IEBADQogDQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFRp
bWVyOw0KIA0KLWNsYXNzIEZyYW1lVmlldyA6IHB1YmxpYyBTY3JvbGxWaWV3IHsNCitjbGFzcyBG
cmFtZVZpZXcgOiBwdWJsaWMgU2Nyb2xsVmlldywgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogcHVibGljOg0KICAgICBmcmllbmQgY2xhc3MgUmVuZGVyVmlldzsNCiANCkluZGV4OiBXZWJD
b3JlL3BhZ2UvRnJhbWVQcml2YXRlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BhZ2UvRnJh
bWVQcml2YXRlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGFnZS9GcmFtZVByaXZh
dGUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTM1LDYgKzM1LDcgQEANCiAjaW5jbHVkZSAiU2VsZWN0
aW9uQ29udHJvbGxlci5oIg0KICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiDQogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiANCiAj
aWYgUExBVEZPUk0oV0lOKQ0KICNpbmNsdWRlICJGcmFtZVdpbi5oIg0KQEAgLTQ2LDcgKzQ3LDcg
QEANCiAgICAgY2xhc3MgVXNlclN0eWxlU2hlZXRMb2FkZXI7DQogI2VuZGlmDQogICAgIA0KLSAg
ICBjbGFzcyBGcmFtZVByaXZhdGUgew0KKyAgICBjbGFzcyBGcmFtZVByaXZhdGUgOiBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgRnJhbWVQcml2YXRl
KFBhZ2UqLCBGcmFtZSogcGFyZW50LCBGcmFtZSogdGhpc0ZyYW1lLCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQqLCBGcmFtZUxvYWRlckNsaWVudCopOw0KICAgICAgICAgfkZyYW1lUHJpdmF0ZSgpOw0K
SW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdl
L0ZyYW1lLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMzIsNiArMzIsNyBAQA0KICNpbmNsdWRlICJFZGl0QWN0aW9uLmgiDQog
I2luY2x1ZGUgIlJlbmRlckxheWVyLmgiDQogI2luY2x1ZGUgIlRleHRHcmFudWxhcml0eS5oIg0K
KyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KICNpZiBQTEFURk9STShNQUMpDQog
I2lmbmRlZiBfX09CSkNfXw0KQEAgLTYyLDcgKzYzLDcgQEANCiANCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgVGltZXI7DQogDQotY2xhc3MgRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxG
cmFtZT4gew0KK2NsYXNzIEZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8RnJhbWU+LCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZy
YW1lPiBjcmVhdGUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQsIEZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQpDQogICAgIHsNCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29y
a2luZyBjb3B5KQ0KQEAgLTU3LDYgKzU3LDcgQEANCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCINCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCINCiAjaW5jbHVkZSA8YWxnb3JpdGhtPg0KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPg0K
IA0KICNpZiBFTkFCTEUoREFUQUJBU0UpDQpAQCAtNzksNyArODAsNyBAQA0KIA0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGljIFRpbWVyQmFz
ZSB7DQorY2xhc3MgUG9zdE1lc3NhZ2VUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UsIHB1YmxpYyBX
VEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoNCiAgICAgUG9zdE1lc3NhZ2VUaW1lcihET01X
aW5kb3cqIHdpbmRvdywgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50LCBTZWN1cml0eU9y
aWdpbiogdGFyZ2V0T3JpZ2luKQ0KICAgICAgICAgOiBtX3dpbmRvdyh3aW5kb3cpDQpJbmRleDog
V2ViQ29yZS9wYWdlL1BhZ2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmgJ
KHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkN
CkBAIC0yOCw2ICsyOCw3IEBADQogI2lmIFBMQVRGT1JNKE1BQykNCiAjaW5jbHVkZSAiU2NoZWR1
bGVQYWlyLmgiDQogI2VuZGlmDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+DQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4NCiANCkBAIC02
Nyw3ICs2OCw3IEBADQogICAgIGVudW0gVGV4dENhc2VTZW5zaXRpdml0eSB7IFRleHRDYXNlU2Vu
c2l0aXZlLCBUZXh0Q2FzZUluc2Vuc2l0aXZlIH07DQogICAgIGVudW0gRmluZERpcmVjdGlvbiB7
IEZpbmREaXJlY3Rpb25Gb3J3YXJkLCBGaW5kRGlyZWN0aW9uQmFja3dhcmQgfTsNCiANCi0gICAg
Y2xhc3MgUGFnZSA6IE5vbmNvcHlhYmxlIHsNCisgICAgY2xhc3MgUGFnZSA6IE5vbmNvcHlhYmxl
LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3Rh
dGljIHZvaWQgc2V0TmVlZHNSZWFwcGx5U3R5bGVzKCk7DQogDQpJbmRleDogV2ViQ29yZS9wYWdl
L0Nocm9tZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lv
biAzODMzNCkNCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
Myw2ICsyMyw3IEBADQogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiDQogI2luY2x1ZGUgIkZvY3Vz
RGlyZWN0aW9uLmgiDQogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCINCisjaW5jbHVkZSA8d3RmL0Zh
c3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4NCiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPg0KIA0KQEAgLTQ2LDcgKzQ3LDcgQEANCiAgICAgc3RydWN0IEZyYW1lTG9hZFJl
cXVlc3Q7DQogICAgIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsNCiAgICAgDQotICAgIGNsYXNzIENo
cm9tZSA6IHB1YmxpYyBIb3N0V2luZG93IHsNCisgICAgY2xhc3MgQ2hyb21lIDogcHVibGljIEhv
c3RXaW5kb3csIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAg
ICAgICBDaHJvbWUoUGFnZSosIENocm9tZUNsaWVudCopOw0KICAgICAgICAgfkNocm9tZSgpOw0K
SW5kZXg6IFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaAkocmV2aXNpb24gMzgzMzQp
DQorKysgV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjYsNiArMjYsNyBAQA0KICNpZm5kZWYgQ29udGV4dE1lbnVDb250cm9sbGVyX2gNCiAj
ZGVmaW5lIENvbnRleHRNZW51Q29udHJvbGxlcl9oDQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxs
b2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPg0KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+DQogDQpAQCAtMzcsNyArMzgsNyBAQA0KICAgICBjbGFzcyBFdmVudDsNCiAgICAg
Y2xhc3MgUGFnZTsNCiANCi0gICAgY2xhc3MgQ29udGV4dE1lbnVDb250cm9sbGVyIDogTm9uY29w
eWFibGUgew0KKyAgICBjbGFzcyBDb250ZXh0TWVudUNvbnRyb2xsZXIgOiBOb25jb3B5YWJsZSwg
cHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAgICAgIENvbnRl
eHRNZW51Q29udHJvbGxlcihQYWdlKiwgQ29udGV4dE1lbnVDbGllbnQqKTsNCiAgICAgICAgIH5D
b250ZXh0TWVudUNvbnRyb2xsZXIoKTsNCkluZGV4OiBXZWJDb3JlL3BhZ2UvU2NyZWVuLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BhZ2UvU2NyZWVuLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysr
IFdlYkNvcmUvcGFnZS9TY3JlZW4uaAkod29ya2luZyBjb3B5KQ0KQEAgLTMwLDYgKzMwLDcgQEAN
CiAjaWZuZGVmIFNjcmVlbl9oDQogI2RlZmluZSBTY3JlZW5faA0KIA0KKyNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPg0KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPg0KIA0KQEAgLTM3LDcgKzM4LDcgQEANCiANCiAgICAgY2xhc3Mg
RnJhbWU7DQogDQotICAgIGNsYXNzIFNjcmVlbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNjcmVlbj4g
ew0KKyAgICBjbGFzcyBTY3JlZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxTY3JlZW4+LCBwdWJsaWMg
V1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2NyZWVuPiBjcmVhdGUoRnJhbWUgKmZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
U2NyZWVuKGZyYW1lKSk7IH0NCiAgICAgICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7DQpJbmRl
eDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC00OCw2ICs0OCw3IEBADQogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCINCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCINCiAjaW5jbHVkZSAiU3lzdGVtVGlt
ZS5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsNCiANCkBAIC01NSwxMiArNTYsMTIgQEANCiANCiBkb3VibGUgRnJhbWVWaWV3OjpzQ3Vy
cmVudFBhaW50VGltZVN0YW1wID0gMC4wOw0KIA0KLXN0cnVjdCBTY2hlZHVsZWRFdmVudCB7DQor
c3RydWN0IFNjaGVkdWxlZEV2ZW50IDogcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAg
IFJlZlB0cjxFdmVudD4gbV9ldmVudDsNCiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0Tm9kZT4gbV9l
dmVudFRhcmdldDsNCiB9Ow0KIA0KLWNsYXNzIEZyYW1lVmlld1ByaXZhdGUgew0KK2NsYXNzIEZy
YW1lVmlld1ByaXZhdGUgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwdWJsaWM6DQog
ICAgIEZyYW1lVmlld1ByaXZhdGUoRnJhbWVWaWV3KiB2aWV3KQ0KICAgICAgICAgOiBtX3Nsb3dS
ZXBhaW50T2JqZWN0Q291bnQoMCkNCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHJldmlzaW9uIDM4MzM0KQ0K
KysrIFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2
LDcgQEANCiAjaWZuZGVmIFBhZ2VHcm91cF9oDQogI2RlZmluZSBQYWdlR3JvdXBfaA0KIA0KKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPg0K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4NCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIg0K
QEAgLTM2LDcgKzM3LDcgQEANCiAgICAgY2xhc3MgTG9jYWxTdG9yYWdlOw0KICAgICBjbGFzcyBQ
YWdlOw0KIA0KLSAgICBjbGFzcyBQYWdlR3JvdXAgOiBOb25jb3B5YWJsZSB7DQorICAgIGNsYXNz
IFBhZ2VHcm91cCA6IE5vbmNvcHlhYmxlLCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAg
ICAgcHVibGljOg0KICAgICAgICAgUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgbmFtZSk7DQogICAg
ICAgICBQYWdlR3JvdXAoUGFnZSopOw0KSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluay5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluay5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzIsMTAgKzMyLDExIEBA
DQogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCINCiAjaW5jbHVkZSAiSFRNTEFyZWFF
bGVtZW50LmgiDQogI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50LmgiDQorI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KICAgICANCi1jbGFzcyBB
Y2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3Qgew0K
K2NsYXNzIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9i
amVjdCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgICAgICANCiBwcml2YXRlOg0K
ICAgICBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKCk7DQpJbmRleDogV2ViQ29yZS9wYWdlL0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGFnZS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCw2
ICszMCw3IEBADQogI2RlZmluZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0X2gNCiANCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPg0KIA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiAgICAgDQpAQCAtNTQsNyArNTUsNyBAQA0K
IGNsYXNzIFN0cmluZzsNCiBjbGFzcyBXaWRnZXQ7DQogICAgIA0KLWNsYXNzIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7DQorY2xhc3MgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0LCBwdWJs
aWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiBwcm90ZWN0ZWQ6DQogICAgIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0Kik7DQogcHVibGljOg0KSW5kZXg6IFdlYkNvcmUvcGFn
ZS9BWE9iamVjdENhY2hlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BhZ2UvQVhPYmplY3RD
YWNoZS5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMjgsNiArMjgsNyBAQA0KIA0KICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmgiDQogI2luY2x1ZGUgPGxpbWl0cy5oPg0KKyNpbmNsdWRlIDx3dGYvRmFz
dEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPg0KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+DQpAQCAtNTUsNyArNTYsNyBAQA0K
ICAgICAgICAgRUFmZmluaXR5IGFmZmluaXR5Ow0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBBWE9i
amVjdENhY2hlIHsNCisgICAgY2xhc3MgQVhPYmplY3RDYWNoZSA6IHB1YmxpYyBXVEY6OkZhc3RB
bGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICB+QVhPYmplY3RDYWNoZSgpOw0KICAg
ICAgICAgDQpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oCShyZXZpc2lvbiAzODMzNCkNCisrKyBXZWJD
b3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCw2ICszMCw3IEBA
DQogI2lmbmRlZiBET01TZWxlY3Rpb25faA0KICNkZWZpbmUgRE9NU2VsZWN0aW9uX2gNCiANCisj
aW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4NCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4NCkBAIC00Myw3ICs0NCw3IEBADQogDQogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7
DQogDQotICAgIGNsYXNzIERPTVNlbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVNlbGVj
dGlvbj4gew0KKyAgICBjbGFzcyBET01TZWxlY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxET01T
ZWxlY3Rpb24+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NU2VsZWN0aW9uPiBjcmVhdGUoRnJhbWUqIGZyYW1l
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NU2VsZWN0aW9uKGZyYW1lKSk7IH0NCiANCkluZGV4
OiBXZWJDb3JlL3BhZ2UvSGlzdG9yeS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL0hp
c3RvcnkuaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTI2LDYgKzI2LDcgQEANCiAjaWZuZGVmIEhpc3RvcnlfaA0KICNkZWZp
bmUgSGlzdG9yeV9oDQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+DQogDQpA
QCAtMzMsNyArMzQsNyBAQA0KIA0KICAgICBjbGFzcyBGcmFtZTsNCiANCi0gICAgY2xhc3MgSGlz
dG9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPEhpc3Rvcnk+IHsNCisgICAgY2xhc3MgSGlzdG9yeSA6
IHB1YmxpYyBSZWZDb3VudGVkPEhpc3Rvcnk+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsN
CiAgICAgcHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SGlzdG9yeT4gY3JlYXRl
KEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEhpc3RvcnkoZnJhbWUpKTsgfQ0K
ICAgICAgICAgDQpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnNvbGUuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvcGFnZS9Db25zb2xlLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGFn
ZS9Db25zb2xlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw3IEBADQogDQogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiDQogI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4NCisj
aW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4NCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4NCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4NCiANCkBAIC02Nyw3ICs2OCw3IEBADQog
ICAgICAgICBFbmRHcm91cE1lc3NhZ2VMZXZlbA0KICAgICB9Ow0KIA0KLSAgICBjbGFzcyBDb25z
b2xlIDogcHVibGljIFJlZkNvdW50ZWQ8Q29uc29sZT4gew0KKyAgICBjbGFzcyBDb25zb2xlIDog
cHVibGljIFJlZkNvdW50ZWQ8Q29uc29sZT4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0K
ICAgICBwdWJsaWM6DQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25zb2xlPiBjcmVhdGUo
RnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ29uc29sZShmcmFtZSkpOyB9DQog
DQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL3BhZ2UvR2VvbG9jYXRpb24uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw3IEBADQogI2luY2x1
ZGUgIlBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIg0KICNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMu
aCINCiAjaW5jbHVkZSAiVGltZXIuaCINCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4N
CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+DQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+DQog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+DQpAQCAtNDQsNyArNDUsNyBAQA0KIGNsYXNzIEZyYW1l
Ow0KIGNsYXNzIEdlb3Bvc2l0aW9uOw0KIA0KLWNsYXNzIEdlb2xvY2F0aW9uIDogcHVibGljIFJl
ZkNvdW50ZWQ8R2VvbG9jYXRpb24+LCBwdWJsaWMgR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50IHsN
CitjbGFzcyBHZW9sb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uPiwgcHVi
bGljIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7
DQogcHVibGljOg0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW9sb2NhdGlvbj4gY3JlYXRlKEZy
YW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEdlb2xvY2F0aW9uKGZyYW1lKSk7IH0N
CiANCkBAIC02NCw3ICs2NSw3IEBADQogcHJpdmF0ZToNCiAgICAgR2VvbG9jYXRpb24oRnJhbWUq
KTsNCiANCi0gICAgY2xhc3MgR2VvTm90aWZpZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9Ob3Rp
Zmllcj4gew0KKyAgICBjbGFzcyBHZW9Ob3RpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb05v
dGlmaWVyPiwgcHVibGljIFdURjo6RmFzdEFsbG9jQmFzZSB7DQogICAgIHB1YmxpYzoNCiAgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb05vdGlmaWVyPiBjcmVhdGUoUGFzc1JlZlB0cjxQb3Np
dGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JD
YWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW9Ob3RpZmllcihwb3NpdGlvbkNhbGxiYWNrLCBwb3Np
dGlvbkVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpKTsgfQ0KICAgICAgICAgDQpJbmRleDogV2ViQ29y
ZS9wYWdlL0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oCShyZXZp
c2lvbiAzODMzNCkNCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29u
dGFpbmVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMiwxMCArMzIsMTEgQEANCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eU9iamVjdC5oIg0KICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIN
CiAjaW5jbHVkZSAiSW50UmVjdC5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0K
IA0KIG5hbWVzcGFjZSBXZWJDb3JlIHsNCiANCi1jbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVIZWFk
ZXJDb250YWluZXIgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7DQorY2xhc3MgQWNjZXNz
aWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3Qs
IHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KICAgICANCiBwcml2YXRlOg0KICAgICBBY2Nl
c3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIoKTsNCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BhZ2UvQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGFn
ZS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAkod29ya2luZyBjb3B5KQ0KQEAgLTMyLDEyICsz
MiwxMyBAQA0KICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiDQogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlUYWJsZS5oIg0KICNpbmNsdWRlICJJbnRSZWN0LmgiDQorI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0KICAgICANCiBjbGFz
cyBSZW5kZXJUYWJsZVNlY3Rpb247DQogDQotY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
IDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3Qgew0KK2NsYXNzIEFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbiA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0LCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgDQogcHJpdmF0ZToNCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
KCk7DQpJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNv
cmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNywxMiArMjcsMTMg
QEANCiAjZGVmaW5lIFBvc2l0aW9uRXJyb3JfaA0KIA0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIg0KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPg0KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPg0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPg0KIA0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsNCiAgICAgDQotY2xhc3MgUG9zaXRpb25FcnJvciA6IHB1YmxpYyBSZWZDb3VudGVk
PFBvc2l0aW9uRXJyb3I+IHsNCitjbGFzcyBQb3NpdGlvbkVycm9yIDogcHVibGljIFJlZkNvdW50
ZWQ8UG9zaXRpb25FcnJvcj4sIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ugew0KIHB1YmxpYzoN
CiAgICAgZW51bSBFcnJvckNvZGUgew0KICAgICAgICAgUEVSTUlTU0lPTl9FUlJPUiA9IDEsDQpJ
bmRleDogV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw2ICsyOSw3IEBADQog
I2lmbmRlZiBTZWN1cml0eU9yaWdpbl9oDQogI2RlZmluZSBTZWN1cml0eU9yaWdpbl9oDQogDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4NCkBAIC0zOSw3ICs0MCw3IEBADQogDQogICAgIGNsYXNzIEtVUkw7DQogICAgIA0KLSAg
ICBjbGFzcyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFNlY3VyaXR5
T3JpZ2luPiB7DQorICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVibGljIFRocmVhZFNhZmVT
aGFyZWQ8U2VjdXJpdHlPcmlnaW4+LCBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsNCiAgICAg
cHVibGljOg0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0
ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7DQogICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
KTsNCkluZGV4OiBXZWJDb3JlL3BhZ2UvQmFySW5mby5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9wYWdlL0JhckluZm8uaAkocmV2aXNpb24gMzgzMzQpDQorKysgV2ViQ29yZS9wYWdlL0Jhcklu
Zm8uaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDYgKzI5LDcgQEANCiAjaWZuZGVmIEJhckluZm9f
aA0KICNkZWZpbmUgQmFySW5mb19oDQogDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+
DQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+DQogDQpAQCAtMzYsNyArMzcsNyBAQA0KIA0KICAgICBjbGFzcyBGcmFtZTsNCiANCi0gICAg
Y2xhc3MgQmFySW5mbyA6IHB1YmxpYyBSZWZDb3VudGVkPEJhckluZm8+IHsNCisgICAgY2xhc3Mg
QmFySW5mbyA6IHB1YmxpYyBSZWZDb3VudGVkPEJhckluZm8+LCBwdWJsaWMgV1RGOjpGYXN0QWxs
b2NCYXNlIHsNCiAgICAgcHVibGljOg0KICAgICAgICAgZW51bSBUeXBlIHsgTG9jYXRpb25iYXIs
IE1lbnViYXIsIFBlcnNvbmFsYmFyLCBTY3JvbGxiYXJzLCBTdGF0dXNiYXIsIFRvb2xiYXIgfTsN
CiANCkluZGV4OiBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI3LDYgKzI3
LDcgQEANCiAjZGVmaW5lIEZvY3VzQ29udHJvbGxlcl9oDQogDQogI2luY2x1ZGUgIkZvY3VzRGly
ZWN0aW9uLmgiDQorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+DQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4NCiANCkBAIC0zNyw3ICszOCw3
IEBADQogICAgIGNsYXNzIE5vZGU7DQogICAgIGNsYXNzIFBhZ2U7DQogDQotICAgIGNsYXNzIEZv
Y3VzQ29udHJvbGxlciB7DQorICAgIGNsYXNzIEZvY3VzQ29udHJvbGxlciA6IHB1YmxpYyBXVEY6
OkZhc3RBbGxvY0Jhc2Ugew0KICAgICBwdWJsaWM6DQogICAgICAgICBGb2N1c0NvbnRyb2xsZXIo
UGFnZSopOw0KIA0KSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0
aW9uLmgJKHJldmlzaW9uIDM4MzM0KQ0KKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5TGlz
dEJveE9wdGlvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsNiArMzEsNyBAQA0KIA0KICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiDQogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiDQor
I2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+DQogDQogbmFtZXNwYWNlIFdlYkNvcmUgew0K
IA0KQEAgLTQwLDcgKzQxLDcgQEANCiBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsNCiBjbGFzcyBT
dHJpbmc7DQogICAgIA0KLWNsYXNzIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uIDogcHVibGlj
IEFjY2Vzc2liaWxpdHlPYmplY3Qgew0KK2NsYXNzIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9u
IDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3QsIHB1YmxpYyBXVEY6OkZhc3RBbGxvY0Jhc2Ug
ew0KIA0KIHByaXZhdGU6DQogICAgIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKCk7DQpJbmRl
eDogV2ViS2l0LnByaQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC5wcmkJKHJldmlzaW9uIDM4MzM0
KQ0KKysrIFdlYktpdC5wcmkJKHdvcmtpbmcgY29weSkNCkBAIC0yNyw2ICsyNyw4IEBADQogQkFT
RV9ESVIgPSAkJFBXRA0KIElOQ0xVREVQQVRIICs9ICQkUFdEL1dlYktpdC9xdC9BcGkNCiANCitJ
TkNMVURFUEFUSCArPSAkJFBXRC9KYXZhU2NyaXB0Q29yZQ0KKw0KICMNCiAjIEZvciBidWlsZHMg
aW5zaWRlIFF0IHdlIGludGVycHJldCB0aGUgb3V0cHV0IHJ1bGUgYW5kIHRoZSBpbnB1dCBvZiBl
YWNoIGV4dHJhIGNvbXBpbGVyIG1hbnVhbGx5DQogIyBhbmQgYWRkIHRoZSByZXN1bHRpbmcgc291
cmNlcyB0byB0aGUgU09VUkNFUyB2YXJpYWJsZSwgYmVjYXVzZSB0aGUgYnVpbGQgaW5zaWRlIFF0
IGNvbnRhaW5zIGFscmVhZHkNCg==
</data>
<flag name="review"
          id="11730"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>25334</attachid>
            <date>2008-11-20 21:20:41 -0800</date>
            <delta_ts>2008-11-20 21:20:41 -0800</delta_ts>
            <desc>Unit test for latest FastAllocBase patch.</desc>
            <filename>FastAllocBaseTest.cpp</filename>
            <type>text/plain</type>
            <size>9532</size>
            <attacher name="Paul Pedriana">ppedriana</attacher>
            
              <data encoding="base64">Ly8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCgovKgogKiBDb3B5cmlnaHQg
KEMpIDIwMDggUGF1bCBQZWRyaWFuYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKgogKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CiAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgogKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAogKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogKgogKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQogKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQogKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwogKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CiAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAogKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICovCgojaW5jbHVkZSA8Y29uZmlnLmg+CiNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgojaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KI2luY2x1ZGUgPG5ldz4KI2lu
Y2x1ZGUgPHN0ZGlvLmg+CgoKCi8vIEluaGVyaXRlZAovLyBEZWZpbmVzIGEgY2xhc3Mgd2hpY2gg
aW5oZXJpdHMgZnJvbSBXVEY6OkZhc3RBbGxvY0Jhc2UgYW5kIGhhcyBhdCBsZWFzdAovLyBvbmUg
bWVtYmVyIHZhcmlhYmxlIHdoaWNoIG1ha2VzIGl0cyBzaXplIGRpZmZlcmVudCBmcm9tIEZhc3RB
bGxvY0Jhc2UuCgpjbGFzcyBJbmhlcml0ZWQgOiBwdWJsaWMgV1RGOjpGYXN0QWxsb2NCYXNlIHsK
cHVibGljOgogICAgc3RhdGljIGludCBtX2N0b3JDb3VudDsKICAgIHN0YXRpYyBpbnQgbV9kdG9y
Q291bnQ7CgogICAgaW50IG1feDsKCiAgICBJbmhlcml0ZWQoKQogICAgewogICAgICAgICsrbV9j
dG9yQ291bnQ7CiAgICB9CgogICAgSW5oZXJpdGVkKGNvbnN0IEluaGVyaXRlZCYpCiAgICB7CiAg
ICAgICAgKyttX2N0b3JDb3VudDsKICAgIH0KCiAgIH5Jbmhlcml0ZWQoKQogICAgewogICAgICAg
ICsrbV9kdG9yQ291bnQ7CiAgICB9CgogICAgSW5oZXJpdGVkJiBvcGVyYXRvciA9KGNvbnN0IElu
aGVyaXRlZCYpCiAgICB7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQp9OwoKaW50IEluaGVy
aXRlZDo6bV9jdG9yQ291bnQgPSAwOwppbnQgSW5oZXJpdGVkOjptX2R0b3JDb3VudCA9IDA7CgoK
Ly8gUE9ECi8vIEltcGxlbWVudHMgYSBQbGFpbiBPbGQgRGF0YSB0eXBlLiBCeSBkZWZpbml0aW9u
IGl0IGhhcyBubyAKLy8gY29uc3RydWN0b3JzIG9yIGRlc3RydWN0b3IsIG5vciBkb2VzIGl0IGhh
dmUgYSB2dGFibGUgbm9yCi8vIGluaGVyaXRhbmNlLiAKCnN0cnVjdCBQT0QgewogICAgaW50IG1f
eDsKfTsKCgovLyBPYmplY3QKLy8gVGhpcyBpcyBhIG5vbi1QT0QgZm9yIG91ciBwdXJwb3Nlcy4K
Y2xhc3MgT2JqZWN0IHsKcHVibGljOgogICAgc3RhdGljIGludCBtX2N0b3JDb3VudDsKICAgIHN0
YXRpYyBpbnQgbV9kdG9yQ291bnQ7CgogICAgZG91YmxlIG1feDsKCiAgICBPYmplY3QoKQogICAg
ewogICAgICAgICsrbV9jdG9yQ291bnQ7CiAgICB9CgogICAgT2JqZWN0KGRvdWJsZSB4KSA6IG1f
eCh4KQogICAgewogICAgICAgICsrbV9jdG9yQ291bnQ7CiAgICB9CgogICAgT2JqZWN0KGRvdWJs
ZSB4LCBkb3VibGUgeSkgOiBtX3goeCArIHkpCiAgICB7CiAgICAgICAgKyttX2N0b3JDb3VudDsK
ICAgIH0KCiAgICBPYmplY3QoY29uc3QgT2JqZWN0JikKICAgIHsKICAgICAgICArK21fY3RvckNv
dW50OwogICAgfQoKICAgfk9iamVjdCgpCiAgICB7CiAgICAgICAgKyttX2R0b3JDb3VudDsKICAg
IH0KCiAgICBPYmplY3QmIG9wZXJhdG9yID0oY29uc3QgT2JqZWN0JikKICAgIHsKICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICB9Cn07CgppbnQgT2JqZWN0OjptX2N0b3JDb3VudCA9IDA7CmludCBP
YmplY3Q6Om1fZHRvckNvdW50ID0gMDsKCgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmJvb2wgdmVy
aWZ5SXNBbGlnbmVkKFQqIHApCnsKICAgIGNvbnN0IGJvb2wgaXNBbGlnbmVkID0gKChzaXplX3Qp
KCgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHApIF4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihwKSAtIDEpKSA+PiAxKSArIDEpID49IHNpemVvZihUKSk7CiAgICBBU1NFUlQoaXNB
bGlnbmVkKTsKICAgIHJldHVybiBpc0FsaWduZWQ7Cn0KCgp2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90IG4pIHRocm93KCkKewogICAgQVNTRVJUKGZhbHNlKTsKICAgIHJldHVybiBtYWxsb2Mobik7
Cn0KCnZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApCnsKICAgIEFTU0VSVChmYWxzZSk7CiAg
ICBmcmVlKHApOwp9Cgp2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QgbikgdGhyb3coKQp7CiAg
ICAvL0FTU0VSVChmYWxzZSk7CiAgICByZXR1cm4gbWFsbG9jKG4pOwp9Cgp2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQqIHApCnsKICAgIC8vQVNTRVJUKGZhbHNlKTsKICAgIGZyZWUocCk7Cn0K
CgoKaW50IG1haW4oaW50LCBjaGFyKiopCnsKICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY7CgogICAg
Ym9vbCAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgc2l6ZV90IGk7CgoKICAgIC8vIGZhc3RNYWxsb2Ms
IGZhc3RaZXJvZWRNYWxsb2MsIGZhc3RDYWxsb2MsIGZhc3RGcmVlLCBmYXN0UmVhbGxvYwogICAg
dm9pZCogcCA9IGZhc3RNYWxsb2MoMTcpOwogICAgZmFzdEZyZWUocCk7CiAgICBwID0gZmFzdFpl
cm9lZE1hbGxvYygxOCk7CiAgICBmYXN0RnJlZShwKTsKICAgIHAgPSBmYXN0Q2FsbG9jKDE5LCAy
MCk7CiAgICBwID0gZmFzdFJlYWxsb2MocCwgMjEpOwogICAgZmFzdEZyZWUocCk7CiAgICBwID0g
ZmFzdFJlYWxsb2MoMCwgMjIpOwogICAgZmFzdEZyZWUocCk7CgoKICAgIC8vIEZhc3RBbGxvY0Jh
c2UKICAgIEZhc3RBbGxvY0Jhc2UqIGFsbG9jQmFzZVB0ciA9IG5ldyBGYXN0QWxsb2NCYXNlOwog
ICAgdmVyaWZ5SXNBbGlnbmVkKGFsbG9jQmFzZVB0cik7CiAgICBkZWxldGUgYWxsb2NCYXNlUHRy
OwoKICAgIC8vIFZlcmlmeSB0aGF0IGRlbGV0aW9uIG9mIE5VTEwgd29ya3MgYXMgZXhwZWN0ZWQu
CiAgICBhbGxvY0Jhc2VQdHIgPSBOVUxMOwogICAgZGVsZXRlIGFsbG9jQmFzZVB0cjsKCiAgICBG
YXN0QWxsb2NCYXNlKiBhbGxvY0Jhc2VBcnJheVB0ciA9IG5ldyBGYXN0QWxsb2NCYXNlWzM3XTsK
ICAgIHZlcmlmeUlzQWxpZ25lZChhbGxvY0Jhc2VBcnJheVB0cik7CiAgICBkZWxldGVbXSBhbGxv
Y0Jhc2VBcnJheVB0cjsKCiAgICBhbGxvY0Jhc2VBcnJheVB0ciA9IE5VTEw7CiAgICBkZWxldGUg
YWxsb2NCYXNlQXJyYXlQdHI7CgoKICAgIC8vIEZhc3RBbGxvY0Jhc2UgLyBJbmhlcml0ZWQKICAg
IEFTU0VSVCgoSW5oZXJpdGVkOjptX2N0b3JDb3VudCA9PSAwKSAmJiAoSW5oZXJpdGVkOjptX2R0
b3JDb3VudCA9PSAwKSk7CgogICAgSW5oZXJpdGVkKiBpbmhlcml0ZWRQdHIgPSBuZXcgSW5oZXJp
dGVkOwogICAgdmVyaWZ5SXNBbGlnbmVkKGluaGVyaXRlZFB0cik7CiAgICBpbmhlcml0ZWRQdHIt
Pm1feCA9IDE7CiAgICBkZWxldGUgaW5oZXJpdGVkUHRyOwoKICAgIGluaGVyaXRlZFB0ciA9IE5V
TEw7CiAgICBkZWxldGUgaW5oZXJpdGVkUHRyOwoKICAgIEluaGVyaXRlZCogaW5oZXJpdGVkQXJy
YXlQdHIgPSBuZXcgSW5oZXJpdGVkWzM3XTsKICAgIHZlcmlmeUlzQWxpZ25lZChpbmhlcml0ZWRB
cnJheVB0cik7CiAgICBmb3IgKGkgPSAwOyBpIDwgMzc7ICsraSkKICAgICAgICBpbmhlcml0ZWRB
cnJheVB0cltpXS5tX3ggPSAxOwogICAgZGVsZXRlW10gaW5oZXJpdGVkQXJyYXlQdHI7CgogICAg
aW5oZXJpdGVkQXJyYXlQdHIgPSBOVUxMOwogICAgZGVsZXRlIGluaGVyaXRlZEFycmF5UHRyOwoK
ICAgIEFTU0VSVCgoSW5oZXJpdGVkOjptX2N0b3JDb3VudCA9PSAzOCkgJiYgKEluaGVyaXRlZDo6
bV9kdG9yQ291bnQgPT0gMzgpKTsKICAgIHN1Y2Nlc3MgPT0gc3VjY2VzcyAmJiAoKEluaGVyaXRl
ZDo6bV9jdG9yQ291bnQgPT0gMzgpICYmIChJbmhlcml0ZWQ6Om1fZHRvckNvdW50ID09IDM4KSk7
CgoKICAgIC8vIGNoYXIKICAgIGNoYXIqIGNoYXJQdHIgPSBmYXN0TmV3PGNoYXI+KCk7CiAgICBm
YXN0RGVsZXRlKGNoYXJQdHIpOwoKICAgIGNoYXJQdHIgPSBOVUxMOwogICAgZmFzdERlbGV0ZShj
aGFyUHRyKTsKCiAgICBjaGFyKiBjaGFyQXJyYXlQdHIgPSBmYXN0TmV3QXJyYXk8Y2hhcj4oMzcp
OwogICAgZm9yIChpID0gMDsgaSA8IDM3OyArK2kpCiAgICAgICAgY2hhckFycmF5UHRyW2ldID0g
MTsKICAgIGZhc3REZWxldGVBcnJheShjaGFyQXJyYXlQdHIpOwoKICAgIGNoYXJBcnJheVB0ciA9
IE5VTEw7CiAgICBmYXN0RGVsZXRlQXJyYXkoY2hhckFycmF5UHRyKTsKCgogICAgLy8gZG91Ymxl
CiAgICBkb3VibGUqIGRvdWJsZVB0ciA9IGZhc3ROZXc8ZG91YmxlPigpOwogICAgdmVyaWZ5SXNB
bGlnbmVkKGRvdWJsZVB0cik7CiAgICAqZG91YmxlUHRyID0gMTsKICAgIGZhc3REZWxldGUoZG91
YmxlUHRyKTsKCiAgICBkb3VibGVQdHIgPSBOVUxMOwogICAgZmFzdERlbGV0ZShkb3VibGVQdHIp
OwoKICAgIGRvdWJsZSogZG91YmxlQXJyYXlQdHIgPSBmYXN0TmV3QXJyYXk8ZG91YmxlPigzNyk7
CiAgICB2ZXJpZnlJc0FsaWduZWQoZG91YmxlQXJyYXlQdHIpOwogICAgZm9yIChpID0gMDsgaSA8
IDM3OyArK2kpCiAgICAgICAgZG91YmxlQXJyYXlQdHJbaV0gPSAxOwogICAgZmFzdERlbGV0ZUFy
cmF5KGRvdWJsZUFycmF5UHRyKTsKCiAgICBkb3VibGVBcnJheVB0ciA9IE5VTEw7CiAgICBmYXN0
RGVsZXRlQXJyYXkoZG91YmxlQXJyYXlQdHIpOwoKCiAgICAvLyB2b2lkKgogICAgdm9pZCoqIHZv
aWRQdHJQdHIgPSBmYXN0TmV3PHZvaWQqPigpOwogICAgZmFzdERlbGV0ZSh2b2lkUHRyUHRyKTsK
CiAgICB2b2lkUHRyUHRyID0gTlVMTDsKICAgIGZhc3REZWxldGUodm9pZFB0clB0cik7CgogICAg
dm9pZCoqIHZvaWRQdHJBcnJheVB0ciA9IGZhc3ROZXdBcnJheTx2b2lkKj4oMzcpOwogICAgZm9y
IChpID0gMDsgaSA8IDM3OyArK2kpCiAgICAgICAgdm9pZFB0ckFycmF5UHRyW2ldID0gMDsKICAg
IGZhc3REZWxldGVBcnJheSh2b2lkUHRyQXJyYXlQdHIpOwoKICAgIHZvaWRQdHJBcnJheVB0ciA9
IE5VTEw7CiAgICBmYXN0RGVsZXRlQXJyYXkodm9pZFB0ckFycmF5UHRyKTsKCgogICAgLy8gUE9E
CiAgICBQT0QqIHBvZFB0ciA9IGZhc3ROZXc8UE9EPigpOwogICAgdmVyaWZ5SXNBbGlnbmVkKHBv
ZFB0cik7CiAgICBwb2RQdHItPm1feCA9IDE7CiAgICBmYXN0RGVsZXRlKHBvZFB0cik7CgogICAg
cG9kUHRyID0gTlVMTDsKICAgIGZhc3REZWxldGUocG9kUHRyKTsKCiAgICBQT0QqIHBvZEFycmF5
UHRyID0gZmFzdE5ld0FycmF5PFBPRD4oMzcpOwogICAgdmVyaWZ5SXNBbGlnbmVkKHBvZEFycmF5
UHRyKTsKICAgIGZvciAoaSA9IDA7IGkgPCAzNzsgKytpKQogICAgICAgIHBvZEFycmF5UHRyW2ld
Lm1feCA9IDE7CiAgICBmYXN0RGVsZXRlQXJyYXkocG9kQXJyYXlQdHIpOwoKICAgIHBvZEFycmF5
UHRyID0gTlVMTDsKICAgIGZhc3REZWxldGVBcnJheShwb2RBcnJheVB0cik7CgoKICAgIC8vIE9i
amVjdAogICAgQVNTRVJUKChPYmplY3Q6Om1fY3RvckNvdW50ID09IDApICYmIChPYmplY3Q6Om1f
ZHRvckNvdW50ID09IDApKTsKCiAgICBPYmplY3QqIG9iamVjdFB0ciA9IGZhc3ROZXc8T2JqZWN0
PigpOwogICAgdmVyaWZ5SXNBbGlnbmVkKG9iamVjdFB0cik7CiAgICBvYmplY3RQdHItPm1feCA9
IDE7CiAgICBmYXN0RGVsZXRlKG9iamVjdFB0cik7CgogICAgb2JqZWN0UHRyID0gTlVMTDsKICAg
IGZhc3REZWxldGUob2JqZWN0UHRyKTsgIC8vIFRoaXMgc2hvdWxkIGhhdmUgbm8gZWZmZWN0LgoK
ICAgIG9iamVjdFB0ciA9IGZhc3ROZXc8T2JqZWN0PigzLjApOwogICAgdmVyaWZ5SXNBbGlnbmVk
KG9iamVjdFB0cik7CiAgICBBU1NFUlQob2JqZWN0UHRyLT5tX3ggPT0gMyk7CiAgICBmYXN0RGVs
ZXRlKG9iamVjdFB0cik7CgogICAgb2JqZWN0UHRyID0gZmFzdE5ldzxPYmplY3Q+KDMuMCwgNC4w
KTsKICAgIHZlcmlmeUlzQWxpZ25lZChvYmplY3RQdHIpOwogICAgQVNTRVJUKG9iamVjdFB0ci0+
bV94ID09IDcpOwogICAgZmFzdERlbGV0ZShvYmplY3RQdHIpOwoKICAgIE9iamVjdCogb2JqZWN0
QXJyYXlQdHIgPSBmYXN0TmV3QXJyYXk8T2JqZWN0PigzNyk7CiAgICB2ZXJpZnlJc0FsaWduZWQo
b2JqZWN0QXJyYXlQdHIpOwogICAgZm9yIChpID0gMDsgaSA8IDM3OyArK2kpCiAgICAgICAgb2Jq
ZWN0QXJyYXlQdHJbaV0ubV94ID0gMTsKICAgIGZhc3REZWxldGVBcnJheShvYmplY3RBcnJheVB0
cik7CgogICAgb2JqZWN0QXJyYXlQdHIgPSBOVUxMOwogICAgZmFzdERlbGV0ZUFycmF5KG9iamVj
dEFycmF5UHRyKTsgICAvLyBUaGlzIHNob3VsZCBoYXZlIG5vIGVmZmVjdC4KCiAgICBBU1NFUlQo
KE9iamVjdDo6bV9jdG9yQ291bnQgPT0gNDApICYmIChPYmplY3Q6Om1fZHRvckNvdW50ID09IDQw
KSk7CiAgICBzdWNjZXNzID09IHN1Y2Nlc3MgJiYgKChPYmplY3Q6Om1fY3RvckNvdW50ID09IDQw
KSAmJiAoT2JqZWN0OjptX2R0b3JDb3VudCA9PSA0MCkpOwoKCiAgICAvLyBUZXN0IE5ld0FycmF5
SW1wbDxULCBmYWxzZSwgdHJ1ZT4gZXhwbGljaXRseS4KICAgIE9iamVjdDo6bV9jdG9yQ291bnQg
PSAwOwogICAgT2JqZWN0OjptX2R0b3JDb3VudCA9IDA7CiAgICBvYmplY3RQdHIgPSBXVEY6Oklu
dGVybmFsOjpOZXdBcnJheUltcGw8T2JqZWN0LCBmYWxzZSwgdHJ1ZT46OmZhc3ROZXdBcnJheSgz
KTsKICAgIFdURjo6SW50ZXJuYWw6OkRlbGV0ZUFycmF5SW1wbDxPYmplY3QsIHRydWU+OjpmYXN0
RGVsZXRlQXJyYXkob2JqZWN0UHRyKTsKCiAgICBBU1NFUlQoKE9iamVjdDo6bV9jdG9yQ291bnQg
PT0gMykgJiYgKE9iamVjdDo6bV9kdG9yQ291bnQgPT0gMCkpOwogICAgc3VjY2VzcyA9PSBzdWNj
ZXNzICYmICgoT2JqZWN0OjptX2N0b3JDb3VudCA9PSAzKSAmJiAoT2JqZWN0OjptX2R0b3JDb3Vu
dCA9PSAwKSk7CgoKICAgIC8vIFRlc3QgTmV3QXJyYXlJbXBsPFQsIHRydWUsIGZhbHNlPiBleHBs
aWNpdGx5LgogICAgT2JqZWN0OjptX2N0b3JDb3VudCA9IDA7CiAgICBPYmplY3Q6Om1fZHRvckNv
dW50ID0gMDsKICAgIG9iamVjdFB0ciA9IFdURjo6SW50ZXJuYWw6Ok5ld0FycmF5SW1wbDxPYmpl
Y3QsIHRydWUsIGZhbHNlPjo6ZmFzdE5ld0FycmF5KDMpOwogICAgV1RGOjpJbnRlcm5hbDo6RGVs
ZXRlQXJyYXlJbXBsPE9iamVjdCwgZmFsc2U+OjpmYXN0RGVsZXRlQXJyYXkob2JqZWN0UHRyKTsK
CiAgICBBU1NFUlQoKE9iamVjdDo6bV9jdG9yQ291bnQgPT0gMCkgJiYgKE9iamVjdDo6bV9kdG9y
Q291bnQgPT0gMykpOwogICAgc3VjY2VzcyA9PSBzdWNjZXNzICYmICgoT2JqZWN0OjptX2N0b3JD
b3VudCA9PSAwKSAmJiAoT2JqZWN0OjptX2R0b3JDb3VudCA9PSAzKSk7CgoKICAgIC8vIFRlc3Qg
RkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTgogICAgY2hhclB0ciA9IGZhc3ROZXc8Y2hhcj4o
KTsKICAgIGZhc3RGcmVlKGNoYXJQdHIpOyAgLy8gTm9ybWFsbHkgdGhlIHVzZXIgaXMgc3VwcG9z
ZWQgdG8gdXNlIGZhc3REZWxldGUgaGVyZS4KICAgIEFTU0VSVChXVEY6OmZhc3RNYWxsb2NNYXRj
aEZhaWx1cmVDb3VudCA9PSAxKTsKCiAgICBjaGFyUHRyID0gZmFzdE5ld0FycmF5PGNoYXI+KDM3
KTsgIC8vIFdlIGludGVudGlvbmFsbHkgY2hvb3NlIGEgdHJpdmlhbCB0eXBlIGhlcmUgc28gdGhh
dCB0aGUgYXJyYXkgaXNuJ3QgYXNzaWduZWQgYSBzaXplIHByZWZpeCBhbmQgY2FuIHRodXMgYmUg
ZnJlZWQgd2l0aCBmYXN0RGVsZXRlLgogICAgZmFzdERlbGV0ZShjaGFyUHRyKTsgIC8vIE5vcm1h
bGx5IHRoZSB1c2VyIGlzIHN1cHBvc2VkIHRvIHVzZSBmYXN0RGVsZXRlQXJyYXkgaGVyZS4KICAg
IEFTU0VSVChXVEY6OmZhc3RNYWxsb2NNYXRjaEZhaWx1cmVDb3VudCA9PSAyKTsKCiAgICBpbmhl
cml0ZWRQdHIgPSBuZXcgSW5oZXJpdGVkOyAgIC8vIFRoaXMgdXNlcyB0aGUgY2xhc3Mtc3BlY2lm
aWMgb3BlcmF0b3IgbmV3LgogICAgZmFzdERlbGV0ZShpbmhlcml0ZWRQdHIpOyAgICAgICAvLyBO
b3JtYWxseSB0aGUgdXNlciBpcyBzdXBwb3NlZCB0byB1c2UgZGVsZXRlIGhlcmUuCiAgICBBU1NF
UlQoV1RGOjpmYXN0TWFsbG9jTWF0Y2hGYWlsdXJlQ291bnQgPT0gMyk7CgogICAgLy8gRGlzYWJs
ZWQgYmVjYXVzZSB0aGlzIGNhbiBjYXVzZSBhIGNyYXNoIHVwb24gZnJlZSB3aGVuIEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04gaXMgZW5hYmxlZC4KICAgIC8vIGNoYXJQdHIgPSBmYXN0TmV3
PGNoYXI+KCk7CiAgICAvLyBmcmVlKGluaGVyaXRlZFB0cik7IAoKICAgIHJldHVybiBzdWNjZXNz
ID8gMCA6IC0xOwp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25944</attachid>
            <date>2008-12-11 01:19:24 -0800</date>
            <delta_ts>2009-01-28 00:51:55 -0800</delta_ts>
            <desc>JavaScriptCore FastMalloc-related patch.</desc>
            <filename>FastMallocPatch.patch</filename>
            <type>text/plain</type>
            <size>52712</size>
            <attacher name="Paul Pedriana">ppedriana</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM5MTk4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDgtMTIt
MTEgIFBhdWwgIDxwcGVkcmlhbmFAZWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RBbGxvY0Jhc2UuaDoKKyAgICAgICAgTmV3
IGFkZGVkIGZpbGUuIEltcGxlbWVudHMgYWxsb2NhdGlvbiBiYXNlIGNsYXNzLgorICAgICAgICAq
IHd0Zi9UeXBlVHJhaXRzLmg6CisgICAgICAgIE5ldyBhZGRlZCBmaWxlLiBDZW50cmFsaXplcyB0
eXBlIHRyYWl0cyBmdW5jdGlvbmFsaXR5IGFuZCBhdWdtZW50cyBleGlzdGluZyB0eXBlIHRyYWl0
cyBzdXBwb3J0LgorICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgIENoYW5nZWQg
dG8gc3VwcG9ydCBGYXN0TWFsbG9jIG1hdGNoIHZhbGlkYXRpb24uCisgICAgICAgICogd3RmL0Zh
c3RNYWxsb2MuY3BwOgorICAgICAgICBDaGFuZ2VkIHRvIHN1cHBvcnQgRmFzdE1hbGxvYyBtYXRj
aCB2YWxpZGF0aW9uLgorICAgICAgICAqIHd0Zi9IYXNoVHJhaXRzLmg6CisgICAgICAgIENoYW5n
ZWQgdG8gdXNlIFR5cGVUcmFpdHMuaAorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAg
ICBBZGRlZCBFTkFCTEVfRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTjsgZGVmYXVsdHMgdG8g
MC4KKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICBXYXMgYWZmZWN0ZWQgYnkgdGhlIHR5cGUg
dHJhaXRzIGNoYW5nZSBvZiBJc0ludGVnZXIgdG8gaXNfaW50ZWdyYWwuCisKIDIwMDgtMTItMTAg
IENhbWVyb24gWndhcmljaCAgPHp3YXJpY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE9saXZlciBIdW50LgpJbmRleDoganNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBqc2MuY3BwCShy
ZXZpc2lvbiAzOTE2MikKKysrIGpzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMs
NyBAQCBwdWJsaWM6CiAgICAgR2xvYmFsT2JqZWN0KGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJn
dW1lbnRzKTsKICAgICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4g
Imdsb2JhbCI7IH0KIH07Ci1DT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPEdsb2JhbE9iamVjdD46
OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX0dsb2JhbE9iamVjdF9mYWxzZSk7CitDT01QSUxFX0FTU0VS
VCghaXNfaW50ZWdyYWw8R2xvYmFsT2JqZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFs
T2JqZWN0X2ZhbHNlKTsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoR2xvYmFsT2JqZWN0KTsK
IAogR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1
bWVudHMpCkluZGV4OiB3dGYvRmFzdEFsbG9jQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHd0Zi9GYXN0
QWxsb2NCYXNlLmgJKHJldmlzaW9uIDApCisrKyB3dGYvRmFzdEFsbG9jQmFzZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQwNCBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6
IDQgLSotDQorDQorLyoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggUGF1bCBQZWRyaWFuYS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAq
IGFyZSBtZXQ6DQorICoNCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodA0KKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YNCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorICoNCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQ0KKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQNCisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQ0KKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTDQorICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOw0KKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORA0KKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GDQorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisgKi8NCisNCisjaWZuZGVmIFdURl9G
YXN0QWxsb2NCYXNlX2gNCisjZGVmaW5lIFdURl9GYXN0QWxsb2NCYXNlX2gNCisNCisvLyBQcm92
aWRlcyBjdXN0b21pemFibGUgb3ZlcnJpZGVzIG9mIGZhc3RNYWxsb2MvZmFzdEZyZWUgYW5kIG9w
ZXJhdG9yIG5ldy9kZWxldGUNCisvLw0KKy8vIFByb3ZpZGVkIGZ1bmN0aW9uYWxpdHk6DQorLy8g
ICAgbmFtZXNwYWNlIFdURiB7IA0KKy8vICAgICAgICBjbGFzcyBGYXN0QWxsb2NCYXNlOw0KKy8v
DQorLy8gICAgICAgIFQqICAgIGZhc3ROZXc8VD4oKTsNCisvLyAgICAgICAgVCogICAgZmFzdE5l
dzxUPihhcmcpOw0KKy8vICAgICAgICBUKiAgICBmYXN0TmV3PFQ+KGFyZywgYXJnKTsNCisvLyAg
ICAgICAgVCogICAgZmFzdE5ld0FycmF5PFQ+KGNvdW50KTsNCisvLyAgICAgICAgdm9pZCAgZmFz
dERlbGV0ZShUKiBwKTsNCisvLyAgICAgICAgdm9pZCAgZmFzdERlbGV0ZUFycmF5KFQqIHApOw0K
Ky8vICAgICAgICB2b2lkICBmYXN0Tm9uTnVsbERlbGV0ZShUKiBwKTsNCisvLyAgICAgICAgdm9p
ZCAgZmFzdE5vbk51bGxEZWxldGVBcnJheShUKiBwKTsNCisvLyAgICB9DQorLy8NCisvLyBGYXN0
RGVsZXRlIGFzc3VtZXMgdGhhdCB0aGUgdW5kZXJseWluZyANCisvLw0KKy8vIEV4YW1wbGUgdXNh
Z2U6DQorLy8gICAgY2xhc3MgV2lkZ2V0IDogcHVibGljIEZhc3RBbGxvY0Jhc2UgeyAuLi4gfTsN
CisvLw0KKy8vICAgIGNoYXIqIGNoYXJQdHIgPSBmYXN0TmV3PGNoYXI+KCk7DQorLy8gICAgZmFz
dERlbGV0ZShjaGFyUHRyKTsNCisvLw0KKy8vICAgIGNoYXIqIGNoYXJBcnJheVB0ciA9IGZhc3RO
ZXdBcnJheTxjaGFyPigzNyk7DQorLy8gICAgZmFzdERlbGV0ZUFycmF5KGNoYXJBcnJheVB0cik7
DQorLy8NCisvLyAgICB2b2lkKiogdm9pZFB0clB0ciA9IGZhc3ROZXc8dm9pZCo+KCk7DQorLy8g
ICAgZmFzdERlbGV0ZSh2b2lkUHRyUHRyKTsNCisvLw0KKy8vICAgIHZvaWQqKiB2b2lkUHRyQXJy
YXlQdHIgPSBmYXN0TmV3QXJyYXk8dm9pZCo+KDM3KTsNCisvLyAgICBmYXN0RGVsZXRlQXJyYXko
dm9pZFB0ckFycmF5UHRyKTsNCisvLw0KKy8vICAgIFBPRCogcG9kUHRyID0gZmFzdE5ldzxQT0Q+
KCk7DQorLy8gICAgZmFzdERlbGV0ZShwb2RQdHIpOw0KKy8vDQorLy8gICAgUE9EKiBwb2RBcnJh
eVB0ciA9IGZhc3ROZXdBcnJheTxQT0Q+KDM3KTsNCisvLyAgICBmYXN0RGVsZXRlQXJyYXkocG9k
QXJyYXlQdHIpOw0KKy8vDQorLy8gICAgT2JqZWN0KiBvYmplY3RQdHIgPSBmYXN0TmV3PE9iamVj
dD4oKTsNCisvLyAgICBmYXN0RGVsZXRlKG9iamVjdFB0cik7DQorLy8NCisvLyAgICBPYmplY3Qq
IG9iamVjdEFycmF5UHRyID0gZmFzdE5ld0FycmF5PE9iamVjdD4oMzcpOw0KKy8vICAgIGZhc3RE
ZWxldGVBcnJheShvYmplY3RBcnJheVB0cik7DQorLy8NCisNCisjaW5jbHVkZSA8bmV3Pg0KKyNp
bmNsdWRlIDxzdGRpbnQuaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHN0cmlu
Zy5oPg0KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPg0KKyNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPg0KKyNpbmNsdWRlIDx3dGYvVHlwZVRyYWl0cy5oPg0KKw0KK25hbWVzcGFjZSBXVEYg
ew0KKw0KKyAgICBjbGFzcyBGYXN0QWxsb2NCYXNlIHsNCisgICAgcHVibGljOg0KKyAgICAgICAg
Ly8gUGxhY2VtZW50IG9wZXJhdG9yIG5ldy4NCisgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0NCisgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfQ0KKw0KKyAgICAgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCBzaXplKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHZvaWQqIHAg
PSBmYXN0TWFsbG9jKHNpemUpOw0KKyAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRl
TWFsbG9jKHAsIEludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7DQorICAgICAgICAgICAgcmV0
dXJuIHA7DQorICAgICAgICB9DQorDQorICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lk
KiBwKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJl
ZShwLCBJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOw0KKyAgICAgICAgICAgIGZhc3RGcmVl
KHApOyAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgYSBudWxsIHBvaW50ZXI7IHRoZSBj
b21waWxlciBkb2VzIHRoaXMuDQorICAgICAgICB9DQorDQorICAgICAgICB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkNCisgICAgICAgIHsNCisgICAgICAgICAgICB2b2lkKiBwID0g
ZmFzdE1hbGxvYyhzaXplKTsNCisgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1h
bGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXdBcnJheSk7DQorICAgICAgICAgICAg
cmV0dXJuIHA7DQorICAgICAgICB9DQorDQorICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtd
KHZvaWQqIHApDQorICAgICAgICB7DQorICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRh
dGVGcmVlKHAsIEludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsNCisgICAgICAgICAg
ICBmYXN0RnJlZShwKTsgIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIGEgbnVsbCBwb2lu
dGVyOyB0aGUgY29tcGlsZXIgZG9lcyB0aGlzLg0KKyAgICAgICAgfQ0KKyAgICB9Ow0KKw0KKyAg
ICAvLyBmYXN0TmV3IC8gZmFzdERlbGV0ZQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4N
CisgICAgaW5saW5lIFQqIGZhc3ROZXcoKQ0KKyAgICB7DQorICAgICAgICB2b2lkKiBwID0gZmFz
dE1hbGxvYyhzaXplb2YoVCkpOw0KKw0KKyAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICBm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5l
dyk7DQorICAgICAgICAgICAgcmV0dXJuIDo6bmV3KHApIFQ7DQorICAgICAgICB9DQorDQorICAg
ICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgQXJnMT4NCisgICAgaW5saW5lIFQqIGZhc3ROZXcoQXJnMSBhcmcxKQ0KKyAgICB7DQor
ICAgICAgICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoVCkpOw0KKw0KKyAgICAgICAgaWYg
KHApIHsNCisgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRl
cm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7DQorICAgICAgICAgICAgcmV0dXJuIDo6bmV3KHApIFQo
YXJnMSk7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMj4NCisg
ICAgaW5saW5lIFQqIGZhc3ROZXcoQXJnMSBhcmcxLCBBcmcyIGFyZzIpDQorICAgIHsNCisgICAg
ICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihUKSk7DQorDQorICAgICAgICBpZiAocCkg
ew0KKyAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFs
OjpBbGxvY1R5cGVGYXN0TmV3KTsNCisgICAgICAgICAgICByZXR1cm4gOjpuZXcocCkgVChhcmcx
LCBhcmcyKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB0
eXBlbmFtZSBBcmczPg0KKyAgICBpbmxpbmUgVCogZmFzdE5ldyhBcmcxIGFyZzEsIEFyZzIgYXJn
MiwgQXJnMyBhcmczKQ0KKyAgICB7DQorICAgICAgICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXpl
b2YoVCkpOw0KKw0KKyAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICBmYXN0TWFsbG9jTWF0
Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7DQorICAgICAg
ICAgICAgcmV0dXJuIDo6bmV3KHApIFQoYXJnMSwgYXJnMiwgYXJnMyk7DQorICAgICAgICB9DQor
DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdHlwZW5hbWUgQXJnMywgdHlwZW5hbWUg
QXJnND4NCisgICAgaW5saW5lIFQqIGZhc3ROZXcoQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZzMg
YXJnMywgQXJnNCBhcmc0KQ0KKyAgICB7DQorICAgICAgICB2b2lkKiBwID0gZmFzdE1hbGxvYyhz
aXplb2YoVCkpOw0KKw0KKyAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICBmYXN0TWFsbG9j
TWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7DQorICAg
ICAgICAgICAgcmV0dXJuIDo6bmV3KHApIFQoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7DQorICAg
ICAgICB9DQorDQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdHlwZW5hbWUgQXJnMywg
dHlwZW5hbWUgQXJnNCwgdHlwZW5hbWUgQXJnNT4NCisgICAgaW5saW5lIFQqIGZhc3ROZXcoQXJn
MSBhcmcxLCBBcmcyIGFyZzIsIEFyZzMgYXJnMywgQXJnNCBhcmc0LCBBcmc1IGFyZzUpDQorICAg
IHsNCisgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihUKSk7DQorDQorICAgICAg
ICBpZiAocCkgew0KKyAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAs
IEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsNCisgICAgICAgICAgICByZXR1cm4gOjpuZXco
cCkgVChhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsNCisgICAgICAgIH0NCisNCisgICAg
ICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorICAgIG5hbWVzcGFjZSBJbnRlcm5hbCB7DQorDQor
ICAgICAgICAvLyBXZSBkZWZpbmUgYSB1bmlvbiBvZiBwb2ludGVyIHRvIGFuIGludGVnZXIgYW5k
IHBvaW50ZXIgdG8gVC4NCisgICAgICAgIC8vIFdoZW4gbm9uLVBPRCBhcnJheXMgYXJlIGFsbG9j
YXRlZCB3ZSBhZGQgYSBmZXcgbGVhZGluZyBieXRlcyB0byB0ZWxsIHdoYXQNCisgICAgICAgIC8v
IHRoZSBzaXplIG9mIHRoZSBhcnJheSBpcy4gV2UgcmV0dXJuIHRvIHRoZSB1c2VyIHRoZSBwb2lu
dGVyIHRvIFQuDQorICAgICAgICAvLyBUaGUgd2F5IHRvIHRoaW5rIG9mIGl0IGlzIGFzIGlmIHdl
IGFsbG9jYXRlIGEgc3RydWN0IGxpa2Ugc286DQorICAgICAgICAvLyAgICBzdHJ1Y3QgQXJyYXkg
ew0KKyAgICAgICAgLy8gICAgICAgIEFsbG9jQWxpZ25tZW50SW50ZWdlciBtX3NpemU7DQorICAg
ICAgICAvLyAgICAgICAgVCBtX1RbYXJyYXkgY291bnRdOw0KKyAgICAgICAgLy8gICAgfTsNCisN
CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAgICAgICAgdW5pb24gQXJyYXlTaXpl
IHsNCisgICAgICAgICAgICBBbGxvY0FsaWdubWVudEludGVnZXIqIHNpemU7DQorICAgICAgICAg
ICAgVCogdDsNCisgICAgICAgIH07DQorDQorICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0
ZW1wbGF0ZSBmb3IgZmFzdE5ld0FycmF5Lg0KKyAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBj
YXNlIHdoZXJlaW4gVCBoYXMgYSB0cml2aWFsIGN0b3IgYW5kIGEgdHJpdmlhbCBkdG9yLg0KKyAg
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgdHJpdmlhbEN0b3IsIGJvb2wgdHJpdmlh
bER0b3I+DQorICAgICAgICBzdHJ1Y3QgTmV3QXJyYXlJbXBsIHsNCisgICAgICAgICAgICBzdGF0
aWMgVCogZmFzdE5ld0FycmF5KHNpemVfdCBjb3VudCkNCisgICAgICAgICAgICB7DQorICAgICAg
ICAgICAgICAgIFQqIHAgPSBzdGF0aWNfY2FzdDxUKj4oZmFzdE1hbGxvYyhzaXplb2YoVCkgKiBj
b3VudCkpOw0KKyAgICAgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhw
LCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5KTsNCisgICAgICAgICAgICAgICAgcmV0
dXJuIHA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfTsNCisNCisgICAgICAgIC8vIFRoaXMg
aXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBmYXN0TmV3QXJyYXkuDQorICAgICAgICAvLyBUaGlz
IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVpbiBUIGhhcyBhIG5vbi10cml2aWFsIGN0b3IgYW5kIGEg
dHJpdmlhbCBkdG9yLg0KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQorICAgICAgICBz
dHJ1Y3QgTmV3QXJyYXlJbXBsPFQsIGZhbHNlLCB0cnVlPiB7DQorICAgICAgICAgICAgc3RhdGlj
IFQqIGZhc3ROZXdBcnJheShzaXplX3QgY291bnQpDQorICAgICAgICAgICAgew0KKyAgICAgICAg
ICAgICAgICBUKiBwID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFQpICogY291
bnQpKTsNCisNCisgICAgICAgICAgICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICAgICAgICAg
IGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0
TmV3QXJyYXkpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChUKiBwT2JqZWN0ID0gcCwg
KnBPYmplY3RFbmQgPSBwT2JqZWN0ICsgY291bnQ7IHBPYmplY3QgIT0gcE9iamVjdEVuZDsgKytw
T2JqZWN0KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIDo6bmV3KHBPYmplY3QpIFQ7IC8vIFRv
IGNvbnNpZGVyOiBoYW5kbGUgY3RvciBleGNlcHRpb25zIGlmIGV4Y2VwdGlvbnMgYXJlIGVuYWJs
ZWQgYnkgdGhlIGNvbXBpbGVyLg0KKyAgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAg
ICAgIHJldHVybiBwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH07DQorDQorICAgICAgICAv
LyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdE5ld0FycmF5Lg0KKyAgICAgICAg
Ly8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlaW4gVCBoYXMgYSB0cml2aWFsIGN0b3IgYW5k
IGEgbm9uLXRyaXZpYWwgZHRvci4NCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAg
ICAgICAgc3RydWN0IE5ld0FycmF5SW1wbDxULCB0cnVlLCBmYWxzZT4gew0KKyAgICAgICAgICAg
IHN0YXRpYyBUKiBmYXN0TmV3QXJyYXkoc2l6ZV90IGNvdW50KQ0KKyAgICAgICAgICAgIHsNCisg
ICAgICAgICAgICAgICAgdm9pZCogcCA9IGZhc3RNYWxsb2Moc2l6ZW9mKEFsbG9jQWxpZ25tZW50
SW50ZWdlcikgKyAoc2l6ZW9mKFQpICogY291bnQpKTsNCisgICAgICAgICAgICAgICAgQXJyYXlT
aXplPFQ+IGEgPSB7IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHApIH07DQor
DQorICAgICAgICAgICAgICAgIGlmIChwKSB7DQorICAgICAgICAgICAgICAgICAgICBmYXN0TWFs
bG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5
KTsNCisgICAgICAgICAgICAgICAgICAgICphLnNpemUrKyA9IGNvdW50Ow0KKyAgICAgICAgICAg
ICAgICAgICAgLy8gTm8gbmVlZCB0byBjb25zdHJ1Y3QgdGhlIG9iamVjdHMgaW4gdGhpcyBjYXNl
Lg0KKyAgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgICAgIHJldHVybiBhLnQ7DQor
ICAgICAgICAgICAgfQ0KKyAgICAgICAgfTsNCisNCisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBw
b3J0IHRlbXBsYXRlIGZvciBmYXN0TmV3QXJyYXkuDQorICAgICAgICAvLyBUaGlzIGhhbmRsZXMg
dGhlIGNhc2Ugd2hlcmVpbiBUIGhhcyBhIG5vbi10cml2aWFsIGN0b3IgYW5kIGEgbm9uLXRyaXZp
YWwgZHRvci4NCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAgICAgICAgc3RydWN0
IE5ld0FycmF5SW1wbDxULCBmYWxzZSwgZmFsc2U+IHsNCisgICAgICAgICAgICBzdGF0aWMgVCog
ZmFzdE5ld0FycmF5KHNpemVfdCBjb3VudCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAg
ICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpICsg
KHNpemVvZihUKSAqIGNvdW50KSk7DQorICAgICAgICAgICAgICAgIEFycmF5U2l6ZTxUPiBhID0g
eyBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihwKSB9Ow0KKw0KKyAgICAgICAg
ICAgICAgICBpZiAocCkgew0KKyAgICAgICAgICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFs
aWRhdGVNYWxsb2MocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXdBcnJheSk7DQorICAgICAg
ICAgICAgICAgICAgICAqYS5zaXplKysgPSBjb3VudDsNCisNCisgICAgICAgICAgICAgICAgICAg
IGZvciAoVCogcFQgPSBhLnQsICpwVEVuZCA9IHBUICsgY291bnQ7IHBUICE9IHBURW5kOyArK3BU
KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIDo6bmV3KHBUKSBUOyAvLyBUbyBjb25zaWRlcjog
aGFuZGxlIGN0b3IgZXhjZXB0aW9ucyBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJ5IHRoZSBj
b21waWxlci4NCisgICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgICAgICByZXR1cm4g
YS50Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH07DQorICAgIH0gLy8gbmFtZXNwYWNlIElu
dGVybmFsDQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAgICBpbmxpbmUgVCogZmFz
dE5ld0FycmF5KHNpemVfdCBjb3VudCkNCisgICAgew0KKyAgICAgICAgcmV0dXJuIEludGVybmFs
OjpOZXdBcnJheUltcGw8VCwgV1RGOjpoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxUPjo6dmFsdWUs
IFdURjo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPjo6dmFsdWU+OjpmYXN0TmV3QXJyYXkoY291
bnQpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAgICBpbmxpbmUg
dm9pZCBmYXN0RGVsZXRlKFQqIHApDQorICAgIHsNCisgICAgICAgIC8vIFdlIGNvdWxkIGF2b2lk
IHRoZSBwb2ludGVyIGNoZWNrIGhlcmUgYnkgbWFraW5nIGEgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24uDQorICAgICAgICBpZiAocCkgeyAvLyBXZSBuZWVkIHRvIHRlc3QgcCBoZXJlIGJlY2F1c2Ug
d2UgZGVyZWZlcmVuY2UgaXQuDQorICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVG
cmVlKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsNCisgICAgICAgICAgICBwLT5+VCgp
Ow0KKyAgICAgICAgICAgIGZhc3RGcmVlKHApOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAg
IG5hbWVzcGFjZSBJbnRlcm5hbCB7DQorICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1w
bGF0ZSBmb3IgZmFzdERlbGV0ZUFycmF5Lg0KKyAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBj
YXNlIHdoZXJlaW4gVCBoYXMgYSB0cml2aWFsIGR0b3IuDQorICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgYm9vbCB0cml2aWFsRHRvcj4NCisgICAgICAgIHN0cnVjdCBEZWxldGVBcnJheUlt
cGwgew0KKyAgICAgICAgICAgIHN0YXRpYyB2b2lkIGZhc3REZWxldGVBcnJheSh2b2lkKiBwKQ0K
KyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBkZXN0cnVjdCB0
aGUgb2JqZWN0cyBpbiB0aGlzIGNhc2UuDQorICAgICAgICAgICAgICAgIC8vIFdlIGV4cGVjdCB0
aGF0IGZhc3RGcmVlIGNoZWNrcyBmb3IgbnVsbC4NCisgICAgICAgICAgICAgICAgZmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGVGcmVlKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3QXJyYXkpOw0K
KyAgICAgICAgICAgICAgICBmYXN0RnJlZShwKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9
Ow0KKw0KKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIGZhc3REZWxl
dGVBcnJheS4NCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWluIFQgaGFz
IGEgbm9uLXRyaXZpYWwgZHRvci4NCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAg
ICAgICAgc3RydWN0IERlbGV0ZUFycmF5SW1wbDxULCBmYWxzZT4gew0KKyAgICAgICAgICAgIHN0
YXRpYyB2b2lkIGZhc3REZWxldGVBcnJheShUKiBwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAg
ICAgICAgICAgaWYgKHApIHsgLy8gV2UgbmVlZCB0byB0ZXN0IHAgaGVyZSBiZWNhdXNlIHdlIGRl
cmVmZXJlbmNlIGl0Lg0KKyAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplPFQ+IGE7DQorICAg
ICAgICAgICAgICAgICAgICBhLnQgPSBwOw0KKyAgICAgICAgICAgICAgICAgICAgYS5zaXplLS07
IC8vIERlY3JlbWVudCBzaXplIHBvaW50ZXINCisNCisgICAgICAgICAgICAgICAgICAgIFQqIHBF
bmQgPSBwICsgKmEuc2l6ZTsNCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwRW5kLS0gIT0g
cCkNCisgICAgICAgICAgICAgICAgICAgICAgICBwRW5kLT5+VCgpOw0KKw0KKyAgICAgICAgICAg
ICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKGEuc2l6ZSwgSW50ZXJuYWw6OkFs
bG9jVHlwZUZhc3ROZXdBcnJheSk7DQorICAgICAgICAgICAgICAgICAgICBmYXN0RnJlZShhLnNp
emUpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfTsNCisN
CisgICAgfSAvLyBuYW1lc3BhY2UgSW50ZXJuYWwNCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+DQorICAgIHZvaWQgZmFzdERlbGV0ZUFycmF5KFQqIHApDQorICAgIHsNCisgICAgICAgIElu
dGVybmFsOjpEZWxldGVBcnJheUltcGw8VCwgV1RGOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+
Ojp2YWx1ZT46OmZhc3REZWxldGVBcnJheShwKTsNCisgICAgfQ0KKw0KKw0KKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4NCisgICAgaW5saW5lIHZvaWQgZmFzdE5vbk51bGxEZWxldGUoVCogcCkN
CisgICAgew0KKyAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIEludGVybmFs
OjpBbGxvY1R5cGVGYXN0TmV3KTsNCisgICAgICAgIHAtPn5UKCk7DQorICAgICAgICBmYXN0RnJl
ZShwKTsNCisgICAgfQ0KKw0KKyAgICBuYW1lc3BhY2UgSW50ZXJuYWwgew0KKyAgICAgICAgLy8g
VGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIGZhc3REZWxldGVBcnJheS4NCisgICAgICAg
IC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWluIFQgaGFzIGEgdHJpdmlhbCBkdG9yLg0K
KyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgdHJpdmlhbER0b3I+DQorICAgICAg
ICBzdHJ1Y3QgTm9uTnVsbERlbGV0ZUFycmF5SW1wbCB7DQorICAgICAgICAgICAgc3RhdGljIHZv
aWQgZmFzdE5vbk51bGxEZWxldGVBcnJheSh2b2lkKiBwKQ0KKyAgICAgICAgICAgIHsNCisgICAg
ICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIEludGVybmFsOjpBbGxv
Y1R5cGVGYXN0TmV3QXJyYXkpOw0KKyAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGRlc3Ry
dWN0IHRoZSBvYmplY3RzIGluIHRoaXMgY2FzZS4NCisgICAgICAgICAgICAgICAgZmFzdEZyZWUo
cCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfTsNCisNCisgICAgICAgIC8vIFRoaXMgaXMg
YSBzdXBwb3J0IHRlbXBsYXRlIGZvciBmYXN0RGVsZXRlQXJyYXkuDQorICAgICAgICAvLyBUaGlz
IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVpbiBUIGhhcyBhIG5vbi10cml2aWFsIGR0b3IuDQorICAg
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisgICAgICAgIHN0cnVjdCBOb25OdWxsRGVsZXRl
QXJyYXlJbXBsPFQsIGZhbHNlPiB7DQorICAgICAgICAgICAgc3RhdGljIHZvaWQgZmFzdE5vbk51
bGxEZWxldGVBcnJheShUKiBwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgQXJy
YXlTaXplPFQ+IGE7DQorICAgICAgICAgICAgICAgIGEudCA9IHA7DQorICAgICAgICAgICAgICAg
IGEuc2l6ZS0tOw0KKw0KKyAgICAgICAgICAgICAgICBUKiBwRW5kID0gcCArICphLnNpemU7DQor
ICAgICAgICAgICAgICAgIHdoaWxlIChwRW5kLS0gIT0gcCkNCisgICAgICAgICAgICAgICAgICAg
IHBFbmQtPn5UKCk7DQorDQorICAgICAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRl
RnJlZShhLnNpemUsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3QXJyYXkpOw0KKyAgICAgICAg
ICAgICAgICBmYXN0RnJlZShhLnNpemUpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH07DQor
DQorICAgIH0gLy8gbmFtZXNwYWNlIEludGVybmFsDQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPg0KKyAgICB2b2lkIGZhc3ROb25OdWxsRGVsZXRlQXJyYXkoVCogcCkNCisgICAgew0KKyAg
ICAgICAgSW50ZXJuYWw6Ok5vbk51bGxEZWxldGVBcnJheUltcGw8VCwgV1RGOjpoYXNfdHJpdmlh
bF9kZXN0cnVjdG9yPFQ+Ojp2YWx1ZT46OmZhc3ROb25OdWxsRGVsZXRlQXJyYXkocCk7DQorICAg
IH0NCisNCisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCisjZW5kaWYgLy8gV1RGX0Zhc3RBbGxv
Y0Jhc2VfaA0KSW5kZXg6IHd0Zi9GYXN0TWFsbG9jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvRmFz
dE1hbGxvYy5jcHAJKHJldmlzaW9uIDM5MTYyKQorKysgd3RmL0Zhc3RNYWxsb2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDE5IEBAIHZvaWQgZmFzdE1hbGxvY0FsbG93KCkKIAog
bmFtZXNwYWNlIFdURiB7CiAKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElP
TikKKworbmFtZXNwYWNlIEludGVybmFsIHsKKwordm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQo
dm9pZCopCit7CisgICAgQ1JBU0goKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW50ZXJuYWwKKwor
I2VuZGlmCisKIHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pIAogewogICAgIHZvaWQq
IHJlc3VsdCA9IGZhc3RNYWxsb2Mobik7CkBAIC0xODMsMTMgKzE5NiwzMiBAQCBuYW1lc3BhY2Ug
V1RGIHsKIHZvaWQqIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pIAogewogICAgIEFTU0VSVCghaXNG
b3JiaWRkZW4oKSk7CisKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikK
KyAgICBpZihzdGF0aWNfY2FzdDxzaXplX3Q+KH4wKSAtIHNpemVvZihBbGxvY0FsaWdubWVudElu
dGVnZXIpIDw9IG4pICAvLyBJZiBvdmVyZmxvdyB3b3VsZCBvY2N1ci4uLgorICAgICAgICByZXR1
cm4gMDsKKyAgICBuICs9IHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpOworICAgIGNoYXIq
IHJlc3VsdCA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2MobikpOworICAgIGlmIChyZXN1bHQp
IHsKKyAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVz
dWx0KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7CisgICAgICAgIHJlc3VsdCArPSBzaXpl
b2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyNl
bHNlCiAgICAgcmV0dXJuIG1hbGxvYyhuKTsKKyNlbmRpZgogfQogCiB2b2lkKiBmYXN0TWFsbG9j
KHNpemVfdCBuKSAKIHsKICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOworCisjaWYgRU5BQkxF
KEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisgICAgdm9pZCogcmVzdWx0ID0gdHJ5RmFz
dE1hbGxvYyhuKTsKKyNlbHNlCiAgICAgdm9pZCogcmVzdWx0ID0gbWFsbG9jKG4pOworI2VuZGlm
CisKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgQ1JBU0goKTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtMTk4LDEzICsyMzAsMzUgQEAgdm9pZCogZmFzdE1hbGxvYyhzaXplX3QgbikgCiB2b2lk
KiB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKQog
ewogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7CisKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0Nf
TUFUQ0hfVkFMSURBVElPTikKKyAgICBzaXplX3QgdG90YWxCeXRlcyA9IG5fZWxlbWVudHMgKiBl
bGVtZW50X3NpemU7CisgICAgaWYgKG5fZWxlbWVudHMgPiAxICYmIGVsZW1lbnRfc2l6ZSAmJiAo
dG90YWxCeXRlcyAvIGVsZW1lbnRfc2l6ZSkgIT0gbl9lbGVtZW50cyB8fCAoc3RhdGljX2Nhc3Q8
c2l6ZV90Pih+MCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSB0b3RhbEJ5dGVz
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB0b3RhbEJ5dGVzICs9IHNpemVvZihBbGxvY0Fs
aWdubWVudEludGVnZXIpOworICAgIGNoYXIqIHJlc3VsdCA9IHN0YXRpY19jYXN0PGNoYXIqPiht
YWxsb2ModG90YWxCeXRlcykpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgbWVtc2V0KHJl
c3VsdCwgMCwgdG90YWxCeXRlcyk7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PEFsbG9jQWxp
Z25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jOworICAg
ICAgICByZXN1bHQgKz0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7CisgICAgfQorICAg
IHJldHVybiByZXN1bHQ7CisjZWxzZQogICAgIHJldHVybiBjYWxsb2Mobl9lbGVtZW50cywgZWxl
bWVudF9zaXplKTsKKyNlbmRpZgogfQogCiB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1l
bnRzLCBzaXplX3QgZWxlbWVudF9zaXplKQogewogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7
CisKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKKyAgICB2b2lkKiBy
ZXN1bHQgPSB0cnlGYXN0Q2FsbG9jKG5fZWxlbWVudHMsIGVsZW1lbnRfc2l6ZSk7CisjZWxzZQog
ICAgIHZvaWQqIHJlc3VsdCA9IGNhbGxvYyhuX2VsZW1lbnRzLCBlbGVtZW50X3NpemUpOworI2Vu
ZGlmCisKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgQ1JBU0goKTsKICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMjEzLDE5ICsyNjcsNTYgQEAgdm9pZCogZmFzdENhbGxvYyhzaXplX3Qgbl9lbGVt
ZW50cywgc2l6ZQogdm9pZCBmYXN0RnJlZSh2b2lkKiBwKQogewogICAgIEFTU0VSVCghaXNGb3Ji
aWRkZW4oKSk7CisKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKKyAg
ICBpZiAocCkgeworICAgICAgICBBbGxvY0FsaWdubWVudEludGVnZXIqIHBWYWx1ZSA9IEludGVy
bmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUocCk7CisgICAgICAgIGlmICgqcFZh
bHVlICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCisgICAgICAgICAgICBJbnRlcm5hbDo6
ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOworICAgICAgICBmcmVlKHBWYWx1ZSk7CisgICAgfQor
I2Vsc2UKICAgICBmcmVlKHApOworI2VuZGlmCiB9CiAKIHZvaWQqIHRyeUZhc3RSZWFsbG9jKHZv
aWQqIHAsIHNpemVfdCBuKQogewogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7CisKKyNpZiBF
TkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKKyAgICBpZiAocCkgeworICAgICAg
ICBpZihzdGF0aWNfY2FzdDxzaXplX3Q+KH4wKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVn
ZXIpIDw9IG4pICAvLyBJZiBvdmVyZmxvdyB3b3VsZCBvY2N1ci4uLgorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIG4gKz0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7CisgICAg
ICAgIEFsbG9jQWxpZ25tZW50SW50ZWdlciogcFZhbHVlID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NN
YXRjaFZhbGlkYXRpb25WYWx1ZShwKTsKKyAgICAgICAgaWYgKCpwVmFsdWUgIT0gSW50ZXJuYWw6
OkFsbG9jVHlwZU1hbGxvYykKKyAgICAgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hG
YWlsZWQocCk7CisgICAgICAgIGNoYXIqIHBDaGFyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHJlYWxs
b2MocFZhbHVlLCBuKSk7CisgICAgICAgIGlmKHBDaGFyKSB7CisgICAgICAgICAgICAvLyBUaGlz
IHNob3VsZCBub3QgYmUgbmVlZGVkIGJlY2F1c2UgdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmU6
CisgICAgICAgICAgICAvLyAqcmVpbnRlcnByZXRfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIq
PihwQ2hhcikgPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jOworICAgICAgICAgICAgcENoYXIg
Kz0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHBDaGFyOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBmYXN0TWFsbG9jKG4pOwor
ICAgIH0KKyNlbHNlCiAgICAgcmV0dXJuIHJlYWxsb2MocCwgbik7CisjZW5kaWYKIH0KIAogdm9p
ZCogZmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pCiB7CiAgICAgQVNTRVJUKCFpc0ZvcmJp
ZGRlbigpKTsKKworI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQorICAg
IHZvaWQqIHJlc3VsdCA9IHRyeUZhc3RSZWFsbG9jKHAsIG4pOworI2Vsc2UKICAgICB2b2lkKiBy
ZXN1bHQgPSByZWFsbG9jKHAsIG4pOworI2VuZGlmCisKICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgQ1JBU0goKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzI0NCw3ICszMzM1LDE5IEBAIHRl
bXBsYXRlIDxib29sIGNyYXNoT25GYWlsdXJlPgogQUxXQVlTX0lOTElORQogI2VuZGlmCiB2b2lk
KiBtYWxsb2Moc2l6ZV90IHNpemUpIHsKLSAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKHNpemUp
OworI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQorICAgIGlmKHN0YXRp
Y19jYXN0PHNpemVfdD4ofjApIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikgPD0gc2l6
ZSkgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4uCisgICAgICAgIHJldHVybiAwOworICAg
IHNpemUgKz0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7CisgICAgY2hhciogcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGRvX21hbGxvYyhzaXplKSk7CisgICAgaWYgKHJlc3VsdCkg
eworICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihyZXN1
bHQpID0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYzsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVv
ZihBbGxvY0FsaWdubWVudEludGVnZXIpOworICAgIH0KKyNlbHNlCisgICAgdm9pZCogcmVzdWx0
ID0gZG9fbWFsbG9jKHNpemUpOworI2VuZGlmCisKICNpZm5kZWYgV1RGX0NIQU5HRVMKICAgTWFs
bG9jSG9vazo6SW52b2tlTmV3SG9vayhyZXN1bHQsIHNpemUpOwogI2VuZGlmCkBAIC0zMjU4LDcg
KzMzNjEsMTcgQEAgdm9pZCBmcmVlKHZvaWQqIHB0cikgewogI2lmbmRlZiBXVEZfQ0hBTkdFUwog
ICBNYWxsb2NIb29rOjpJbnZva2VEZWxldGVIb29rKHB0cik7CiAjZW5kaWYKLSAgZG9fZnJlZShw
dHIpOworCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisgICAgaWYg
KHB0cikgeworICAgICAgICBBbGxvY0FsaWdubWVudEludGVnZXIqIHBWYWx1ZSA9IEludGVybmFs
OjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUocHRyKTsKKyAgICAgICAgaWYgKCpwVmFs
dWUgIT0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYykKKyAgICAgICAgICAgIEludGVybmFsOjpm
YXN0TWFsbG9jTWF0Y2hGYWlsZWQocHRyKTsKKyAgICAgICAgZG9fZnJlZShwVmFsdWUpOworICAg
IH0KKyNlbHNlCisgICAgZG9fZnJlZShwdHIpOworI2VuZGlmCiB9CiAKICNpZm5kZWYgV1RGX0NI
QU5HRVMKQEAgLTMyODEsMTYgKzMzOTQsMzAgQEAgdGVtcGxhdGUgPGJvb2wgY3Jhc2hPbkZhaWx1
cmU+CiBBTFdBWVNfSU5MSU5FCiAjZW5kaWYKIHZvaWQqIGNhbGxvYyhzaXplX3Qgbiwgc2l6ZV90
IGVsZW1fc2l6ZSkgewotICBjb25zdCBzaXplX3QgdG90YWxCeXRlcyA9IG4gKiBlbGVtX3NpemU7
CisgIHNpemVfdCB0b3RhbEJ5dGVzID0gbiAqIGVsZW1fc2l6ZTsKICAgICAKICAgLy8gUHJvdGVj
dCBhZ2FpbnN0IG92ZXJmbG93CiAgIGlmIChuID4gMSAmJiBlbGVtX3NpemUgJiYgKHRvdGFsQnl0
ZXMgLyBlbGVtX3NpemUpICE9IG4pCiAgICAgcmV0dXJuIDA7Ci0gICAgCi0gIHZvaWQqIHJlc3Vs
dCA9IGRvX21hbGxvYyh0b3RhbEJ5dGVzKTsKLSAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAg
bWVtc2V0KHJlc3VsdCwgMCwgdG90YWxCeXRlcyk7Ci0gIH0KKworI2lmIEVOQUJMRShGQVNUX01B
TExPQ19NQVRDSF9WQUxJREFUSU9OKQorICAgIGlmKHN0YXRpY19jYXN0PHNpemVfdD4ofjApIC0g
c2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikgPD0gdG90YWxCeXRlcykgIC8vIElmIG92ZXJm
bG93IHdvdWxkIG9jY3VyLi4uCisgICAgICAgIHJldHVybiAwOworCisgICAgdG90YWxCeXRlcyAr
PSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKTsKKyAgICBjaGFyKiByZXN1bHQgPSBzdGF0
aWNfY2FzdDxjaGFyKj4oZG9fbWFsbG9jKHRvdGFsQnl0ZXMpKTsKKyAgICBpZiAocmVzdWx0KSB7
CisgICAgICAgIG1lbXNldChyZXN1bHQsIDAsIHRvdGFsQnl0ZXMpOworICAgICAgICAqcmVpbnRl
cnByZXRfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihyZXN1bHQpID0gSW50ZXJuYWw6OkFs
bG9jVHlwZU1hbGxvYzsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihBbGxvY0FsaWdubWVudElu
dGVnZXIpOworICAgIH0KKyNlbHNlCisgICAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKHRvdGFs
Qnl0ZXMpOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBtZW1zZXQocmVzdWx0
LCAwLCB0b3RhbEJ5dGVzKTsKKyAgICB9CisjZW5kaWYKKwogI2lmbmRlZiBXVEZfQ0hBTkdFUwog
ICBNYWxsb2NIb29rOjpJbnZva2VOZXdIb29rKHJlc3VsdCwgdG90YWxCeXRlcyk7CiAjZW5kaWYK
QEAgLTMzMjgsMTAgKzM0NTUsMTQgQEAgQUxXQVlTX0lOTElORQogI2VuZGlmCiB2b2lkKiByZWFs
bG9jKHZvaWQqIG9sZF9wdHIsIHNpemVfdCBuZXdfc2l6ZSkgewogICBpZiAob2xkX3B0ciA9PSBO
VUxMKSB7CisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisgICAgdm9p
ZCogcmVzdWx0ID0gbWFsbG9jKG5ld19zaXplKTsKKyNlbHNlCiAgICAgdm9pZCogcmVzdWx0ID0g
ZG9fbWFsbG9jKG5ld19zaXplKTsKICNpZm5kZWYgV1RGX0NIQU5HRVMKICAgICBNYWxsb2NIb29r
OjpJbnZva2VOZXdIb29rKHJlc3VsdCwgbmV3X3NpemUpOwogI2VuZGlmCisjZW5kaWYKICAgICBy
ZXR1cm4gcmVzdWx0OwogICB9CiAgIGlmIChuZXdfc2l6ZSA9PSAwKSB7CkBAIC0zMzQyLDYgKzM0
NzMsMTYgQEAgdm9pZCogcmVhbGxvYyh2b2lkKiBvbGRfcHRyLCBzaXplX3QgbmV3XwogICAgIHJl
dHVybiBOVUxMOwogICB9CiAKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElP
TikKKyAgICBpZihzdGF0aWNfY2FzdDxzaXplX3Q+KH4wKSAtIHNpemVvZihBbGxvY0FsaWdubWVu
dEludGVnZXIpIDw9IG5ld19zaXplKSAgLy8gSWYgb3ZlcmZsb3cgd291bGQgb2NjdXIuLi4KKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgbmV3X3NpemUgKz0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50
ZWdlcik7CisgICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBwVmFsdWUgPSBJbnRlcm5hbDo6ZmFz
dE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKG9sZF9wdHIpOworICAgIGlmICgqcFZhbHVlICE9
IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCisgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9j
TWF0Y2hGYWlsZWQob2xkX3B0cik7CisgICAgb2xkX3B0ciA9IHBWYWx1ZTsKKyNlbmRpZgorCiAg
IC8vIEdldCB0aGUgc2l6ZSBvZiB0aGUgb2xkIGVudHJ5CiAgIGNvbnN0IFBhZ2VJRCBwID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9sZF9wdHIpID4+IGtQYWdlU2hpZnQ7CiAgIHNpemVf
dCBjbCA9IHBhZ2VoZWFwLT5HZXRTaXplQ2xhc3NJZkNhY2hlZChwKTsKQEAgLTMzNzgsOCArMzUx
OSwxNCBAQCB2b2lkKiByZWFsbG9jKHZvaWQqIG9sZF9wdHIsIHNpemVfdCBuZXdfCiAgICAgLy8g
dGhhdCB3ZSBhbHJlYWR5IGtub3cgdGhlIHNpemVjbGFzcyBvZiBvbGRfcHRyLiAgVGhlIGJlbmVm
aXQKICAgICAvLyB3b3VsZCBiZSBzbWFsbCwgc28gZG9uJ3QgYm90aGVyLgogICAgIGRvX2ZyZWUo
b2xkX3B0cik7CisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisgICAg
bmV3X3B0ciA9IHN0YXRpY19jYXN0PGNoYXIqPihuZXdfcHRyKSArIHNpemVvZihBbGxvY0FsaWdu
bWVudEludGVnZXIpOworI2VuZGlmCiAgICAgcmV0dXJuIG5ld19wdHI7CiAgIH0gZWxzZSB7Cisj
aWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisgICAgb2xkX3B0ciA9IHBC
eXRlICsgc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7ICAvLyBTZXQgb2xkX3B0ciBiYWNr
IHRvIHRoZSB1c2VyIHBvaW50ZXIuCisjZW5kaWYKICAgICByZXR1cm4gb2xkX3B0cjsKICAgfQog
fQpJbmRleDogd3RmL0Zhc3RNYWxsb2MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvRmFzdE1hbGxvYy5o
CShyZXZpc2lvbiAzOTE2MikKKysrIHd0Zi9GYXN0TWFsbG9jLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDYgKzU2LDg2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH07CiAgICAgRmFzdE1hbGxvY1N0
YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsKIAorICAgIC8vIFRoaXMgZGVmaW5lcyBh
IHR5cGUgd2hpY2ggaG9sZHMgYW4gdW5zaWduZWQgaW50ZWdlciBhbmQgaXMgdGhlIHNhbWUgCisg
ICAgLy8gc2l6ZSBhcyB0aGUgbWluaW1hbGx5IGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb24uCisg
ICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyOworCisj
aWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisKKyAgICAvLyBNYWxsb2Mg
dmFsaWRhdGlvbiBpcyBhIHNjaGVtZSB3aGVyZWJ5IGEgdGFnIGlzIGF0dGFjaGVkIHRvIGFuIAor
ICAgIC8vIGFsbG9jYXRpb24gd2hpY2ggaWRlbnRpZmllcyBob3cgaXQgd2FzIG9yaWdpbmFsbHkg
YWxsb2NhdGVkLiAKKyAgICAvLyBUaGlzIGFsbG93cyB1cyB0byB2ZXJpZnkgdGhhdCB0aGUgZnJl
ZWluZyBvcGVyYXRpb24gbWF0Y2hlcyB0aGUgCisgICAgLy8gYWxsb2NhdGlvbiBvcGVyYXRpb24u
IElmIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBvcGVyYXRvciBuZXdbXSAKKyAgICAvLyBidXQg
ZnJlZWQgd2l0aCBmcmVlIG9yIGRlbGV0ZSwgdGhpcyBzeXN0ZW0gd291bGQgZGV0ZWN0IHRoYXQu
IAorICAgIC8vIEluIHRoZSBpbXBsZW1lbnRhdGlvbiBoZXJlLCB0aGUgdGFnIGlzIGFuIGludGVn
ZXIgcHJlcGVuZGVkIHRvIAorICAgIC8vIHRoZSBhbGxvY2F0aW9uIG1lbW9yeSB3aGljaCBpcyBh
c3NpZ25lZCBvbmUgb2YgdGhlIEFsbG9jVHlwZQorICAgIC8vIGVudW1lcmF0aW9uIHZhbHVlcy4g
QW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyAKKyAgICAvLyBzY2hlbWUgY291
bGQgc3RvcmUgdGhlIHRhZyBzb21ld2hlcmUgZWxzZSBvciBpZ25vcmUgaXQuIAorICAgIC8vIFVz
ZXJzIG9mIEZhc3RNYWxsb2MgZG9uJ3QgbmVlZCB0byBrbm93IG9yIGNhcmUgaG93IHRoaXMgdGFn
Z2luZyAKKyAgICAvLyBpcyBpbXBsZW1lbnRlZC4gCisKKyAgICBuYW1lc3BhY2UgSW50ZXJuYWwg
eworICAgICAgICBlbnVtIEFsbG9jVHlwZSB7ICAgICAgICAgICAgICAgICAgICAvLyBTdGFydCB3
aXRoIGFuIHVudXN1YWwgbnVtYmVyIGluc3RlYWQgb2YgemVybywgYmVjYXVzZSB6ZXJvIGlzIGNv
bW1vbi4KKyAgICAgICAgICAgIEFsbG9jVHlwZU1hbGxvYyA9IDB4Mzc1ZDY3NTAsICAgLy8gRW5j
b21wYXNzZXMgZmFzdE1hbGxvYywgZmFzdFplcm9lZE1hbGxvYywgZmFzdENhbGxvYywgZmFzdFJl
YWxsb2MuCisgICAgICAgICAgICBBbGxvY1R5cGVDbGFzc05ldywgICAgICAgICAgICAgIC8vIEVu
Y29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ldyBmcm9tIEZhc3RBbGxvY0Jhc2UuIAorICAgICAg
ICAgICAgQWxsb2NUeXBlQ2xhc3NOZXdBcnJheSwgICAgICAgICAvLyBFbmNvbXBhc3NlcyBjbGFz
cyBvcGVyYXRvciBuZXdbXSBmcm9tIEZhc3RBbGxvY0Jhc2UuIAorICAgICAgICAgICAgQWxsb2NU
eXBlRmFzdE5ldywgICAgICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBmYXN0TmV3LgorICAgICAg
ICAgICAgQWxsb2NUeXBlRmFzdE5ld0FycmF5LCAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBmYXN0
TmV3QXJyYXkuCisgICAgICAgICAgICBBbGxvY1R5cGVOZXcsICAgICAgICAgICAgICAgICAgIC8v
IEVuY29tcGFzc2VzIGdsb2JhbCBvcGVyYXRvciBuZXcuCisgICAgICAgICAgICBBbGxvY1R5cGVO
ZXdBcnJheSAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGdsb2JhbCBvcGVyYXRvciBuZXdb
XS4KKyAgICAgICAgfTsKKworCisgICAgICAgIC8vIFJldHVybiB0aGUgQWxsb2NUeXBlIHRhZyBh
c3NvY2lhdGVkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgorICAgICAgICBpbmxpbmUgQWxs
b2NUeXBlIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKGNvbnN0IHZvaWQqIHApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnN0IEFsbG9jQWxpZ25tZW50SW50ZWdlciogcFR5cGUgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihwKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpKTsKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBbGxvY1R5cGU+KCpwVHlwZSk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIEFsbG9jVHlwZSB0YWcgYXNz
b2NpYXRlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KKyAgICAgICAgaW5saW5lIEFsbG9j
QWxpZ25tZW50SW50ZWdlciogZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKHZvaWQqIHAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFsbG9jQWxp
Z25tZW50SW50ZWdlcio+KHN0YXRpY19jYXN0PGNoYXIqPihwKSAtIHNpemVvZihBbGxvY0FsaWdu
bWVudEludGVnZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNldCB0aGUgQWxsb2NUeXBl
IHRhZyB0byBiZSBhc3NvY2lhZ2VkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgorICAgICAg
ICBpbmxpbmUgdm9pZCBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZSh2b2lkKiBwLCBB
bGxvY1R5cGUgYWxsb2NUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBBbGxvY0FsaWdubWVu
dEludGVnZXIqIHBUeXBlID0gcmVpbnRlcnByZXRfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIq
PihzdGF0aWNfY2FzdDxjaGFyKj4ocCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSk7
CisgICAgICAgICAgICAqcFR5cGUgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXI+
KGFsbG9jVHlwZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgYSBkZXRlY3RlZCBh
bGxvYy9mcmVlIG1pc21hdGNoLiBCeSBkZWZhdWx0IHRoaXMgY2FsbHMgQ1JBU0goKS4KKyAgICAg
ICAgdm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCogcCk7CisKKyAgICB9IC8vIG5hbWVz
cGFjZSBJbnRlcm5hbAorCisgICAgLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBmdW5jdGlvbiB3
aGljaCBpcyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4KKyAgICBpbmxpbmUgdm9pZCBm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2b2lkKiBwLCBJbnRlcm5hbDo6QWxsb2NUeXBl
IGFsbG9jVHlwZSkKKyAgICB7CisgICAgICAgIGlmIChwKQorICAgICAgICAgICAgSW50ZXJuYWw6
OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIGFsbG9jVHlwZSk7CisgICAgfQor
CisgICAgLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBmdW5jdGlvbiB3aGljaCBpcyB1c2VkIGJ5
IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4KKyAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0ZUZyZWUodm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUpCisgICAg
eworICAgICAgICBpZiAocCkgeworICAgICAgICAgICAgaWYgKEludGVybmFsOjpmYXN0TWFsbG9j
TWF0Y2hWYWxpZGF0aW9uVHlwZShwKSAhPSBhbGxvY1R5cGUpCisgICAgICAgICAgICAgICAgSW50
ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaEZhaWxlZChwKTsKKyAgICAgICAgICAgIEludGVybmFsOjpz
ZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBJbnRlcm5hbDo6QWxsb2NUeXBlTWFs
bG9jKTsgIC8vIFNldCBpdCB0byB0aGlzIHNvIHRoYXQgZmFzdEZyZWUgdGhpbmtzIGl0J3MgT0su
CisgICAgICAgIH0KKyAgICB9CisKKyNlbHNlCisKKyAgICAvLyBUaGVzZSBjb3VsZCBhbHRlcm5h
dGl2ZWx5IGJlIGlubGluZSBmdW5jdGlvbnMgd2hpY2ggZG8gbm90aGluZy4KKyAgICAjZGVmaW5l
IGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIHR5cGUpCisgICAgI2RlZmluZSBmYXN0
TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUocCwgdHlwZSkKKworI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdURgogCiB1c2luZyBXVEY6OmZhc3RNYWxsb2M7CkluZGV4OiB3dGYvSGFzaFRyYWl0cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHd0Zi9IYXNoVHJhaXRzLmgJKHJldmlzaW9uIDM5MTYyKQorKysgd3Rm
L0hhc2hUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVk
ZSAiQXNzZXJ0aW9ucy5oIgogI2luY2x1ZGUgIkhhc2hGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJU
eXBlVHJhaXRzLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDxsaW1pdHM+CiAKQEAg
LTMxLDQ3ICszMiw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHVzaW5nIHN0ZDo6cGFpcjsKICAg
ICB1c2luZyBzdGQ6Om1ha2VfcGFpcjsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBJc0ludGVnZXIgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsg
fTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8Ym9vbD4gICAgICAgICAgICAgICB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBJc0ludGVnZXI8Y2hhcj4gICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVl
ID0gdHJ1ZTsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8c2lnbmVkIGNoYXI+
ICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgY2hhcj4gICAgICB7IHN0YXRpYyBjb25zdCBi
b29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8c2hv
cnQ+ICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgc2hvcnQ+ICAgICB7IHN0YXRp
YyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0lu
dGVnZXI8aW50PiAgICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1
ZTsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgaW50PiAgICAg
ICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBJc0ludGVnZXI8bG9uZz4gICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZh
bHVlID0gdHJ1ZTsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQg
bG9uZz4gICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8bG9uZyBsb25nPiAgICAgICAgICB7IHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8
dW5zaWduZWQgbG9uZyBsb25nPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsK
LQotI2lmICFDT01QSUxFUihNU1ZDKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVE
KQotICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx3Y2hhcl90PiAgICAgICAgICAgIHsg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotI2VuZGlmCi0KLSAgICBDT01QSUxF
X0FTU0VSVChJc0ludGVnZXI8Ym9vbD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2Jvb2xfdHJ1ZSk7
Ci0gICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPGNoYXI+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdl
cl9jaGFyX3RydWUpOwotICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjxzaWduZWQgY2hhcj46
OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3NpZ25lZF9jaGFyX3RydWUpOwotICAgIENPTVBJTEVfQVNT
RVJUKElzSW50ZWdlcjx1bnNpZ25lZCBjaGFyPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfdW5zaWdu
ZWRfY2hhcl90cnVlKTsKLSAgICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8c2hvcnQ+Ojp2YWx1
ZSwgV1RGX0lzSW50ZWdlcl9zaG9ydF90cnVlKTsKLSAgICBDT01QSUxFX0FTU0VSVChJc0ludGVn
ZXI8dW5zaWduZWQgc2hvcnQ+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl91bnNpZ25lZF9zaG9ydF90
cnVlKTsKLSAgICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8aW50Pjo6dmFsdWUsIFdURl9Jc0lu
dGVnZXJfaW50X3RydWUpOwotICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjx1bnNpZ25lZCBp
bnQ+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl91bnNpZ25lZF9pbnRfdHJ1ZSk7Ci0gICAgQ09NUElM
RV9BU1NFUlQoSXNJbnRlZ2VyPGxvbmc+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9sb25nX3RydWUp
OwotICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjx1bnNpZ25lZCBsb25nPjo6dmFsdWUsIFdU
Rl9Jc0ludGVnZXJfdW5zaWduZWRfbG9uZ190cnVlKTsKLSAgICBDT01QSUxFX0FTU0VSVChJc0lu
dGVnZXI8bG9uZyBsb25nPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfbG9uZ19sb25nX3RydWUpOwot
ICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjx1bnNpZ25lZCBsb25nIGxvbmc+Ojp2YWx1ZSwg
V1RGX0lzSW50ZWdlcl91bnNpZ25lZF9sb25nX2xvbmdfdHJ1ZSk7Ci0KLSNpZiAhQ09NUElMRVIo
TVNWQykgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKLSAgICBDT01QSUxFX0FT
U0VSVChJc0ludGVnZXI8d2NoYXJfdD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3djaGFyX3RfdHJ1
ZSk7Ci0jZW5kaWYKLQotICAgIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8Y2hhcio+Ojp2YWx1
ZSwgV1RGX0lzSW50ZWdlcl9jaGFyX3BvaW50ZXJfZmFsc2UpOwotICAgIENPTVBJTEVfQVNTRVJU
KCFJc0ludGVnZXI8Y29uc3QgY2hhciogPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfY29uc3RfY2hh
cl9wb2ludGVyX2ZhbHNlKTsKLSAgICBDT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPHZvbGF0aWxl
IGNoYXIqID46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3ZvbGF0aWxlX2NoYXJfcG9pbnRlcl9fZmFs
c2UpOwotICAgIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8ZG91YmxlPjo6dmFsdWUsIFdURl9J
c0ludGVnZXJfZG91YmxlX2ZhbHNlKTsKLSAgICBDT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPGZs
b2F0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfZmxvYXRfZmFsc2UpOwotCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7CiAKICAgICB0ZW1wbGF0ZTxib29sIGlzSW50
ZWdlciwgdHlwZW5hbWUgVD4gc3RydWN0IEdlbmVyaWNIYXNoVHJhaXRzQmFzZTsKQEAgLTg5LDcg
KzQ5LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKFQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IHN0YXRpY19jYXN0PFQ+KC0xKTsgfQogICAg
IH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMg
OiBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8SXNJbnRlZ2VyPFQ+Ojp2YWx1ZSwgVD4geworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljSGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNo
VHJhaXRzQmFzZTxpc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQ+IHsKICAgICAgICAgdHlwZWRlZiBU
IFRyYWl0VHlwZTsKICAgICAgICAgc3RhdGljIFQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFQoKTsg
fQogICAgIH07CkluZGV4OiB3dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3dGYvUGxhdGZv
cm0uaAkocmV2aXNpb24gMzkxNjIpCisrKyB3dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpA
QCAtMzc0LDYgKzM3NCw5IEBACiAjZW5kaWYKIAogLyogRU5BQkxFIG1hY3JvIGRlZmF1bHRzICov
CisjaWYgIWRlZmluZWQoRU5BQkxFX0ZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisjZGVm
aW5lIEVOQUJMRV9GQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OIDAKKyNlbmRpZgogCiAjaWYg
IWRlZmluZWQoRU5BQkxFX0lDT05EQVRBQkFTRSkKICNkZWZpbmUgRU5BQkxFX0lDT05EQVRBQkFT
RSAxCkluZGV4OiB3dGYvVHlwZVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHd0Zi9UeXBlVHJhaXRz
LmgJKHJldmlzaW9uIDApCisrKyB3dGYvVHlwZVRyYWl0cy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMxNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaWZuZGVmIFdURl9UeXBlVHJhaXRzX2gKKyNkZWZpbmUgV1RGX1R5
cGVUcmFpdHNfaAorCisvLyBXZSBkZWZpbmUgdHlwZSB0cmFpdHMgdGhhdCBhbGxvdyB1cyB0byBv
cHRpbWl6ZSB0ZW1wbGF0ZWQgYXJyYXkgbmV3L2RlbGV0ZS4KKy8vIFRoZXNlIHR5cGUgdHJhaXRz
IG1hdGNoIHRoZSBDKysweCB3b3JraW5nIHN0YW5kYXJkIGRlZmluZWQgaW4gc2VjdGlvbiAyMC40
LjIuCisvLyBUaGUgdHlwZXMgKGludGVncmFsX2NvbnN0YW50LCB0cnVlX3R5cGUsIGV0Yy4pIGRl
ZmluZWQgaGVyZSBhcmUgYmFzZWQgb24gCisvLyB0aGUgQysrMHggdHlwZV90cmFpdHMgdHlwZXMg
YW5kIHVzZSB0aGUgc2FtZSBuYW1pbmcgYW5kIGNvbnZlbnRpb25zLiAKKy8vIFJlY2VudCB2ZXJz
aW9ucyBvZiBzb21lIGNvbXBpbGVycyBhbmQgc3RhbmRhcmQgbGlicmFyaWVzIGhhdmUgc3VwcG9y
dCBmb3IgdHlwZSB0cmFpdHMuCisKKyNpZiAoZGVmaW5lZChfX0dMSUJDWFhfXykgJiYgKF9fR0xJ
QkNYWF9fID49IDIwMDcwNzI0KSkgfHwgKGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+
PSAxNjAwKSkKKworLy8gR0NDJ3MgbGlic3RkYysrIDIwMDcwNzI0IGFuZCBsYXRlciBhbmQgVkMx
MCAoVlMyMDEwKSBhbmQgbGF0ZXIgc3VwcG9ydCBDKysgVFIxIHR5cGVfdHJhaXRzLgorI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorCituYW1lc3BhY2UgV1RGIHsKKyAgICB1c2luZyBzdGQ6OmlzX2lu
dGVncmFsOworICAgIHVzaW5nIHN0ZDo6aGFzX3RyaXZpYWxfY29uc3RydWN0b3I7CisgICAgdXNp
bmcgc3RkOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOworfQorCisjZWxzZQorCituYW1lc3BhY2Ug
V1RGIHsKKworICAgIC8vIFRoaXMgY29tcGlsZXIgZG9lc24ndCBwcm92aWRlIHR5cGUgdHJhaXRz
LCBzbyB3ZSBwcm92aWRlIGEgc2V0LgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBp
c19pbnRlZ3JhbCB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07CisKKyAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxib29sPiB7IHN0YXRpYyBjb25zdCBib29sIHZh
bHVlID0gdHJ1ZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCBi
b29sPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBpc19pbnRlZ3JhbDx2b2xhdGlsZSBib29sPiB7IHN0YXRpYyBjb25zdCBib29sIHZh
bHVlID0gdHJ1ZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB2
b2xhdGlsZSBib29sPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKKworICAg
IHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wg
dmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0
IGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRl
PD4gc3RydWN0IGlzX2ludGVncmFsPHZvbGF0aWxlIGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wg
dmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0
IHZvbGF0aWxlIGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworCisg
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8c2lnbmVkIGNoYXI+IHsgc3RhdGljIGNv
bnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVn
cmFsPGNvbnN0IHNpZ25lZCBjaGFyPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsg
fTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx2b2xhdGlsZSBzaWduZWQgY2hh
cj4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGNoYXI+IHsgc3RhdGljIGNv
bnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50
ZWdyYWw8dW5zaWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07
CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3QgdW5zaWduZWQgY2hhcj4g
eyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgdW5zaWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3QgYm9v
bCB2YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29u
c3Qgdm9sYXRpbGUgdW5zaWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRy
dWU7IH07CisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxzaG9ydD4geyBzdGF0
aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNf
aW50ZWdyYWw8Y29uc3Qgc2hvcnQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9
OworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPHZvbGF0aWxlIHNob3J0PiB7IHN0
YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBp
c19pbnRlZ3JhbDxjb25zdCB2b2xhdGlsZSBzaG9ydD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7IH07CisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx1bnNpZ25l
ZCBzaG9ydD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3QgdW5zaWduZWQgc2hvcnQ+IHsgc3RhdGljIGNv
bnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVn
cmFsPHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0g
dHJ1ZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB2b2xhdGls
ZSB1bnNpZ25lZCBzaG9ydD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisK
KyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxpbnQ+IHsgc3RhdGljIGNvbnN0IGJv
b2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNv
bnN0IGludD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgaW50PiB7IHN0YXRpYyBjb25zdCBib29s
IHZhbHVlID0gdHJ1ZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25z
dCB2b2xhdGlsZSBpbnQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworCisg
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dW5zaWduZWQgaW50PiB7IHN0YXRpYyBj
b25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRl
Z3JhbDxjb25zdCB1bnNpZ25lZCBpbnQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVl
OyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPHZvbGF0aWxlIHVuc2lnbmVk
IGludD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgaW50PiB7IHN0YXRp
YyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKKworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlz
X2ludGVncmFsPGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAg
IHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IGxvbmc+IHsgc3RhdGljIGNvbnN0
IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFs
PHZvbGF0aWxlIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAg
IHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IHZvbGF0aWxlIGxvbmc+IHsgc3Rh
dGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
aXNfaW50ZWdyYWw8dW5zaWduZWQgbG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRy
dWU7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3QgdW5zaWduZWQg
bG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgdW5zaWduZWQgbG9uZz4geyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdy
YWw8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7IH07CisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxsb25nIGxv
bmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4g
c3RydWN0IGlzX2ludGVncmFsPGNvbnN0IGxvbmcgbG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2
YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRp
bGUgbG9uZyBsb25nPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKKyAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB2b2xhdGlsZSBsb25nIGxvbmc+IHsg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgaXNfaW50ZWdyYWw8dW5zaWduZWQgbG9uZyBsb25nPiB7IHN0YXRpYyBjb25zdCBib29sIHZh
bHVlID0gdHJ1ZTsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB1
bnNpZ25lZCBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Owor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcg
bG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CisgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyBsb25nPiB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKKworI2lmICFkZWZpbmVkKF9NU0Nf
VkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQorICAgIHRlbXBsYXRlPD4g
c3RydWN0IGlzX2ludGVncmFsPHdjaGFyX3Q+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0
cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IHdjaGFyX3Q+
IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IGlzX2ludGVncmFsPHZvbGF0aWxlIHdjaGFyX3Q+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFs
dWUgPSB0cnVlOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IHZv
bGF0aWxlIHdjaGFyX3Q+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OworI2Vu
ZGlmCisKKworICAgIC8vIFRoaXMgY29tcGlsZXIgZG9lc24ndCBwcm92aWRlIHR5cGUgdHJhaXRz
LCBzbyB3ZSBwcm92aWRlIGEgYmFzaWMgaGFzX3RyaXZpYWxfY29uc3RydWN0b3IKKyAgICAvLyBh
bmQgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvciBkZWZpbml0aW9uLiBUaGUgZGVmaW5pdGlvbnMgaGVy
ZSBpbmNsdWRlIG1vc3QgYnVpbHQtaW4gCisgICAgLy8gc2NhbGFyIHR5cGVzIGJ1dCBkbyBub3Qg
aW5jbHVkZSBQT0Qgc3RydWN0cyBhbmQgY2xhc3Nlcy4gRm9yIHRoZSBpbnRlbmRlZCBwdXJwb3Nl
cyBvZiAKKyAgICAvLyB0eXBlX3RyYWl0cyB0aGlzIHJlc3VsdHMgY29ycmVjdCBidXQgcG90ZW50
aWFsbHkgbGVzcyBlZmZpY2llbnQgY29kZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCB2
PgorICAgIHN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudCB7CisgICAgICAgIHN0YXRpYyBjb25zdCBU
IHZhbHVlID0gdjsKKyAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisgICAgICAgIHR5cGVk
ZWYgaW50ZWdyYWxfY29uc3RhbnQ8VCwgdj4gdHlwZTsKKyAgICB9OworCisgICAgdHlwZWRlZiBp
bnRlZ3JhbF9jb25zdGFudDxib29sLCB0cnVlPiAgdHJ1ZV90eXBlOworICAgIHR5cGVkZWYgaW50
ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+IGZhbHNlX3R5cGU7CisKKyNpZiBkZWZpbmVkKF9N
U0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTQwMCkKKyAgICAvLyBWQzggKFZTMjAwNSkgYW5kIGxh
dGVyIGhhdmUgYnVpbHQtaW4gY29tcGlsZXIgc3VwcG9ydCBmb3IgaGFzX3RyaXZpYWxfY29uc3Ry
dWN0b3IgLyBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yLCAKKyAgICAvLyBidXQgZm9yIHNvbWUgdW5l
eHBsYWluZWQgcmVhc29uIGl0IGRvZXNuJ3Qgd29yayBvbiBidWlsdC1pbiB0eXBlcy4KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yIDogcHVi
bGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9faGFzX3RyaXZpYWxfY29uc3RydWN0b3IoVCk+
IHsgfTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3Ry
dWN0b3IgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19oYXNfdHJpdmlhbF9kZXN0
cnVjdG9yKFQpPiB7IH07CisjZWxzZQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfY29uc3RydWN0b3IgOiBwdWJsaWMgZmFsc2VfdHlwZSB7IH07CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yIDogcHVibGlj
IGZhbHNlX3R5cGUgeyB9OworI2VuZGlmCisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Ry
dWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPFQqPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9Owor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxU
Kj4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9jb25zdHJ1Y3RvcjxmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgZmxvYXQ+IDog
cHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2NvbnN0cnVjdG9yPHZvbGF0aWxlIGZsb2F0PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGls
ZSBmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKworICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxkb3VibGU+IDogcHVibGljIHRydWVfdHlwZSB7IH07
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IGRv
dWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfY29uc3RydWN0b3I8dm9sYXRpbGUgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGUg
eyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25z
dCB2b2xhdGlsZSBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisKKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8bG9uZyBkb3VibGU+IDogcHVibGlj
IHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0
cnVjdG9yPGNvbnN0IGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx2b2xhdGlsZSBsb25nIGRv
dWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgbG9uZyBkb3VibGU+IDogcHVibGlj
IHRydWVfdHlwZSB7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3I8dW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgY2hh
cj4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3Ry
aXZpYWxfY29uc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90
eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8
Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKwor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25lZCBz
aG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVf
dHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9y
PHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKworICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRy
dWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVj
dG9yPGNvbnN0IHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQg
aW50PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBpbnQ+IDogcHVibGlj
IHRydWVfdHlwZSB7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3I8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgbG9u
Zz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3Ry
aXZpYWxfY29uc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90
eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8
Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKwor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx1bnNpZ25lZCBs
b25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJs
aWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGUg
eyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25z
dCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisK
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8c2lnbmVkIGNo
YXI+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190
cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGUg
eyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx2b2xh
dGlsZSBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGNo
YXI+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfY29uc3RydWN0b3I8c2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9
OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBz
aWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBzaG9ydD4gOiBwdWJs
aWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGUg
eyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHNp
Z25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVf
dHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9y
PHZvbGF0aWxlIHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxh
dGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25l
ZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8c2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZSB7
IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0
IHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQgbG9uZz4gOiBwdWJs
aWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZSB7
IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8c2ln
bmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGxvbmcgbG9uZz4gOiBw
dWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29uc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBl
IHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29u
c3Qgdm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKwor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxib29sPiA6IHB1
YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3Rvcjxjb25zdCBib29sPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx2b2xhdGlsZSBib29sPiA6IHB1
YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBib29sPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9Owor
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNoYXI+IDog
cHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2NvbnN0cnVjdG9yPGNvbnN0IGNoYXI+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHZvbGF0aWxlIGNoYXI+IDog
cHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2NvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGNoYXI+IDogcHVibGljIHRydWVfdHlwZSB7IH07
CisKKyAgICAjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9U
X0RFRklORUQpCisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1
Y3Rvcjx3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgICAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgd2NoYXJfdD4gOiBwdWJsaWMg
dHJ1ZV90eXBlIHsgfTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Nv
bnN0cnVjdG9yPHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAg
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB2b2xh
dGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgICNlbmRpZgorCisKKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxmbG9hdD4gOiBwdWJs
aWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3Rvcjxjb25zdCBmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSBmbG9hdD4gOiBwdWJs
aWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKwor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGRvdWJsZT4gOiBw
dWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3Rvcjxjb25zdCBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dm9sYXRpbGUgZG91YmxlPiA6
IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlh
bF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsg
fTsKKworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGxvbmcg
ZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5
cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZv
bGF0aWxlIGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGxvbmcgZG91
YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhh
c190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsg
fTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB1
bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIGNoYXI+IDogcHVi
bGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rl
c3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBl
IHsgfTsKKworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVu
c2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIHNob3J0PiA6IHB1Ymxp
YyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9Owor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0
aWxlIHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworCisgICAgdGVtcGxh
dGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQgaW50PiA6IHB1Ymxp
YyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25l
ZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhh
c190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgaW50PiA6IHB1Ymxp
YyB0cnVlX3R5cGUgeyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rl
c3RydWN0b3I8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25n
PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJp
dmlhbF9kZXN0cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlw
ZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29u
c3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKworICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVuc2lnbmVkIGxvbmcg
bG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRy
dWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0
b3I8dm9sYXRpbGUgdW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9Owor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0
aWxlIHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKworICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBjaGFyPiA6IHB1
YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9k
ZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25l
ZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1Ymxp
YyB0cnVlX3R5cGUgeyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rl
c3RydWN0b3I8c2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBzaG9ydD4g
OiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZSB7
IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qg
dm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworCisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8c2lnbmVkIGludD4gOiBwdWJs
aWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3Rvcjxjb25zdCBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBp
bnQ+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190
cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1
ZV90eXBlIHsgfTsKKworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nPiA6IHB1Ymxp
YyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxl
IHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8c2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMg
dHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1
Y3Rvcjxjb25zdCBzaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25l
ZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9u
Zz4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPGJvb2w+IDogcHVibGljIHRydWVfdHlwZSB7IH07CisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgYm9vbD4gOiBwdWJs
aWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3Rvcjx2b2xhdGlsZSBib29sPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGJvb2w+
IDogcHVibGljIHRydWVfdHlwZSB7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3Ry
aXZpYWxfZGVzdHJ1Y3RvcjxjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGNoYXI+IDogcHVibGlj
IHRydWVfdHlwZSB7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3Ry
dWN0b3I8dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBjaGFyPiA6
IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworCisgICAgI2lmICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBk
ZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQorICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9
OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25z
dCB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9OworICAgICAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0
cnVlX3R5cGUgeyB9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGUgeyB9Owor
ICAgICNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisjZW5kaWYgIC8vIF9fR0xJQkNY
WF9fLCBldGMuCisKKworCisjZW5kaWYgLy8gV1RGX1R5cGVUcmFpdHNfaAo=
</data>
<flag name="review"
          id="12190"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25945</attachid>
            <date>2008-12-11 01:22:36 -0800</date>
            <delta_ts>2009-01-28 00:51:55 -0800</delta_ts>
            <desc>Build file patch.</desc>
            <filename>mac_gtk_win.patch</filename>
            <type>text/plain</type>
            <size>6704</size>
            <attacher name="Paul Pedriana">ppedriana</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAocmV2aXNpb24gMzg5MDEpDQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgICAgKHdvcmtp
bmcgY29weSkNCkBAIC04Niw2ICs4Niw3IEBADQogICAgICAgICAgICAgICAgMTRGMzQ4OEYwRTk1
RUY4QTAwMzY0OEJDIC8qIENvbGxlY3RvckhlYXBJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGMzQ4OEUwRTk1RUY4QTAwMzY0OEJDIC8q
IENvbGxlY3RvckhlYXBJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07DQogICAgICAgICAgICAgICAgMUM2MTUxNkMwRUJBQzdBMDAwMzEzNzZG
IC8qIFByb2ZpbGVyU2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM2MTUxNkEwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVyLm1t
ICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItZm5vLXN0cmljdC1hbGlhc2luZyI7
IH07IH07DQogICAgICAgICAgICAgICAgMUM2MTUxNkQwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2Zp
bGVyU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzYxNTE2QjBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIuaCAqLzsgfTsNCisg
ICAgICAgICAgICAgICAzMTEwQUUwRDBFRTY3QkFBMDBBMDU3RjEgLyogVHlwZVRyYWl0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzExMEFFMEMwRUU2
N0JBMjAwQTA1N0YxIC8qIFR5cGVUcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9Ow0KICAgICAgICAgICAgICAgIDVENTM3MjZGMEUxQzU0ODgwMDIx
RTU0OSAvKiBUcmFjaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oICovOyB9Ow0KICAg
ICAgICAgICAgICAgIDVENUQ4QUI2MEUwRDBBNzIwMEY5QzY5MiAvKiBqc2MgaW4gQ29weSBJbnRv
IEZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJFMTA4
MjJBMUM3MDA3MzY5NzUgLyoganNjICovOyB9Ow0KICAgICAgICAgICAgICAgIDVENUQ4QUQxMEUw
RDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVk
aXQuZHlsaWIgKi87IH07DQpAQCAtNDgxLDYgKzQ4Miw4IEBADQogICAgICAgICAgICAgICAgMUM5
MDUxNDUwQkE5RThBNzAwODFFOUQwIC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsN
CiAgICAgICAgICAgICAgICAxQ0FBOEI0QTBEMzJDMzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07DQogICAgICAgICAgICAgICAgMUNBQThCNEIwRDMyQzM5QTAwNDFC
Q0ZGIC8qIEphdmFTY3JpcHRDb3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEphdmFTY3JpcHRDb3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQorICAgICAgICAg
ICAgICAgMzExMEFFMEIwRUU2N0I4QjAwQTA1N0YxIC8qIEZhc3RBbGxvY0Jhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEFsbG9jQmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9Ow0KKyAgICAgICAgICAgICAgIDMxMTBBRTBDMEVFNjdCQTIwMEEwNTdGMSAv
KiBUeXBlVHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFR5cGVUcmFp
dHMuaDsgcGF0aCA9IHd0Zi9UeXBlVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
DQogICAgICAgICAgICAgICAgNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBqc2Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IH07DQogICAgICAgICAg
ICAgICAgNTE4NjExMUQwQ0M4MjQ4MzAwODE0MTJCIC8qIERlcXVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERlcXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQog
ICAgICAgICAgICAgICAgNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gIjxhYnNvbHV0ZT4iOyB9Ow0KQEAgLTgzOCw2ICs4NDEsNyBAQA0KICAgICAgICAgICAgICAg
IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBKYXZhU2NyaXB0Q29yZSAqLyA9IHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlzYSA9IFBCWEdyb3VwOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgY2hpbGRyZW4gPSAoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxMTBBRTBD
MEVFNjdCQTIwMEEwNTdGMSAvKiBUeXBlVHJhaXRzLmggKi8sDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkzN0I2M0NDMDlFNzY2RDIwMEE2NzFERCAvKiBEZXJpdmVkU291cmNlcy5t
YWtlICovLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGNjkyQTg1NDAyNTU1OTdE
MDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE0QjhFQ0E2MEE1NjUzOTgwMDYyQkU1NCAvKiBKYXZhU2NyaXB0Q29yZS5leHAg
Ki8sDQpAQCAtMTAyNSw2ICsxMDI5LDcgQEANCiAgICAgICAgICAgICAgICA2NTE2MkVGMTA4RTZB
MjFDMDA3NTU2Q0QgLyogd3RmICovID0gew0KICAgICAgICAgICAgICAgICAgICAgICAgaXNhID0g
UEJYR3JvdXA7DQogICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9ICgNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzExMEFFMEIwRUU2N0I4QjAwQTA1N0YxIC8qIEZhc3RB
bGxvY0Jhc2UuaCAqLywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDZEMzU4QTAw
REFBRDlDNDAwM0IxNzRFIC8qIG1hYyAqLywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRTE5NTY3OEQwOUU3Q0YxMjAwQjg5RDEzIC8qIHVuaWNvZGUgKi8sDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDkzQUE0Rjc3MDk1NzI1MUYwMDg0QjNBNyAvKiBBbHdheXNJbmxp
bmUuaCAqLywNCkBAIC0xNDM0LDYgKzE0MzksNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuaCBp
biBIZWFkZXJzICovLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQzE4QzNGNDBF
MTZGNUNEMDBCMzQ0NjAgLyogQ29tcGxldGlvbi5oIGluIEhlYWRlcnMgKi8sDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJDMThDM0Y1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBjb25maWcu
aCBpbiBIZWFkZXJzICovLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMTEwQUUw
RDBFRTY3QkFBMDBBMDU3RjEgLyogVHlwZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJDMThDM0Y2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBDb25z
dHJ1Y3REYXRhLmggaW4gSGVhZGVycyAqLywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNURFNkU1QjMwRTE3MjhFQzAwMTgwNDA3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlIGluIEhlYWRl
cnMgKi8sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJDMThDM0Y5MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBEYXRlTWF0aC5oIGluIEhlYWRlcnMgKi8sDQoNCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5hbQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtICAgICAgIChyZXZpc2lvbiAzODg1NikNCisrKyBKYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5hbSAgICAgICAod29ya2luZyBjb3B5KQ0KQEAgLTIxNyw2ICsyMTcsNyBAQA0KICAg
ICAgICBKYXZhU2NyaXB0Q29yZS93dGYvVENQYWNrZWRDYWNoZS5oIFwNCiAgICAgICAgSmF2YVNj
cmlwdENvcmUvd3RmL1RDUGFnZU1hcC5oIFwNCiAgICAgICAgSmF2YVNjcmlwdENvcmUvd3RmL1RD
U3BpbkxvY2suaCBcDQorICAgICAgIEphdmFTY3JpcHRDb3JlL3d0Zi9UeXBlVHJhaXRzLmggXA0K
ICAgICAgICBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaCBcDQogICAgICAgIEph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaCBcDQogICAgICAgIEphdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRpbmdHdGsuY3BwIFwNCkBAIC0zOTMsNiArMzk0LDcgQEANCiAgICAgICAgSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UcmFjaW5nLmggXA0KICAgICAgICBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmcuY3BwIFwNCiAgICAgICAgSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5n
LmggXA0KKyAgICAgICBKYXZhU2NyaXB0Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5oIFwNCiAgICAg
ICAgSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwIFwNCiAgICAgICAgSmF2YVNjcmlw
dENvcmUvd3RmL0Zhc3RNYWxsb2MuaCBcDQogICAgICAgIEphdmFTY3JpcHRDb3JlL3d0Zi9NYWxs
b2Nab25lU3VwcG9ydC5oIFwNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovV1RGL1dURi52Y3Byb2oNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2ogKHJldmlzaW9uIDM4ODU2KQ0KKysrIEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvaiAod29ya2lu
ZyBjb3B5KQ0KQEAgLTI1NSw2ICsyNTUsMTAgQEANCiAgICAgICAgICAgICAgICAgICAgICAgID4N
CiAgICAgICAgICAgICAgICA8L0ZpbGU+DQogICAgICAgICAgICAgICAgPEZpbGUNCisgICAgICAg
ICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXEZhc3RBbGxvY0Jhc2UuaCIN
CisgICAgICAgICAgICAgICAgICAgICAgID4NCisgICAgICAgICAgICAgICA8L0ZpbGU+DQorICAg
ICAgICAgICAgICAgPEZpbGUNCiAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0i
Li5cLi5cd3RmXEZhc3RNYWxsb2MuY3BwIg0KICAgICAgICAgICAgICAgICAgICAgICAgPg0KICAg
ICAgICAgICAgICAgIDwvRmlsZT4NCkBAIC00MTksNiArNDIzLDEwIEBADQogICAgICAgICAgICAg
ICAgICAgICAgICA+DQogICAgICAgICAgICAgICAgPC9GaWxlPg0KICAgICAgICAgICAgICAgIDxG
aWxlDQorICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxUeXBl
VHJhaXRzLmgiDQorICAgICAgICAgICAgICAgICAgICAgICA+DQorICAgICAgICAgICAgICAgPC9G
aWxlPg0KKyAgICAgICAgICAgICAgIDxGaWxlDQogICAgICAgICAgICAgICAgICAgICAgICBSZWxh
dGl2ZVBhdGg9Ii4uXC4uXHd0Zlx1bmljb2RlXFVuaWNvZGUuaCINCiAgICAgICAgICAgICAgICAg
ICAgICAgID4NCiAgICAgICAgICAgICAgICA8L0ZpbGU+DQo=
</data>
<flag name="review"
          id="12191"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26460</attachid>
            <date>2009-01-06 06:46:20 -0800</date>
            <delta_ts>2009-01-10 15:39:26 -0800</delta_ts>
            <desc>Updated build systems patch</desc>
            <filename>build.patch</filename>
            <type>text/plain</type>
            <size>5098</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAzOTU5NSkKKysrIEphdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDcgQEAKIAlK
YXZhU2NyaXB0Q29yZS93dGYvVENQYWNrZWRDYWNoZS5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYv
VENQYWdlTWFwLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UQ1NwaW5Mb2NrLmggXAorCUphdmFT
Y3JpcHRDb3JlL3d0Zi9UeXBlVHJhaXRzLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRT
cGVjaWZpYy5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggXAogCUphdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwIFwKQEAgLTQxMCw2ICs0MTEsNyBAQAogCUphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHJhY2luZy5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCBcCisJSmF2YVNjcmlw
dENvcmUvd3RmL0Zhc3RBbGxvY0Jhc2UuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxs
b2MuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oIFwKIAlKYXZhU2NyaXB0
Q29yZS93dGYvTWFsbG9jWm9uZVN1cHBvcnQuaCBcCgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAzOTY0MikKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw2ICszMzYsNyBAQAogCQlFMUE4
NjJENjBEN0YyQjVDMDAxRUM2QUEgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTg2MkQ1MEQ3RjJCNUMwMDFFQzZB
QSAvKiBDb2xsYXRvckRlZmF1bHQuY3BwICovOyB9OwogCQlFMUVFNzkzRDBENkM5QjkyMDBGRUEz
QkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFFRTc5M0MwRDZDOUI5MjAwRkVBM0JBIC8qIFRocmVhZGluZ1B0
aHJlYWRzLmNwcCAqLzsgfTsKIAkJRTFFRjc5QUEwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRjc5QTgw
Q0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwICovOyB9OworCQlFNERGQzlBOTBGMTM5QjA2MDBB
RUQzMDIgLyogVHlwZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRERkM5QTgwRjEzOUIwNjAwQUVEMzAyIC8qIFR5cGVUcmFpdHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTFCNDQ3QTBF
Q0NENzNCMDA0RjRERDEgLyogU3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFCNDQ3OTBFQ0NENzNCMDA0RjRERDEgLyogU3RkTGli
RXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCkBAIC03NzEsNiArNzcyLDggQEAKIAkJ
RTFFRTc5OEIwRDZDQTUzRDAwRkVBM0JBIC8qIE1lc3NhZ2VRdWV1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTFFRjc5QTgwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRGOC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxRUY3OUE5MENFOTdCQTYwMDg4RDUwMCAvKiBVVEY4LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVURjguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTRERkM5QTYwRjEzOUExRDAwQUVEMzAyIC8qIEZhc3RBbGxvY0Jhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEFsbG9jQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFNERGQzlBODBGMTM5QjA2MDBBRUQzMDIgLyogVHlwZVRyYWl0cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlVHJhaXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY1QkIyQkM1MDMwRjc3MjEwMUZDRkUxRCAvKiBDb21wbGV0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBsZXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlG
NUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdENv
cmVQcmVmaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlG
NjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CkBAIC0xMDczLDYgKzEwNzYsNyBAQAogCQkJCTA2RDM1
OEEwMERBQUQ5QzQwMDNCMTc0RSAvKiBtYWMgKi8sCiAJCQkJRTE5NTY3OEQwOUU3Q0YxMjAwQjg5
RDEzIC8qIHVuaWNvZGUgKi8sCiAJCQkJOTM4QzRGNjkwQ0EwNkJDNzAwRDkzMTBBIC8qIEFTQ0lJ
Q1R5cGUuaCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRTRERkM5QTgwRjEz
OUIwNjAwQUVEMzAyIC8qIFR5cGVUcmFpdHMuaCAqLywKIAkJCQlFMUE1OTYzNzBERTNFMUMzMDBD
MTdFMzcgLyogQVZMVHJlZS5oICovLAogCQkJCTkzQUE0Rjc3MDk1NzI1MUYwMDg0QjNBNyAvKiBB
bHdheXNJbmxpbmUuaCAqLywKIAkJCQk2NUUyMTdCODA4RTdFRUNDMDAyM0U1RjYgLyogQXNzZXJ0
aW9ucy5jcHAgKi8sCkBAIC0xMTI5LDYgKzExMzMsNyBAQAogCQkJCTY1OTJDMzE2MDk4QjdERTEw
MDAzRDRGNiAvKiBWZWN0b3IuaCAqLywKIAkJCQk2NTkyQzMxNzA5OEI3REUxMDAwM0Q0RjYgLyog
VmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJNjUxRjY0MTIwMzlENUI1RjAwNzgzOTVDIC8qIGR0b2Eu
Y3BwICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEU0REZDOUE2MEYxMzlBMUQw
MEFFRDMwMiAvKiBGYXN0QWxsb2NCYXNlLmggKi8sCiAJCQkJNjUxRjY0MTMwMzlENUI1RjAwNzgz
OTVDIC8qIGR0b2EuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd3RmOwpAQCAtMTY4OSw2ICsxNjk0
LDcgQEAKIAkJCQlCQzE4QzQ3MjBFMTZGNUNEMDBCMzQ0NjAgLyogdWNwaW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3OTFFRTVCMEYxMUQ5MEMwMEFFMUY2OCAvKiBCeXRlQXJyYXkuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3OTFFRjI4MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRERkM5QTkwRjEzOUIwNjAwQUVEMzAyIC8qIFR5cGVU
cmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL1dURi9XVEYudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagkocmV2aXNpb24gMzk2NDIpCisrKyBK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTI1NSw2ICsyNTUsMTAgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8RmlsZQor
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcRmFzdEFsbG9jQmFzZS5oIgorCQkJPgorCQk8L0Zp
bGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxGYXN0TWFsbG9jLmNwcCIK
IAkJCT4KIAkJPC9GaWxlPgpAQCAtNDM1LDYgKzQzOSwxMCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJ
CTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxUeXBlVHJhaXRzLmgiCisJCQk+CisJ
CTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHVuaWNvZGVcVW5p
Y29kZS5oIgogCQkJPgogCQk8L0ZpbGU+Cg==
</data>
<flag name="review"
          id="12550"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27097</attachid>
            <date>2009-01-28 00:51:55 -0800</date>
            <delta_ts>2009-04-06 01:21:12 -0700</delta_ts>
            <desc>Updated FastMalloc patch.</desc>
            <filename>FastMallocPatch.patch</filename>
            <type>text/plain</type>
            <size>62529</size>
            <attacher name="Paul Pedriana">ppedriana</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNDAzMDcpDQorKysgSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDI2IEBADQorMjAwOS0wMS0yOCAgUGF1
bCAgPHBwZWRyaWFuYUBlYS5jb20+DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4NCisNCisgICAgICAgICogd3RmL0Zhc3RBbGxvY0Jhc2UuaDoNCisgICAgICAgIE5ldyBh
ZGRlZCBmaWxlLiBJbXBsZW1lbnRzIGFsbG9jYXRpb24gYmFzZSBjbGFzcy4NCisgICAgICAgICog
d3RmL1R5cGVUcmFpdHMuaDoNCisgICAgICAgIE5ldyBhZGRlZCBmaWxlLiBDZW50cmFsaXplcyB0
eXBlIHRyYWl0cyBmdW5jdGlvbmFsaXR5IGFuZCBhdWdtZW50cyBleGlzdGluZyB0eXBlIHRyYWl0
cyBzdXBwb3J0Lg0KKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOg0KKyAgICAgICAgQ2hhbmdl
ZCB0byBzdXBwb3J0IEZhc3RNYWxsb2MgbWF0Y2ggdmFsaWRhdGlvbi4NCisgICAgICAgICogd3Rm
L0Zhc3RNYWxsb2MuY3BwOg0KKyAgICAgICAgQ2hhbmdlZCB0byBzdXBwb3J0IEZhc3RNYWxsb2Mg
bWF0Y2ggdmFsaWRhdGlvbi4NCisgICAgICAgICogd3RmL0hhc2hUcmFpdHMuaDoNCisgICAgICAg
IENoYW5nZWQgdG8gdXNlIFR5cGVUcmFpdHMuaA0KKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoN
CisgICAgICAgIEFkZGVkIEVOQUJMRV9GQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OOyBkZWZh
dWx0cyB0byAwLg0KKyAgICAgICAgKiBqc2MuY3BwOg0KKyAgICAgICAgV2FzIGFmZmVjdGVkIGJ5
IHRoZSB0eXBlIHRyYWl0cyBjaGFuZ2Ugb2YgSXNJbnRlZ2VyIHRvIGlzX2ludGVncmFsLg0KKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToNCisgICAgICAgIFVwZGF0ZWQgdG8gaW5jbHVkZSBhZGRl
ZCBmaWxlcy4NCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoNCisgICAgICAgIFVwZGF0ZWQgdG8gaW5jbHVkZSBhZGRlZCBmaWxlcy4NCisgICAgICAg
IA0KIDIwMDktMDEtMjYgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUuY29tPg0KIA0KICAg
ICAgICAgQnVpbGQgZml4LiAgDQpJbmRleDogSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0N
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24g
NDAyODkpDQorKysgSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkN
CkBAIC0yNDUsNiArMjQ1LDcgQEANCiAJSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAg
XA0KIAlKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nR3RrLmNwcCBcDQogCUphdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgXA0KKwlKYXZhU2NyaXB0Q29yZS93dGYvVHlw
ZVRyYWl0cy5oIFwNCiAJSmF2YVNjcmlwdENvcmUvd3RmL1VudXNlZFBhcmFtLmggXA0KIAlKYXZh
U2NyaXB0Q29yZS93dGYvVmVjdG9yLmggXA0KIAlKYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9yVHJh
aXRzLmggXA0KQEAgLTQxNyw2ICs0MTgsNyBAQA0KIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ry
YWNpbmcuaCBcDQogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAgXA0KIAlKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCBcDQorCUphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0
QWxsb2NCYXNlLmggXA0KIAlKYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAgXA0KIAlK
YXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oIFwNCiAJSmF2YVNjcmlwdENvcmUvd3RmL01h
bGxvY1pvbmVTdXBwb3J0LmggXA0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2pzYy5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiA0MDI4OSkNCisrKyBK
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTUzLDcgKzE1Myw3IEBA
DQogICAgIEdsb2JhbE9iamVjdChjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cyk7DQog
ICAgIHZpcnR1YWwgVVN0cmluZyBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiZ2xvYmFsIjsg
fQ0KIH07DQotQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwg
V1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3RfZmFsc2UpOw0KK0NPTVBJTEVfQVNTRVJUKCFpc19p
bnRlZ3JhbDxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9HbG9iYWxPYmplY3Rf
ZmFsc2UpOw0KIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoR2xvYmFsT2JqZWN0KTsNCiANCiBH
bG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50
cykNCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVHlwZVRyYWl0cy5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL1R5cGVUcmFpdHMuaAkocmV2aXNpb24gMCkNCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvVHlwZVRyYWl0cy5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSwzNDUg
QEANCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuDQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoN
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlDQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8NCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLg0KKyAqDQorICovDQorDQorI2lmbmRlZiBXVEZfVHlwZVRyYWl0c19oDQor
I2RlZmluZSBXVEZfVHlwZVRyYWl0c19oDQorDQorDQorLy8gV2UgZGVmaW5lIHR5cGUgdHJhaXRz
IHRoYXQgYWxsb3cgdXMgdG8gb3B0aW1pemUgdGVtcGxhdGVkIGFycmF5IG5ldy9kZWxldGUuDQor
Ly8gVGhlc2UgdHlwZSB0cmFpdHMgbWF0Y2ggdGhlIEMrKzB4IHdvcmtpbmcgc3RhbmRhcmQgZGVm
aW5lZCBpbiBzZWN0aW9uIDIwLjQuMi4NCisvLyBUaGUgdHlwZXMgKGludGVncmFsX2NvbnN0YW50
LCB0cnVlX3R5cGUsIGV0Yy4pIGRlZmluZWQgaGVyZSBhcmUgYmFzZWQgb24gDQorLy8gdGhlIEMr
KzB4IHR5cGVfdHJhaXRzIHR5cGVzIGFuZCB1c2UgdGhlIHNhbWUgbmFtaW5nIGFuZCBjb252ZW50
aW9ucy4gDQorLy8gUmVjZW50IHZlcnNpb25zIG9mIHNvbWUgY29tcGlsZXJzIGFuZCBzdGFuZGFy
ZCBsaWJyYXJpZXMgaGF2ZSBzdXBwb3J0IGZvciB0eXBlIHRyYWl0cy4NCisNCisjaWYgKGRlZmlu
ZWQoX19HTElCQ1hYX18pICYmIChfX0dMSUJDWFhfXyA+PSAyMDA3MDcyNCkpIHx8IChkZWZpbmVk
KF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTYwMCkpDQorDQorLy8gR0NDJ3MgbGlic3RkYysr
IDIwMDcwNzI0IGFuZCBsYXRlciBhbmQgVkMxMCAoVlMyMDEwKSBhbmQgbGF0ZXIgc3VwcG9ydCBD
KysgVFIxIHR5cGVfdHJhaXRzLg0KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4NCisNCituYW1lc3Bh
Y2UgV1RGIHsNCisgICAgdXNpbmcgc3RkOjppc19pbnRlZ3JhbDsNCisgICAgdXNpbmcgc3RkOjpo
YXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjsNCisgICAgdXNpbmcgc3RkOjpoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yOw0KK30NCisNCisjZWxzZQ0KKw0KK25hbWVzcGFjZSBXVEYgew0KKw0KKyAgICAvLyBU
aGlzIGNvbXBpbGVyIGRvZXNuJ3QgcHJvdmlkZSB0eXBlIHRyYWl0cywgc28gd2UgcHJvdmlkZSBh
IHNldC4NCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGlzX2ludGVncmFsIHsgc3Rh
dGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsgfTsNCisNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgaXNfaW50ZWdyYWw8Ym9vbD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07
DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IGJvb2w+IHsgc3RhdGlj
IGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19p
bnRlZ3JhbDx2b2xhdGlsZSBib29sPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsg
fTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUgYm9v
bD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorDQorICAgIHRlbXBsYXRl
PD4gc3RydWN0IGlzX2ludGVncmFsPGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0
cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCBjaGFyPiB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgY2hhcj4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9
IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IHZvbGF0
aWxlIGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxzaWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFs
PGNvbnN0IHNpZ25lZCBjaGFyPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsN
CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgc2lnbmVkIGNoYXI+
IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB2b2xhdGlsZSBzaWduZWQgY2hhcj4geyBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorDQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2lu
dGVncmFsPHVuc2lnbmVkIGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9
Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB1bnNpZ25lZCBjaGFy
PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgdW5zaWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFs
PGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGNoYXI+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUg
PSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxzaG9ydD4g
eyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IGlzX2ludGVncmFsPGNvbnN0IHNob3J0PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0g
dHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgc2hv
cnQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB2b2xhdGlsZSBzaG9ydD4geyBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHRydWU7IH07DQorDQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVn
cmFsPHVuc2lnbmVkIHNob3J0PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsN
CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3QgdW5zaWduZWQgc2hvcnQ+
IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBpc19pbnRlZ3JhbDx2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydD4geyBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFs
PGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVl
ID0gdHJ1ZTsgfTsNCisNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8aW50PiB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgaXNfaW50ZWdyYWw8Y29uc3QgaW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1
ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9sYXRpbGUgaW50PiB7
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgaXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUgaW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZh
bHVlID0gdHJ1ZTsgfTsNCisNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dW5z
aWduZWQgaW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3QgdW5zaWduZWQgaW50PiB7IHN0YXRpYyBj
b25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50
ZWdyYWw8dm9sYXRpbGUgdW5zaWduZWQgaW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0g
dHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRp
bGUgdW5zaWduZWQgaW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisN
CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8bG9uZz4geyBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFs
PGNvbnN0IGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx2b2xhdGlsZSBsb25nPiB7IHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdy
YWw8Y29uc3Qgdm9sYXRpbGUgbG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7
IH07DQorDQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPHVuc2lnbmVkIGxvbmc+
IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB1bnNpZ25lZCBsb25nPiB7IHN0YXRpYyBjb25zdCBib29s
IHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8dm9s
YXRpbGUgdW5zaWduZWQgbG9uZz4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07
DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IHZvbGF0aWxlIHVuc2ln
bmVkIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJv
b2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxj
b25zdCBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx2b2xhdGlsZSBsb25nIGxvbmc+IHsgc3Rh
dGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBp
c19pbnRlZ3JhbDxjb25zdCB2b2xhdGlsZSBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wg
dmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDx1
bnNpZ25lZCBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0K
KyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19pbnRlZ3JhbDxjb25zdCB1bnNpZ25lZCBsb25nIGxv
bmc+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBpc19pbnRlZ3JhbDx2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IHsgc3RhdGlj
IGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19p
bnRlZ3JhbDxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0
IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKw0KKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVm
aW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNf
aW50ZWdyYWw8d2NoYXJfdD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IGlzX2ludGVncmFsPGNvbnN0IHdjaGFyX3Q+IHsgc3RhdGlj
IGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19p
bnRlZ3JhbDx2b2xhdGlsZSB3Y2hhcl90PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1
ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfaW50ZWdyYWw8Y29uc3Qgdm9sYXRpbGUg
d2NoYXJfdD4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorI2VuZGlmDQor
DQorDQorICAgIC8vIFRoaXMgY29tcGlsZXIgZG9lc24ndCBwcm92aWRlIHR5cGUgdHJhaXRzLCBz
byB3ZSBwcm92aWRlIGEgYmFzaWMgaGFzX3RyaXZpYWxfY29uc3RydWN0b3INCisgICAgLy8gYW5k
IGhhc190cml2aWFsX2Rlc3RydWN0b3IgZGVmaW5pdGlvbi4gVGhlIGRlZmluaXRpb25zIGhlcmUg
aW5jbHVkZSBtb3N0IGJ1aWx0LWluIA0KKyAgICAvLyBzY2FsYXIgdHlwZXMgYnV0IGRvIG5vdCBp
bmNsdWRlIFBPRCBzdHJ1Y3RzIGFuZCBjbGFzc2VzLiBGb3IgdGhlIGludGVuZGVkIHB1cnBvc2Vz
IG9mIA0KKyAgICAvLyB0eXBlX3RyYWl0cyB0aGlzIHJlc3VsdHMgY29ycmVjdCBidXQgcG90ZW50
aWFsbHkgbGVzcyBlZmZpY2llbnQgY29kZS4NCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFQg
dj4NCisgICAgc3RydWN0IGludGVncmFsX2NvbnN0YW50IHsNCisgICAgICAgIHN0YXRpYyBjb25z
dCBUIHZhbHVlID0gdjsNCisgICAgICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOw0KKyAgICAgICAg
dHlwZWRlZiBpbnRlZ3JhbF9jb25zdGFudDxULCB2PiB0eXBlOw0KKyAgICB9Ow0KKw0KKyAgICB0
eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+ICB0cnVlX3R5cGU7DQorICAgIHR5
cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+IGZhbHNlX3R5cGU7DQorDQorI2lm
IGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxNDAwKQ0KKyAgICAvLyBWQzggKFZT
MjAwNSkgYW5kIGxhdGVyIGhhdmUgYnVpbHQtaW4gY29tcGlsZXIgc3VwcG9ydCBmb3IgaGFzX3Ry
aXZpYWxfY29uc3RydWN0b3IgLyBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yLCANCisgICAgLy8gYnV0
IGZvciBzb21lIHVuZXhwbGFpbmVkIHJlYXNvbiBpdCBkb2Vzbid0IHdvcmsgb24gYnVpbHQtaW4g
dHlwZXMuDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29u
c3RydWN0b3IgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19oYXNfdHJpdmlhbF9j
b25zdHJ1Y3RvcihUKT57IH07DQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfZGVzdHJ1Y3RvciA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBfX2hh
c190cml2aWFsX2Rlc3RydWN0b3IoVCk+eyB9Ow0KKyNlbHNlDQorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3IgOiBwdWJsaWMgZmFsc2VfdHlw
ZXsgfTsNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yIDogcHVibGljIGZhbHNlX3R5cGV7IH07DQorI2VuZGlmDQorDQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8VCo+IDogcHVibGlj
IHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBoYXNfdHJp
dmlhbF9kZXN0cnVjdG9yPFQqPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxmbG9hdD4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0
b3I8Y29uc3QgZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHZvbGF0aWxlIGZsb2F0PiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1
Y3Rvcjxjb25zdCB2b2xhdGlsZSBmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8ZG91YmxlPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9j
b25zdHJ1Y3Rvcjxjb25zdCBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHZvbGF0aWxlIGRvdWJsZT4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxs
b25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgbG9uZyBkb3VibGU+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVj
dG9yPHZvbGF0aWxlIGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBs
b25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0
b3I8Y29uc3QgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQg
Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJs
aWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29uc3RydWN0b3I8dW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAg
dGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVk
IHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3Ry
dWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsg
fTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHVu
c2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1
Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAg
dGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxl
IHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3Ry
dWN0b3I8Y29uc3QgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dm9sYXRpbGUgdW5zaWdu
ZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3I8dW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB1
bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcg
bG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyBsb25nPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJp
dmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgc2lnbmVk
IGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhh
c190cml2aWFsX2NvbnN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rv
cjxjb25zdCB2b2xhdGlsZSBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8c2lnbmVkIHNo
b3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCBzaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlw
ZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9yPHZv
bGF0aWxlIHNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVk
IHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25z
dCBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQgaW50PiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25z
dHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcjxzaWdu
ZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVf
dHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2NvbnN0cnVjdG9y
PHZvbGF0aWxlIHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWdu
ZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8c2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0
b3I8Y29uc3Qgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVk
IGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9u
Zz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfY29uc3RydWN0b3I8Ym9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgYm9vbD4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
Y29uc3RydWN0b3I8dm9sYXRpbGUgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUg
Ym9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3QgY2hhcj4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZp
YWxfY29uc3RydWN0b3I8dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRp
bGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICAjaWYgIWRlZmluZWQoX01T
Q19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpDQorICAgICAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfY29uc3RydWN0b3I8d2NoYXJfdD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Nv
bnN0cnVjdG9yPGNvbnN0IHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvcjx2b2xhdGlsZSB3Y2hh
cl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgd2NoYXJfdD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICAjZW5kaWYNCisNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2Rlc3RydWN0b3I8ZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgZmxvYXQ+
IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2
aWFsX2Rlc3RydWN0b3I8dm9sYXRpbGUgZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgdm9sYXRp
bGUgZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8ZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGRv
dWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFz
X3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsg
fTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qg
dm9sYXRpbGUgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPGNvbnN0IGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZvbGF0aWxlIGxvbmcgZG91Ymxl
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJp
dmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgY2hhcj4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQgc2hvcnQ+IDog
cHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2Rlc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsN
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dm9sYXRpbGUg
dW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgc2hv
cnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhh
c190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHVu
c2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBpbnQ+IDogcHVibGlj
IHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3Ry
dWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHVuc2ln
bmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rv
cjx2b2xhdGlsZSB1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVu
c2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dW5zaWduZWQgbG9uZyBsb25nPiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1
bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQg
bG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNv
bnN0IHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9k
ZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNp
Z25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQgc2hvcnQ+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0
b3I8dm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNp
Z25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNv
bnN0IHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIGludD4gOiBwdWJs
aWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25l
ZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZv
bGF0aWxlIHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBs
b25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPHNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlw
ZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29u
c3Qgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQgbG9uZyBs
b25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBsb25nIGxvbmc+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFs
X2Rlc3RydWN0b3I8Ym9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCBib29sPiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9y
PHZvbGF0aWxlIGJvb2w+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgYm9vbD4gOiBwdWJs
aWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3RvcjxjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IGNoYXI+IDogcHVibGljIHRydWVf
dHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3I8
dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBjaGFyPiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07DQorDQorICAgICNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5l
ZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkNCisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yPHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisg
ICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPGNvbnN0IHdj
aGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVf
dHlwZXsgfTsNCisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPGNvbnN0IHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAg
I2VuZGlmDQorDQorfSAvLyBuYW1lc3BhY2UgV1RGDQorDQorDQorI2VuZGlmICAvLyBfX0dMSUJD
WFhfXywgZXRjLg0KKw0KKw0KK25hbWVzcGFjZSBXVEYgew0KKw0KKyAgICBDT01QSUxFX0FTU0VS
VChpc19pbnRlZ3JhbDxib29sPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfYm9vbF90cnVlKTsNCisg
ICAgQ09NUElMRV9BU1NFUlQoaXNfaW50ZWdyYWw8Y29uc3QgYm9vbD46OnZhbHVlLCBXVEZfSXNJ
bnRlZ2VyX2Jvb2xfdHJ1ZSk7DQorICAgIENPTVBJTEVfQVNTRVJUKGlzX2ludGVncmFsPHZvbGF0
aWxlIGJvb2w+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9ib29sX3RydWUpOw0KKyAgICBDT01QSUxF
X0FTU0VSVChpc19pbnRlZ3JhbDxjb25zdCB2b2xhdGlsZSBib29sPjo6dmFsdWUsIFdURl9Jc0lu
dGVnZXJfYm9vbF90cnVlKTsNCisgICAgQ09NUElMRV9BU1NFUlQoaXNfaW50ZWdyYWw8Y2hhcj46
OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2NoYXJfdHJ1ZSk7DQorICAgIENPTVBJTEVfQVNTRVJUKGlz
X2ludGVncmFsPHNpZ25lZCBjaGFyPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfc2lnbmVkX2NoYXJf
dHJ1ZSk7DQorICAgIENPTVBJTEVfQVNTRVJUKGlzX2ludGVncmFsPHVuc2lnbmVkIGNoYXI+Ojp2
YWx1ZSwgV1RGX0lzSW50ZWdlcl91bnNpZ25lZF9jaGFyX3RydWUpOw0KKyAgICBDT01QSUxFX0FT
U0VSVChpc19pbnRlZ3JhbDxzaG9ydD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Nob3J0X3RydWUp
Ow0KKyAgICBDT01QSUxFX0FTU0VSVChpc19pbnRlZ3JhbDx1bnNpZ25lZCBzaG9ydD46OnZhbHVl
LCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX3Nob3J0X3RydWUpOw0KKyAgICBDT01QSUxFX0FTU0VS
VChpc19pbnRlZ3JhbDxpbnQ+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9pbnRfdHJ1ZSk7DQorICAg
IENPTVBJTEVfQVNTRVJUKGlzX2ludGVncmFsPHVuc2lnbmVkIGludD46OnZhbHVlLCBXVEZfSXNJ
bnRlZ2VyX3Vuc2lnbmVkX2ludF90cnVlKTsNCisgICAgQ09NUElMRV9BU1NFUlQoaXNfaW50ZWdy
YWw8bG9uZz46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2xvbmdfdHJ1ZSk7DQorICAgIENPTVBJTEVf
QVNTRVJUKGlzX2ludGVncmFsPHVuc2lnbmVkIGxvbmc+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl91
bnNpZ25lZF9sb25nX3RydWUpOw0KKyAgICBDT01QSUxFX0FTU0VSVChpc19pbnRlZ3JhbDxsb25n
IGxvbmc+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9sb25nX2xvbmdfdHJ1ZSk7DQorICAgIENPTVBJ
TEVfQVNTRVJUKGlzX2ludGVncmFsPHVuc2lnbmVkIGxvbmcgbG9uZz46OnZhbHVlLCBXVEZfSXNJ
bnRlZ2VyX3Vuc2lnbmVkX2xvbmdfbG9uZ190cnVlKTsNCisNCisjaWYgIWRlZmluZWQoX01TQ19W
RVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpDQorICAgIENPTVBJTEVfQVNT
RVJUKGlzX2ludGVncmFsPHdjaGFyX3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl93Y2hhcl90X3Ry
dWUpOw0KKyNlbmRpZg0KKw0KKyAgICBDT01QSUxFX0FTU0VSVCghaXNfaW50ZWdyYWw8Y2hhcio+
Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9jaGFyX3BvaW50ZXJfZmFsc2UpOw0KKyAgICBDT01QSUxF
X0FTU0VSVCghaXNfaW50ZWdyYWw8Y29uc3QgY2hhcio+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9j
b25zdF9jaGFyX3BvaW50ZXJfZmFsc2UpOw0KKyAgICBDT01QSUxFX0FTU0VSVCghaXNfaW50ZWdy
YWw8dm9sYXRpbGUgY2hhcio+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl92b2xhdGlsZV9jaGFyX3Bv
aW50ZXJfX2ZhbHNlKTsNCisgICAgQ09NUElMRV9BU1NFUlQoIWlzX2ludGVncmFsPGRvdWJsZT46
OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2RvdWJsZV9mYWxzZSk7DQorICAgIENPTVBJTEVfQVNTRVJU
KCFpc19pbnRlZ3JhbDxmbG9hdD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2Zsb2F0X2ZhbHNlKTsN
CisNCit9IC8vIG5hbWVzcGFjZSBXVEYNCisNCisjZW5kaWYgLy8gV1RGX1R5cGVUcmFpdHNfaA0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCShyZXZpc2lvbiA0MDI4OSkNCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNTYsNiArNTYs
OTUgQEANCiAgICAgfTsNCiAgICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRp
c3RpY3MoKTsNCiANCisgICAgLy8gVGhpcyBkZWZpbmVzIGEgdHlwZSB3aGljaCBob2xkcyBhbiB1
bnNpZ25lZCBpbnRlZ2VyIGFuZCBpcyB0aGUgc2FtZSANCisgICAgLy8gc2l6ZSBhcyB0aGUgbWlu
aW1hbGx5IGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb24uDQorICAgIHR5cGVkZWYgdW5zaWduZWQg
bG9uZyBsb25nIEFsbG9jQWxpZ25tZW50SW50ZWdlcjsNCisNCisgICAgbmFtZXNwYWNlIEludGVy
bmFsIHsNCisgICAgICAgIGVudW0gQWxsb2NUeXBlIHsgICAgICAgICAgICAgICAgICAgIC8vIFN0
YXJ0IHdpdGggYW4gdW51c3VhbCBudW1iZXIgaW5zdGVhZCBvZiB6ZXJvLCBiZWNhdXNlIHplcm8g
aXMgY29tbW9uLg0KKyAgICAgICAgICAgIEFsbG9jVHlwZU1hbGxvYyA9IDB4Mzc1ZDY3NTAsICAg
Ly8gRW5jb21wYXNzZXMgZmFzdE1hbGxvYywgZmFzdFplcm9lZE1hbGxvYywgZmFzdENhbGxvYywg
ZmFzdFJlYWxsb2MuDQorICAgICAgICAgICAgQWxsb2NUeXBlQ2xhc3NOZXcsICAgICAgICAgICAg
ICAvLyBFbmNvbXBhc3NlcyBjbGFzcyBvcGVyYXRvciBuZXcgZnJvbSBGYXN0QWxsb2NCYXNlLiAN
CisgICAgICAgICAgICBBbGxvY1R5cGVDbGFzc05ld0FycmF5LCAgICAgICAgIC8vIEVuY29tcGFz
c2VzIGNsYXNzIG9wZXJhdG9yIG5ld1tdIGZyb20gRmFzdEFsbG9jQmFzZS4gDQorICAgICAgICAg
ICAgQWxsb2NUeXBlRmFzdE5ldywgICAgICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBmYXN0TmV3
Lg0KKyAgICAgICAgICAgIEFsbG9jVHlwZUZhc3ROZXdBcnJheSwgICAgICAgICAgLy8gRW5jb21w
YXNzZXMgZmFzdE5ld0FycmF5Lg0KKyAgICAgICAgICAgIEFsbG9jVHlwZU5ldywgICAgICAgICAg
ICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ldy4NCisgICAgICAgICAg
ICBBbGxvY1R5cGVOZXdBcnJheSAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGdsb2JhbCBv
cGVyYXRvciBuZXdbXS4NCisgICAgICAgIH07DQorICAgIH0NCisNCisjaWYgRU5BQkxFKEZBU1Rf
TUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorDQorICAgIC8vIE1hbGxvYyB2YWxpZGF0aW9uIGlz
IGEgc2NoZW1lIHdoZXJlYnkgYSB0YWcgaXMgYXR0YWNoZWQgdG8gYW4gDQorICAgIC8vIGFsbG9j
YXRpb24gd2hpY2ggaWRlbnRpZmllcyBob3cgaXQgd2FzIG9yaWdpbmFsbHkgYWxsb2NhdGVkLiAN
CisgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZyZWVpbmcgb3BlcmF0
aW9uIG1hdGNoZXMgdGhlIA0KKyAgICAvLyBhbGxvY2F0aW9uIG9wZXJhdGlvbi4gSWYgbWVtb3J5
IGlzIGFsbG9jYXRlZCB3aXRoIG9wZXJhdG9yIG5ld1tdIA0KKyAgICAvLyBidXQgZnJlZWQgd2l0
aCBmcmVlIG9yIGRlbGV0ZSwgdGhpcyBzeXN0ZW0gd291bGQgZGV0ZWN0IHRoYXQuIA0KKyAgICAv
LyBJbiB0aGUgaW1wbGVtZW50YXRpb24gaGVyZSwgdGhlIHRhZyBpcyBhbiBpbnRlZ2VyIHByZXBl
bmRlZCB0byANCisgICAgLy8gdGhlIGFsbG9jYXRpb24gbWVtb3J5IHdoaWNoIGlzIGFzc2lnbmVk
IG9uZSBvZiB0aGUgQWxsb2NUeXBlDQorICAgIC8vIGVudW1lcmF0aW9uIHZhbHVlcy4gQW4gYWx0
ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyANCisgICAgLy8gc2NoZW1lIGNvdWxkIHN0
b3JlIHRoZSB0YWcgc29tZXdoZXJlIGVsc2Ugb3IgaWdub3JlIGl0LiANCisgICAgLy8gVXNlcnMg
b2YgRmFzdE1hbGxvYyBkb24ndCBuZWVkIHRvIGtub3cgb3IgY2FyZSBob3cgdGhpcyB0YWdnaW5n
IA0KKyAgICAvLyBpcyBpbXBsZW1lbnRlZC4gDQorDQorICAgIG5hbWVzcGFjZSBJbnRlcm5hbCB7
DQorDQorICAgICAgICAvLyBSZXR1cm4gdGhlIEFsbG9jVHlwZSB0YWcgYXNzb2NpYXRlZCB3aXRo
IHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4NCisgICAgICAgIGlubGluZSBBbGxvY1R5cGUgZmFzdE1h
bGxvY01hdGNoVmFsaWRhdGlvblR5cGUoY29uc3Qgdm9pZCogcCkNCisgICAgICAgIHsNCisgICAg
ICAgICAgICBjb25zdCBBbGxvY0FsaWdubWVudEludGVnZXIqIHR5cGUgPSBzdGF0aWNfY2FzdDxj
b25zdCBBbGxvY0FsaWdubWVudEludGVnZXIqPihwKSAtIDE7DQorICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEFsbG9jVHlwZT4oKnR5cGUpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAg
Ly8gUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBBbGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQgd2l0
aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuDQorICAgICAgICBpbmxpbmUgQWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyKiBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUodm9pZCogcCkNCisgICAgICAg
IHsNCisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBbGxvY0FsaWdubWVudElu
dGVnZXIqPihzdGF0aWNfY2FzdDxjaGFyKj4ocCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRl
Z2VyKSk7DQorICAgICAgICB9DQorDQorICAgICAgICAvLyBTZXQgdGhlIEFsbG9jVHlwZSB0YWcg
dG8gYmUgYXNzb2NpYWdlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4NCisgICAgICAgIGlu
bGluZSB2b2lkIHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHZvaWQqIHAsIEFsbG9j
VHlwZSBhbGxvY1R5cGUpDQorICAgICAgICB7DQorICAgICAgICAgICAgQWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgLSAx
Ow0KKyAgICAgICAgICAgICp0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2Vy
PihhbGxvY1R5cGUpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8gSGFuZGxlIGEgZGV0ZWN0
ZWQgYWxsb2MvZnJlZSBtaXNtYXRjaC4gQnkgZGVmYXVsdCB0aGlzIGNhbGxzIENSQVNIKCkuDQor
ICAgICAgICB2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKiBwKTsNCisNCisgICAgfSAv
LyBuYW1lc3BhY2UgSW50ZXJuYWwNCisNCisgICAgLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBm
dW5jdGlvbiB3aGljaCBpcyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4NCisgICAgaW5s
aW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2Modm9pZCogcCwgSW50ZXJuYWw6
OkFsbG9jVHlwZSBhbGxvY1R5cGUpDQorICAgIHsNCisgICAgICAgIGlmICghcCkNCisgICAgICAg
ICAgICByZXR1cm47DQorDQorICAgICAgICBJbnRlcm5hbDo6c2V0RmFzdE1hbGxvY01hdGNoVmFs
aWRhdGlvblR5cGUocCwgYWxsb2NUeXBlKTsNCisgICAgfQ0KKw0KKyAgICAvLyBUaGlzIGlzIGEg
aGlnaGVyIGxldmVsIGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2luZyBj
b2RlLg0KKyAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCog
cCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUpDQorICAgIHsNCisgICAgICAgIGlmICgh
cCkNCisgICAgICAgICAgICByZXR1cm47DQorDQorICAgICAgICBpZiAoSW50ZXJuYWw6OmZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHApICE9IGFsbG9jVHlwZSkNCisgICAgICAgICAgICBJ
bnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOw0KKyAgICAgICAgSW50ZXJuYWw6OnNl
dEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIEludGVybmFsOjpBbGxvY1R5cGVNYWxs
b2MpOyAgLy8gU2V0IGl0IHRvIHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4N
CisgICAgfQ0KKw0KKyNlbHNlDQorDQorICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZh
bGlkYXRlTWFsbG9jKHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQ0KKyAgICB7DQorICAgIH0N
CisNCisgICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHZvaWQqLCBJ
bnRlcm5hbDo6QWxsb2NUeXBlKQ0KKyAgICB7DQorICAgIH0NCisNCisjZW5kaWYNCisNCiB9IC8v
IG5hbWVzcGFjZSBXVEYNCiANCiB1c2luZyBXVEY6OmZhc3RNYWxsb2M7DQpJbmRleDogSmF2YVNj
cmlwdENvcmUvd3RmL0Zhc3RBbGxvY0Jhc2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL3d0Zi9GYXN0QWxsb2NCYXNlLmgJKHJldmlzaW9uIDApDQorKysgSmF2YVNjcmlwdENvcmUv
d3RmL0Zhc3RBbGxvY0Jhc2UuaAkocmV2aXNpb24gMCkNCkBAIC0wLDAgKzEsNDQ5IEBADQorLy8g
LSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotDQorDQorLyoNCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggUGF1bCBQZWRyaWFuYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyAqIGFyZSBtZXQ6DQorICoNCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQNCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uDQorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YNCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZA0KKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uDQorICoNCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQ0KKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQNCisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQ0KKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTDQorICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOw0KKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORA0KKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GDQorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4NCisgKi8NCisNCisjaWZuZGVmIFdURl9GYXN0QWxsb2NCYXNlX2gNCisjZGVmaW5lIFdU
Rl9GYXN0QWxsb2NCYXNlX2gNCisNCisvLyBQcm92aWRlcyBjdXN0b21pemFibGUgb3ZlcnJpZGVz
IG9mIGZhc3RNYWxsb2MvZmFzdEZyZWUgYW5kIG9wZXJhdG9yIG5ldy9kZWxldGUNCisvLw0KKy8v
IFByb3ZpZGVkIGZ1bmN0aW9uYWxpdHk6DQorLy8gICAgbmFtZXNwYWNlIFdURiB7IA0KKy8vICAg
ICAgICBjbGFzcyBGYXN0QWxsb2NCYXNlOw0KKy8vDQorLy8gICAgICAgIFQqICAgIGZhc3ROZXc8
VD4oKTsNCisvLyAgICAgICAgVCogICAgZmFzdE5ldzxUPihhcmcpOw0KKy8vICAgICAgICBUKiAg
ICBmYXN0TmV3PFQ+KGFyZywgYXJnKTsNCisvLyAgICAgICAgVCogICAgZmFzdE5ld0FycmF5PFQ+
KGNvdW50KTsNCisvLyAgICAgICAgdm9pZCAgZmFzdERlbGV0ZShUKiBwKTsNCisvLyAgICAgICAg
dm9pZCAgZmFzdERlbGV0ZUFycmF5KFQqIHApOw0KKy8vICAgICAgICB2b2lkICBmYXN0Tm9uTnVs
bERlbGV0ZShUKiBwKTsNCisvLyAgICAgICAgdm9pZCAgZmFzdE5vbk51bGxEZWxldGVBcnJheShU
KiBwKTsNCisvLyAgICB9DQorLy8NCisvLyBGYXN0RGVsZXRlIGFzc3VtZXMgdGhhdCB0aGUgdW5k
ZXJseWluZyANCisvLw0KKy8vIEV4YW1wbGUgdXNhZ2U6DQorLy8gICAgY2xhc3MgV2lkZ2V0IDog
cHVibGljIEZhc3RBbGxvY0Jhc2UgeyAuLi4gfTsNCisvLw0KKy8vICAgIGNoYXIqIGNoYXJQdHIg
PSBmYXN0TmV3PGNoYXI+KCk7DQorLy8gICAgZmFzdERlbGV0ZShjaGFyUHRyKTsNCisvLw0KKy8v
ICAgIGNoYXIqIGNoYXJBcnJheVB0ciA9IGZhc3ROZXdBcnJheTxjaGFyPigzNyk7DQorLy8gICAg
ZmFzdERlbGV0ZUFycmF5KGNoYXJBcnJheVB0cik7DQorLy8NCisvLyAgICB2b2lkKiogdm9pZFB0
clB0ciA9IGZhc3ROZXc8dm9pZCo+KCk7DQorLy8gICAgZmFzdERlbGV0ZSh2b2lkUHRyUHRyKTsN
CisvLw0KKy8vICAgIHZvaWQqKiB2b2lkUHRyQXJyYXlQdHIgPSBmYXN0TmV3QXJyYXk8dm9pZCo+
KDM3KTsNCisvLyAgICBmYXN0RGVsZXRlQXJyYXkodm9pZFB0ckFycmF5UHRyKTsNCisvLw0KKy8v
ICAgIFBPRCogcG9kUHRyID0gZmFzdE5ldzxQT0Q+KCk7DQorLy8gICAgZmFzdERlbGV0ZShwb2RQ
dHIpOw0KKy8vDQorLy8gICAgUE9EKiBwb2RBcnJheVB0ciA9IGZhc3ROZXdBcnJheTxQT0Q+KDM3
KTsNCisvLyAgICBmYXN0RGVsZXRlQXJyYXkocG9kQXJyYXlQdHIpOw0KKy8vDQorLy8gICAgT2Jq
ZWN0KiBvYmplY3RQdHIgPSBmYXN0TmV3PE9iamVjdD4oKTsNCisvLyAgICBmYXN0RGVsZXRlKG9i
amVjdFB0cik7DQorLy8NCisvLyAgICBPYmplY3QqIG9iamVjdEFycmF5UHRyID0gZmFzdE5ld0Fy
cmF5PE9iamVjdD4oMzcpOw0KKy8vICAgIGZhc3REZWxldGVBcnJheShvYmplY3RBcnJheVB0cik7
DQorLy8NCisNCisjaW5jbHVkZSA8bmV3Pg0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisjaW5jbHVk
ZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPg0KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPg0KKyNpbmNsdWRlIDx3dGYvVHlw
ZVRyYWl0cy5oPg0KKw0KKw0KK25hbWVzcGFjZSBXVEYgew0KKw0KKyAgICBjbGFzcyBGYXN0QWxs
b2NCYXNlIHsNCisgICAgcHVibGljOg0KKyAgICAgICAgLy8gUGxhY2VtZW50IG9wZXJhdG9yIG5l
dy4NCisgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0NCisgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfQ0KKw0KKyAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKQ0K
KyAgICAgICAgew0KKyAgICAgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemUpOw0KKyNp
ZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgICAgICAgICBpZiAo
cCkNCisgICAgICAgICAgICAgICAgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCwg
QWxsb2NUeXBlQ2xhc3NOZXcpOw0KKyNlbmRpZg0KKyAgICAgICAgICAgIHJldHVybiBwOw0KKyAg
ICAgICAgfQ0KKw0KKyAgICAgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkNCisgICAg
ICAgIHsNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgICAg
ICAgICAgaWYgKHApIHsNCisgICAgICAgICAgICAgICAgaWYgKGdldEZhc3RNYWxsb2NNYXRjaFZh
bGlkYXRpb25UeXBlKHApICE9IEFsbG9jVHlwZUNsYXNzTmV3KQ0KKyAgICAgICAgICAgICAgICAg
ICAgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOw0KKyAgICAgICAgICAgICAgICBzZXRGYXN0TWFs
bG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVNYWxsb2MpOyAgLy8gU2V0IGl0IHRv
IHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4NCisgICAgICAgICAgICB9DQor
I2VuZGlmDQorICAgICAgICAgICAgZmFzdEZyZWUocCk7ICAvLyBXZSBkb24ndCBuZWVkIHRvIGNo
ZWNrIGZvciBhIG51bGwgcG9pbnRlcjsgdGhlIGNvbXBpbGVyIGRvZXMgdGhpcy4NCisgICAgICAg
IH0NCisNCisgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKQ0KKyAgICAg
ICAgew0KKyAgICAgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemUpOw0KKw0KKyNpZiBF
TkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgICAgICAgICBpZiAocCkN
CisgICAgICAgICAgICAgICAgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCwgQWxs
b2NUeXBlQ2xhc3NOZXdBcnJheSk7DQorI2VuZGlmDQorICAgICAgICAgICAgcmV0dXJuIHA7DQor
ICAgICAgICB9DQorDQorICAgICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApDQor
ICAgICAgICB7DQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAg
ICAgICAgICAgIGlmIChwKSB7DQorICAgICAgICAgICAgICAgIGlmIChnZXRGYXN0TWFsbG9jTWF0
Y2hWYWxpZGF0aW9uVHlwZShwKSAhPSBBbGxvY1R5cGVDbGFzc05ld0FycmF5KQ0KKyAgICAgICAg
ICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOw0KKyAgICAgICAgICAgICAgICBz
ZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVNYWxsb2MpOyAgLy8g
U2V0IGl0IHRvIHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4NCisgICAgICAg
ICAgICB9DQorI2VuZGlmDQorICAgICAgICAgICAgZmFzdEZyZWUocCk7ICAvLyBXZSBkb24ndCBu
ZWVkIHRvIGNoZWNrIGZvciBhIG51bGwgcG9pbnRlcjsgdGhlIGNvbXBpbGVyIGRvZXMgdGhpcy4N
CisgICAgICAgIH0NCisgICAgfTsNCisNCisNCisgICAgLy8gZmFzdE5ldyAvIGZhc3REZWxldGUN
CisNCisgICAgLyogRGlzYWJsZWQgdW50aWwgaXQncyBrbm93biB0aGF0IHdlIHdhbnQgdG8gYWN0
dWFsbHkgZG8gdGhpcy4NCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZzE+
DQorICAgIGlubGluZSBUKiBmYXN0TmV3KEFyZzEgYXJnMSkNCisgICAgew0KKyAgICAgICAgdm9p
ZCogcCA9IGZhc3RNYWxsb2Moc2l6ZW9mKFQpKTsNCisNCisgICAgICAgIGlmIChwKSB7DQorI2lm
IEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICAgICAgICAgIGlmIChw
KQ0KKyAgICAgICAgICAgICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBB
bGxvY1R5cGVGYXN0TmV3KTsNCisjZW5kaWYNCisgICAgICAgICAgICByZXR1cm4gOjpuZXcocCkg
VChhcmcxKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorICAg
ICovDQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAgICBpbmxpbmUgVCogZmFzdE5l
dygpDQorICAgIHsNCisgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihUKSk7DQor
DQorICAgICAgICBpZiAocCkgew0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURB
VElPTikNCisgICAgICAgICAgICBpZiAocCkNCisgICAgICAgICAgICAgICAgc2V0RmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGlvblR5cGUocCwgQWxsb2NUeXBlRmFzdE5ldyk7DQorI2VuZGlmDQorICAg
ICAgICAgICAgcmV0dXJuIDo6bmV3KHApIFQ7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1
cm4gMDsNCisgICAgfQ0KKw0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
QXJnMT4NCisgICAgaW5saW5lIFQqIGZhc3ROZXcoQXJnMSBhcmcxKQ0KKyAgICB7DQorICAgICAg
ICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoVCkpOw0KKw0KKyAgICAgICAgaWYgKHApIHsN
CisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgICAgICAgICAg
IGlmIChwKQ0KKyAgICAgICAgICAgICAgICAgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5
cGUocCwgQWxsb2NUeXBlRmFzdE5ldyk7DQorI2VuZGlmDQorICAgICAgICAgICAgIHJldHVybiA6
Om5ldyhwKSBUKGFyZzEpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgcmV0dXJuIDA7DQorICAg
IH0NCisNCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZzEsIHR5cGVu
YW1lIEFyZzI+DQorICAgIGlubGluZSBUKiBmYXN0TmV3KEFyZzEgYXJnMSwgQXJnMiBhcmcyKQ0K
KyAgICB7DQorICAgICAgICB2b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoVCkpOw0KKw0KKyAg
ICAgICAgaWYgKHApIHsNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04p
DQorICAgICAgICAgICAgIGlmIChwKQ0KKyAgICAgICAgICAgICAgICAgc2V0RmFzdE1hbGxvY01h
dGNoVmFsaWRhdGlvblR5cGUocCwgQWxsb2NUeXBlRmFzdE5ldyk7DQorI2VuZGlmDQorICAgICAg
ICAgICAgIHJldHVybiA6Om5ldyhwKSBUKGFyZzEsIGFyZzIpOw0KKyAgICAgICAgfQ0KKw0KKyAg
ICAgICAgcmV0dXJuIDA7DQorICAgIH0NCisNCisNCisgICAgbmFtZXNwYWNlIEludGVybmFsIHsN
CisNCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAgICAgICAgdW5pb24gQXJyYXlT
aXplIHsNCisgICAgICAgICAgICBBbGlnbmVkQWxsb2NTaXplKiBzaXplOw0KKyAgICAgICAgICAg
IFQqIHQ7DQorICAgICAgICB9Ow0KKw0KKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVt
cGxhdGUgZm9yIGZhc3ROZXdBcnJheS4NCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2Fz
ZSB3aGVyZWluIFQgaGFzIGEgdHJpdmlhbCBjdG9yIGFuZCBhIHRyaXZpYWwgZHRvci4NCisgICAg
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIHRyaXZpYWxDdG9yLCBib29sIHRyaXZpYWxE
dG9yPg0KKyAgICAgICAgc3RydWN0IE5ld0FycmF5SW1wbCB7DQorICAgICAgICAgICAgc3RhdGlj
IFQqIGZhc3ROZXdBcnJheShzaXplX3QgY291bnQpDQorICAgICAgICAgICAgew0KKyAgICAgICAg
ICAgICAgICBUKiBwID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFQpICogY291
bnQpKTsNCisNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAg
ICAgICAgICAgICAgIGlmIChwKQ0KKyAgICAgICAgICAgICAgICAgICAgc2V0RmFzdE1hbGxvY01h
dGNoVmFsaWRhdGlvblR5cGUocCwgQWxsb2NUeXBlRmFzdE5ld0FycmF5KTsNCisjZW5kaWYNCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfTsNCisN
CisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBmYXN0TmV3QXJyYXku
DQorICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVpbiBUIGhhcyBhIG5vbi10
cml2aWFsIGN0b3IgYW5kIGEgdHJpdmlhbCBkdG9yLg0KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+DQorICAgICAgICBzdHJ1Y3QgTmV3QXJyYXlJbXBsPFQsIGZhbHNlLCB0cnVlPiB7DQor
ICAgICAgICAgICAgc3RhdGljIFQqIGZhc3ROZXdBcnJheShzaXplX3QgY291bnQpDQorICAgICAg
ICAgICAgew0KKyAgICAgICAgICAgICAgICBUKiBwID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RNYWxs
b2Moc2l6ZW9mKFQpICogY291bnQpKTsNCisNCisgICAgICAgICAgICAgICAgaWYgKHApIHsNCisj
aWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgICAgICAgICAgICAg
ICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVGYXN0TmV3
QXJyYXkpOw0KKyNlbmRpZg0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChUKiBwT2JqZWN0ID0g
cCwgKnBPYmplY3RFbmQgPSBwT2JqZWN0ICsgY291bnQ7IHBPYmplY3QgIT0gcE9iamVjdEVuZDsg
KytwT2JqZWN0KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIDo6bmV3KHBPYmplY3QpIFQ7IC8v
IFRvIGNvbnNpZGVyOiBoYW5kbGUgY3RvciBleGNlcHRpb25zIGlmIGV4Y2VwdGlvbnMgYXJlIGVu
YWJsZWQgYnkgdGhlIGNvbXBpbGVyLg0KKyAgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAg
ICAgICAgIHJldHVybiBwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH07DQorDQorICAgICAg
ICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdE5ld0FycmF5Lg0KKyAgICAg
ICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlaW4gVCBoYXMgYSB0cml2aWFsIGN0b3Ig
YW5kIGEgbm9uLXRyaXZpYWwgZHRvci4NCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0K
KyAgICAgICAgc3RydWN0IE5ld0FycmF5SW1wbDxULCB0cnVlLCBmYWxzZT4gew0KKyAgICAgICAg
ICAgIHN0YXRpYyBUKiBmYXN0TmV3QXJyYXkoc2l6ZV90IGNvdW50KQ0KKyAgICAgICAgICAgIHsN
CisgICAgICAgICAgICAgICAgdm9pZCogcCA9IGZhc3RNYWxsb2Moc2l6ZW9mKEFsaWduZWRBbGxv
Y1NpemUpICsgKHNpemVvZihUKSAqIGNvdW50KSk7DQorICAgICAgICAgICAgICAgIEFycmF5U2l6
ZTxUPiBhID0geyBzdGF0aWNfY2FzdDxBbGlnbmVkQWxsb2NTaXplKj4ocCkgfTsNCisNCisgICAg
ICAgICAgICAgICAgaWYgKHApIHsNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElE
QVRJT04pDQorICAgICAgICAgICAgICAgICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9u
VHlwZShwLCBBbGxvY1R5cGVGYXN0TmV3QXJyYXkpOw0KKyNlbmRpZg0KKyAgICAgICAgICAgICAg
ICAgICAgKmEuc2l6ZSsrID0gY291bnQ7DQorICAgICAgICAgICAgICAgICAgICAvLyBObyBuZWVk
IHRvIGNvbnN0cnVjdCB0aGUgb2JqZWN0cyBpbiB0aGlzIGNhc2UuDQorICAgICAgICAgICAgICAg
IH0NCisNCisgICAgICAgICAgICAgICAgcmV0dXJuIGEudDsNCisgICAgICAgICAgICB9DQorICAg
ICAgICB9Ow0KKw0KKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIGZh
c3ROZXdBcnJheS4NCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWluIFQg
aGFzIGEgbm9uLXRyaXZpYWwgY3RvciBhbmQgYSBub24tdHJpdmlhbCBkdG9yLg0KKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQorICAgICAgICBzdHJ1Y3QgTmV3QXJyYXlJbXBsPFQsIGZh
bHNlLCBmYWxzZT4gew0KKyAgICAgICAgICAgIHN0YXRpYyBUKiBmYXN0TmV3QXJyYXkoc2l6ZV90
IGNvdW50KQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgdm9pZCogcCA9IGZhc3RN
YWxsb2Moc2l6ZW9mKEFsaWduZWRBbGxvY1NpemUpICsgKHNpemVvZihUKSAqIGNvdW50KSk7DQor
ICAgICAgICAgICAgICAgIEFycmF5U2l6ZTxUPiBhID0geyBzdGF0aWNfY2FzdDxBbGlnbmVkQWxs
b2NTaXplKj4ocCkgfTsNCisNCisgICAgICAgICAgICAgICAgaWYgKHApIHsNCisjaWYgRU5BQkxF
KEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgICAgICAgICAgICAgICAgICBzZXRG
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVGYXN0TmV3QXJyYXkpOw0K
KyNlbmRpZg0KKyAgICAgICAgICAgICAgICAgICAgKmEuc2l6ZSsrID0gY291bnQ7DQorDQorICAg
ICAgICAgICAgICAgICAgICBmb3IgKFQqIHBUID0gYS50LCAqcFRFbmQgPSBwVCArIGNvdW50OyBw
VCAhPSBwVEVuZDsgKytwVCkNCisgICAgICAgICAgICAgICAgICAgICAgICA6Om5ldyhwVCkgVDsg
Ly8gVG8gY29uc2lkZXI6IGhhbmRsZSBjdG9yIGV4Y2VwdGlvbnMgaWYgZXhjZXB0aW9ucyBhcmUg
ZW5hYmxlZCBieSB0aGUgY29tcGlsZXIuDQorICAgICAgICAgICAgICAgIH0NCisNCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGEudDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9Ow0KKyAgICB9
IC8vIG5hbWVzcGFjZSBJbnRlcm5hbA0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisg
ICAgaW5saW5lIFQqIGZhc3ROZXdBcnJheShzaXplX3QgY291bnQpDQorICAgIHsNCisgICAgICAg
IHJldHVybiBJbnRlcm5hbDo6TmV3QXJyYXlJbXBsPFQsIFdURjo6aGFzX3RyaXZpYWxfY29uc3Ry
dWN0b3I8VD46OnZhbHVlLCBXVEY6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD46OnZhbHVlPjo6
ZmFzdE5ld0FycmF5KGNvdW50KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4NCisgICAgaW5saW5lIHZvaWQgZmFzdERlbGV0ZShUKiBwKQ0KKyAgICB7DQorICAgICAgICAv
LyBXZSBjb3VsZCBhdm9pZCB0aGUgcG9pbnRlciBjaGVjayBoZXJlIGJ5IG1ha2luZyBhIHRlbXBs
YXRlIHNwZWNpYWxpemF0aW9uLg0KKyAgICAgICAgaWYocCkgeyAvLyBXZSBuZWVkIHRvIHRlc3Qg
cCBoZXJlIGJlY2F1c2Ugd2UgZGVyZWZlcmVuY2UgaXQuDQorI2lmIEVOQUJMRShGQVNUX01BTExP
Q19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICAgICAgICAgIGlmIChnZXRGYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0aW9uVHlwZShwKSAhPSBBbGxvY1R5cGVGYXN0TmV3KQ0KKyAgICAgICAgICAgICAgICBm
YXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7DQorICAgICAgICAgICAgc2V0RmFzdE1hbGxvY01hdGNo
VmFsaWRhdGlvblR5cGUocCwgQWxsb2NUeXBlTWFsbG9jKTsgIC8vIFNldCBpdCB0byB0aGlzIHNv
IHRoYXQgZmFzdEZyZWUgdGhpbmtzIGl0J3MgT0suDQorI2VuZGlmDQorICAgICAgICAgICAgcC0+
flQoKTsNCisgICAgICAgICAgICBmYXN0RnJlZShwKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0K
KyAgICBuYW1lc3BhY2UgSW50ZXJuYWwgew0KKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQg
dGVtcGxhdGUgZm9yIGZhc3REZWxldGVBcnJheS4NCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0
aGUgY2FzZSB3aGVyZWluIFQgaGFzIGEgdHJpdmlhbCBkdG9yLg0KKyAgICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIGJvb2wgdHJpdmlhbER0b3I+DQorICAgICAgICBzdHJ1Y3QgRGVsZXRlQXJy
YXlJbXBsIHsNCisgICAgICAgICAgICBzdGF0aWMgdm9pZCBmYXN0RGVsZXRlQXJyYXkodm9pZCog
cCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gZGVzdHJ1
Y3QgdGhlIG9iamVjdHMgaW4gdGhpcyBjYXNlLg0KKyAgICAgICAgICAgICAgICAvLyBXZSBleHBl
Y3QgdGhhdCBmYXN0RnJlZSBjaGVja3MgZm9yIG51bGwuDQorI2lmIEVOQUJMRShGQVNUX01BTExP
Q19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICAgICAgICAgICAgICBpZiAocCkgew0KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGdldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHApICE9IEFs
bG9jVHlwZUZhc3ROZXdBcnJheSkNCisgICAgICAgICAgICAgICAgICAgICAgICBmYXN0TWFsbG9j
TWF0Y2hGYWlsZWQocCk7DQorICAgICAgICAgICAgICAgICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0aW9uVHlwZShwLCBBbGxvY1R5cGVNYWxsb2MpOyAgLy8gU2V0IGl0IHRvIHRoaXMgc28g
dGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4NCisgICAgICAgICAgICAgICAgfQ0KKyNlbmRp
Zg0KKyAgICAgICAgICAgICAgICBmYXN0RnJlZShwKTsNCisgICAgICAgICAgICB9DQorICAgICAg
ICB9Ow0KKw0KKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIGZhc3RE
ZWxldGVBcnJheS4NCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWluIFQg
aGFzIGEgbm9uLXRyaXZpYWwgZHRvci4NCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0K
KyAgICAgICAgc3RydWN0IERlbGV0ZUFycmF5SW1wbDxULCBmYWxzZT4gew0KKyAgICAgICAgICAg
IHN0YXRpYyB2b2lkIGZhc3REZWxldGVBcnJheShUKiBwKQ0KKyAgICAgICAgICAgIHsNCisgICAg
ICAgICAgICAgICAgaWYocCkgeyAvLyBXZSBuZWVkIHRvIHRlc3QgcCBoZXJlIGJlY2F1c2Ugd2Ug
ZGVyZWZlcmVuY2UgaXQuDQorICAgICAgICAgICAgICAgICAgICBBcnJheVNpemU8VD4gYTsNCisg
ICAgICAgICAgICAgICAgICAgIGEudCA9IHA7DQorICAgICAgICAgICAgICAgICAgICBhLnNpemUt
LTsgLy8gRGVjcmVtZW50IHNpemUgcG9pbnRlcg0KKw0KKyAgICAgICAgICAgICAgICAgICAgVCog
cEVuZCA9IHAgKyAqYS5zaXplOw0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUocEVuZC0tICE9
IHApDQorICAgICAgICAgICAgICAgICAgICAgICAgcEVuZC0+flQoKTsNCisNCisjaWYgRU5BQkxF
KEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgICAgICAgICAgICAgICAgICBpZiAo
Z2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUoYS5zaXplKSAhPSBBbGxvY1R5cGVGYXN0
TmV3QXJyYXkpDQorICAgICAgICAgICAgICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoRmFpbGVk
KGEuc2l6ZSk7DQorICAgICAgICAgICAgICAgICAgICBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0
aW9uVHlwZShhLnNpemUsIEFsbG9jVHlwZU1hbGxvYyk7ICAvLyBTZXQgaXQgdG8gdGhpcyBzbyB0
aGF0IGZhc3RGcmVlIHRoaW5rcyBpdCdzIE9LLg0KKyNlbmRpZg0KKyAgICAgICAgICAgICAgICAg
ICAgZmFzdEZyZWUoYS5zaXplKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0N
CisgICAgICAgIH07DQorDQorICAgIH0gLy8gbmFtZXNwYWNlIEludGVybmFsDQorDQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAgICB2b2lkIGZhc3REZWxldGVBcnJheShUKiBwKQ0KKyAg
ICB7DQorICAgICAgICBJbnRlcm5hbDo6RGVsZXRlQXJyYXlJbXBsPFQsIFdURjo6aGFzX3RyaXZp
YWxfZGVzdHJ1Y3RvcjxUPjo6dmFsdWU+OjpmYXN0RGVsZXRlQXJyYXkocCk7DQorICAgIH0NCisN
CisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQorICAgIGlubGluZSB2b2lkIGZhc3ROb25O
dWxsRGVsZXRlKFQqIHApDQorICAgIHsNCisgICAgICAgIGlmIChwKSB7DQorI2lmIEVOQUJMRShG
QVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICAgICAgICAgIGlmIChnZXRGYXN0TWFs
bG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwKSAhPSBBbGxvY1R5cGVGYXN0TmV3KQ0KKyAgICAgICAg
ICAgICAgICBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7DQorICAgICAgICAgICAgc2V0RmFzdE1h
bGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCwgQWxsb2NUeXBlTWFsbG9jKTsgIC8vIFNldCBpdCB0
byB0aGlzIHNvIHRoYXQgZmFzdEZyZWUgdGhpbmtzIGl0J3MgT0suDQorI2VuZGlmDQorDQorICAg
ICAgICAgICAgcC0+flQoKTsNCisgICAgICAgICAgICBmYXN0RnJlZShwKTsNCisgICAgICAgIH0N
CisgICAgfQ0KKw0KKyAgICBuYW1lc3BhY2UgSW50ZXJuYWwgew0KKyAgICAgICAgLy8gVGhpcyBp
cyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIGZhc3REZWxldGVBcnJheS4NCisgICAgICAgIC8vIFRo
aXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWluIFQgaGFzIGEgdHJpdmlhbCBkdG9yLg0KKyAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgdHJpdmlhbER0b3I+DQorICAgICAgICBzdHJ1
Y3QgTm9uTnVsbERlbGV0ZUFycmF5SW1wbCB7DQorICAgICAgICAgICAgc3RhdGljIHZvaWQgZmFz
dE5vbk51bGxEZWxldGVBcnJheSh2b2lkKiBwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAg
ICAgICAgaWYgKHApIHsNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04p
DQorICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5
cGUocCkgIT0gQWxsb2NUeXBlRmFzdE5ld0FycmF5KQ0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGZhc3RNYWxsb2NNYXRjaEZhaWxlZChwKTsNCisgICAgICAgICAgICAgICAgICAgIHNldEZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIEFsbG9jVHlwZU1hbGxvYyk7ICAvLyBTZXQgaXQg
dG8gdGhpcyBzbyB0aGF0IGZhc3RGcmVlIHRoaW5rcyBpdCdzIE9LLg0KKyNlbmRpZg0KKyAgICAg
ICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBkZXN0cnVjdCB0aGUgb2JqZWN0cyBpbiB0aGlz
IGNhc2UuDQorICAgICAgICAgICAgICAgICAgICBmYXN0RnJlZShwKTsNCisgICAgICAgICAgICAg
ICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH07DQorDQorICAgICAgICAvLyBUaGlzIGlz
IGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdERlbGV0ZUFycmF5Lg0KKyAgICAgICAgLy8gVGhp
cyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlaW4gVCBoYXMgYSBub24tdHJpdmlhbCBkdG9yLg0KKyAg
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQorICAgICAgICBzdHJ1Y3QgTm9uTnVsbERlbGV0
ZUFycmF5SW1wbDxULCBmYWxzZT4gew0KKyAgICAgICAgICAgIHN0YXRpYyB2b2lkIGZhc3ROb25O
dWxsRGVsZXRlQXJyYXkoVCogcCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGlm
IChwKSB7DQorICAgICAgICAgICAgICAgICAgICBBcnJheVNpemU8VD4gYTsNCisgICAgICAgICAg
ICAgICAgICAgIGEudCA9IHA7DQorICAgICAgICAgICAgICAgICAgICBhLnNpemUtLTsNCisNCisg
ICAgICAgICAgICAgICAgICAgIFQqIHBFbmQgPSBwICsgKmEuc2l6ZTsNCisgICAgICAgICAgICAg
ICAgICAgIHdoaWxlKHBFbmQtLSAhPSBwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBFbmQt
Pn5UKCk7DQorDQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGdldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKGEu
c2l6ZSkgIT0gQWxsb2NUeXBlRmFzdE5ld0FycmF5KQ0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGZhc3RNYWxsb2NNYXRjaEZhaWxlZChhLnNpemUpOw0KKyAgICAgICAgICAgICAgICAgICAgc2V0
RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUoYS5zaXplLCBBbGxvY1R5cGVNYWxsb2MpOyAg
Ly8gU2V0IGl0IHRvIHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4NCisjZW5k
aWYNCisgICAgICAgICAgICAgICAgICAgIGZhc3RGcmVlKGEuc2l6ZSk7DQorICAgICAgICAgICAg
ICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9Ow0KKw0KKyAgICB9IC8vIG5hbWVzcGFj
ZSBJbnRlcm5hbA0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisgICAgdm9pZCBmYXN0
Tm9uTnVsbERlbGV0ZUFycmF5KFQqIHApDQorICAgIHsNCisgICAgICAgIEludGVybmFsOjpOb25O
dWxsRGVsZXRlQXJyYXlJbXBsPFQsIFdURjo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPjo6dmFs
dWU+OjpmYXN0Tm9uTnVsbERlbGV0ZUFycmF5KHApOw0KKyAgICB9DQorDQorDQorfSAvLyBuYW1l
c3BhY2UgV1RGDQorDQorI2VuZGlmIC8vIFdURl9GYXN0QWxsb2NCYXNlX2gNCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0
Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAJKHJldmlzaW9uIDQwMjg5KQ0KKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTE1MSw2ICsxNTEsMTkg
QEANCiANCiBuYW1lc3BhY2UgV1RGIHsNCiANCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENI
X1ZBTElEQVRJT04pDQorDQorbmFtZXNwYWNlIEludGVybmFsIHsNCisNCit2b2lkIGZhc3RNYWxs
b2NNYXRjaEZhaWxlZCh2b2lkKikNCit7DQorICAgIENSQVNIKCk7DQorfQ0KKw0KK30gLy8gbmFt
ZXNwYWNlIEludGVybmFsDQorDQorI2VuZGlmDQorDQogdm9pZCogZmFzdFplcm9lZE1hbGxvYyhz
aXplX3QgbikgDQogew0KICAgICB2b2lkKiByZXN1bHQgPSBmYXN0TWFsbG9jKG4pOw0KQEAgLTE4
MywxMyArMTk2LDM0IEBADQogdm9pZCogdHJ5RmFzdE1hbGxvYyhzaXplX3QgbikgDQogew0KICAg
ICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOw0KKw0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFU
Q0hfVkFMSURBVElPTikNCisgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSBuKSAgLy8gSWYgb3ZlcmZsb3cg
d291bGQgb2NjdXIuLi4NCisgICAgICAgIHJldHVybiAwOw0KKw0KKyAgICB2b2lkKiByZXN1bHQg
PSBtYWxsb2MobiArIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpKTsNCisgICAgaWYgKCFy
ZXN1bHQpDQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAgKnN0YXRpY19jYXN0PEFsbG9jQWxp
Z25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jOw0KKyAg
ICByZXN1bHQgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihyZXN1bHQpICsg
MTsNCisNCisgICAgcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KICAgICByZXR1cm4gbWFsbG9jKG4p
Ow0KKyNlbmRpZg0KIH0NCiANCiB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCBuKSANCiB7DQogICAg
IEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7DQorDQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRD
SF9WQUxJREFUSU9OKQ0KKyAgICB2b2lkKiByZXN1bHQgPSB0cnlGYXN0TWFsbG9jKG4pOw0KKyNl
bHNlDQogICAgIHZvaWQqIHJlc3VsdCA9IG1hbGxvYyhuKTsNCisjZW5kaWYNCisNCiAgICAgaWYg
KCFyZXN1bHQpDQogICAgICAgICBDUkFTSCgpOw0KICAgICByZXR1cm4gcmVzdWx0Ow0KQEAgLTE5
OCwxMyArMjMyLDM1IEBADQogdm9pZCogdHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywg
c2l6ZV90IGVsZW1lbnRfc2l6ZSkNCiB7DQogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7DQor
DQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICBzaXplX3Qg
dG90YWxCeXRlcyA9IG5fZWxlbWVudHMgKiBlbGVtZW50X3NpemU7DQorICAgIGlmIChuX2VsZW1l
bnRzID4gMSAmJiBlbGVtZW50X3NpemUgJiYgKHRvdGFsQnl0ZXMgLyBlbGVtZW50X3NpemUpICE9
IG5fZWxlbWVudHMgfHwgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBzaXpl
b2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSB0b3RhbEJ5dGVzKSkNCisgICAgICAgIHJldHVy
biAwOw0KKw0KKyAgICB0b3RhbEJ5dGVzICs9IHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIp
Ow0KKyAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2ModG90YWxCeXRlcyk7DQorICAgIGlmICghcmVz
dWx0KQ0KKyAgICAgICAgcmV0dXJuIDA7DQorDQorICAgIG1lbXNldChyZXN1bHQsIDAsIHRvdGFs
Qnl0ZXMpOw0KKyAgICAqc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0
KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7DQorICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0
PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgKyAxOw0KKyNlbHNlDQogICAgIHJldHVy
biBjYWxsb2Mobl9lbGVtZW50cywgZWxlbWVudF9zaXplKTsNCisjZW5kaWYNCiB9DQogDQogdm9p
ZCogZmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSkNCiB7
DQogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7DQorDQorI2lmIEVOQUJMRShGQVNUX01BTExP
Q19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICB2b2lkKiByZXN1bHQgPSB0cnlGYXN0Q2FsbG9jKG5f
ZWxlbWVudHMsIGVsZW1lbnRfc2l6ZSk7DQorI2Vsc2UNCiAgICAgdm9pZCogcmVzdWx0ID0gY2Fs
bG9jKG5fZWxlbWVudHMsIGVsZW1lbnRfc2l6ZSk7DQorI2VuZGlmDQorDQogICAgIGlmICghcmVz
dWx0KQ0KICAgICAgICAgQ1JBU0goKTsNCiAgICAgcmV0dXJuIHJlc3VsdDsNCkBAIC0yMTMsMTkg
KzI2OSw1NyBAQA0KIHZvaWQgZmFzdEZyZWUodm9pZCogcCkNCiB7DQogICAgIEFTU0VSVCghaXNG
b3JiaWRkZW4oKSk7DQorDQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9O
KQ0KKyAgICBpZiAoIXApDQorICAgICAgICByZXR1cm47DQorDQorICAgIEFsbG9jQWxpZ25tZW50
SW50ZWdlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1
ZShwKTsNCisgICAgaWYgKCpoZWFkZXIgIT0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYykNCisg
ICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7DQorICAgIGZyZWUoaGVh
ZGVyKTsNCisjZWxzZQ0KICAgICBmcmVlKHApOw0KKyNlbmRpZg0KIH0NCiANCiB2b2lkKiB0cnlG
YXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3QgbikNCiB7DQogICAgIEFTU0VSVCghaXNGb3JiaWRk
ZW4oKSk7DQorDQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAg
ICBpZiAocCkgew0KKyAgICAgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSBuKSAgLy8gSWYgb3ZlcmZsb3cg
d291bGQgb2NjdXIuLi4NCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIEFsbG9jQWxp
Z25tZW50SW50ZWdlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRp
b25WYWx1ZShwKTsNCisgICAgICAgIGlmICgqaGVhZGVyICE9IEludGVybmFsOjpBbGxvY1R5cGVN
YWxsb2MpDQorICAgICAgICAgICAgSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaEZhaWxlZChwKTsN
CisgICAgICAgIHZvaWQqIHJlc3VsdCA9IHJlYWxsb2MoaGVhZGVyLCBuICsgc2l6ZW9mKEFsbG9j
QWxpZ25tZW50SW50ZWdlcikpOw0KKyAgICAgICAgaWYgKCFyZXN1bHQpDQorICAgICAgICAgICAg
cmV0dXJuIDA7DQorDQorICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkIGJlY2F1
c2UgdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmU6DQorICAgICAgICAvLyAqc3RhdGljX2Nhc3Q8
QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxs
b2M7DQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIq
PihyZXN1bHQpICsgMTsNCisgICAgICAgIHJldHVybiByZXN1bHQ7DQorICAgIH0gZWxzZSB7DQor
ICAgICAgICByZXR1cm4gZmFzdE1hbGxvYyhuKTsNCisgICAgfQ0KKyNlbHNlDQogICAgIHJldHVy
biByZWFsbG9jKHAsIG4pOw0KKyNlbmRpZg0KIH0NCiANCiB2b2lkKiBmYXN0UmVhbGxvYyh2b2lk
KiBwLCBzaXplX3QgbikNCiB7DQogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7DQorDQorI2lm
IEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICB2b2lkKiByZXN1bHQg
PSB0cnlGYXN0UmVhbGxvYyhwLCBuKTsNCisjZWxzZQ0KICAgICB2b2lkKiByZXN1bHQgPSByZWFs
bG9jKHAsIG4pOw0KKyNlbmRpZg0KKw0KICAgICBpZiAoIXJlc3VsdCkNCiAgICAgICAgIENSQVNI
KCk7DQogICAgIHJldHVybiByZXN1bHQ7DQpAQCAtMjY1LDYgKzM1OSw3IEBADQogI2luY2x1ZGUg
IlRDU3lzdGVtQWxsb2MuaCINCiAjaW5jbHVkZSA8YWxnb3JpdGhtPg0KICNpbmNsdWRlIDxlcnJu
by5oPg0KKyNpbmNsdWRlIDxsaW1pdHM+DQogI2luY2x1ZGUgPG5ldz4NCiAjaW5jbHVkZSA8cHRo
cmVhZC5oPg0KICNpbmNsdWRlIDxzdGRhcmcuaD4NCkBAIC0zMjYzLDcgKzMzNTgsMjAgQEANCiBB
TFdBWVNfSU5MSU5FDQogI2VuZGlmDQogdm9pZCogbWFsbG9jKHNpemVfdCBzaXplKSB7DQotICB2
b2lkKiByZXN1bHQgPSBkb19tYWxsb2Moc2l6ZSk7DQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19N
QVRDSF9WQUxJREFUSU9OKQ0KKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpIDw9IHNpemUpICAvLyBJZiBvdmVy
ZmxvdyB3b3VsZCBvY2N1ci4uLg0KKyAgICAgICAgcmV0dXJuIDA7DQorICAgIHNpemUgKz0gc2l6
ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7DQorICAgIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxv
YyhzaXplKTsNCisgICAgaWYgKCFyZXN1bHQpDQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAg
KnN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5hbDo6
QWxsb2NUeXBlTWFsbG9jOw0KKyAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVu
dEludGVnZXIqPihyZXN1bHQpICsgMTsNCisjZWxzZQ0KKyAgICB2b2lkKiByZXN1bHQgPSBkb19t
YWxsb2Moc2l6ZSk7DQorI2VuZGlmDQorDQogI2lmbmRlZiBXVEZfQ0hBTkdFUw0KICAgTWFsbG9j
SG9vazo6SW52b2tlTmV3SG9vayhyZXN1bHQsIHNpemUpOw0KICNlbmRpZg0KQEAgLTMyNzcsNyAr
MzM4NSwxOCBAQA0KICNpZm5kZWYgV1RGX0NIQU5HRVMNCiAgIE1hbGxvY0hvb2s6Okludm9rZURl
bGV0ZUhvb2socHRyKTsNCiAjZW5kaWYNCi0gIGRvX2ZyZWUocHRyKTsNCisNCisjaWYgRU5BQkxF
KEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgIGlmICghcHRyKQ0KKyAgICAgICAg
cmV0dXJuOw0KKw0KKyAgICBBbGxvY0FsaWdubWVudEludGVnZXIqIGhlYWRlciA9IEludGVybmFs
OjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUocHRyKTsNCisgICAgaWYgKCpoZWFkZXIg
IT0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYykNCisgICAgICAgIEludGVybmFsOjpmYXN0TWFs
bG9jTWF0Y2hGYWlsZWQocHRyKTsNCisgICAgZG9fZnJlZShoZWFkZXIpOw0KKyNlbHNlDQorICAg
IGRvX2ZyZWUocHRyKTsNCisjZW5kaWYNCiB9DQogDQogI2lmbmRlZiBXVEZfQ0hBTkdFUw0KQEAg
LTMzMDAsMTYgKzM0MTksMzEgQEANCiBBTFdBWVNfSU5MSU5FDQogI2VuZGlmDQogdm9pZCogY2Fs
bG9jKHNpemVfdCBuLCBzaXplX3QgZWxlbV9zaXplKSB7DQotICBjb25zdCBzaXplX3QgdG90YWxC
eXRlcyA9IG4gKiBlbGVtX3NpemU7DQorICBzaXplX3QgdG90YWxCeXRlcyA9IG4gKiBlbGVtX3Np
emU7DQogICAgIA0KICAgLy8gUHJvdGVjdCBhZ2FpbnN0IG92ZXJmbG93DQogICBpZiAobiA+IDEg
JiYgZWxlbV9zaXplICYmICh0b3RhbEJ5dGVzIC8gZWxlbV9zaXplKSAhPSBuKQ0KICAgICByZXR1
cm4gMDsNCi0gICAgDQotICB2b2lkKiByZXN1bHQgPSBkb19tYWxsb2ModG90YWxCeXRlcyk7DQot
ICBpZiAocmVzdWx0ICE9IE5VTEwpIHsNCisNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENI
X1ZBTElEQVRJT04pDQorICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
IC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikgPD0gdG90YWxCeXRlcykgIC8vIElmIG92
ZXJmbG93IHdvdWxkIG9jY3VyLi4uDQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAgdG90YWxC
eXRlcyArPSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKTsNCisgICAgdm9pZCogcmVzdWx0
ID0gZG9fbWFsbG9jKHRvdGFsQnl0ZXMpOw0KKyAgICBpZiAoIXJlc3VsdCkNCisgICAgICAgIHJl
dHVybiAwOw0KKw0KICAgICBtZW1zZXQocmVzdWx0LCAwLCB0b3RhbEJ5dGVzKTsNCi0gIH0NCisg
ICAgKnN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5h
bDo6QWxsb2NUeXBlTWFsbG9jOw0KKyAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdu
bWVudEludGVnZXIqPihyZXN1bHQpICsgMTsNCisjZWxzZQ0KKyAgICB2b2lkKiByZXN1bHQgPSBk
b19tYWxsb2ModG90YWxCeXRlcyk7DQorICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgew0KKyAgICAg
ICAgbWVtc2V0KHJlc3VsdCwgMCwgdG90YWxCeXRlcyk7DQorICAgIH0NCisjZW5kaWYNCisNCiAj
aWZuZGVmIFdURl9DSEFOR0VTDQogICBNYWxsb2NIb29rOjpJbnZva2VOZXdIb29rKHJlc3VsdCwg
dG90YWxCeXRlcyk7DQogI2VuZGlmDQpAQCAtMzM1MCwxMCArMzQ4NCwxNCBAQA0KICNlbmRpZg0K
IHZvaWQqIHJlYWxsb2Modm9pZCogb2xkX3B0ciwgc2l6ZV90IG5ld19zaXplKSB7DQogICBpZiAo
b2xkX3B0ciA9PSBOVUxMKSB7DQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFU
SU9OKQ0KKyAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2MobmV3X3NpemUpOw0KKyNlbHNlDQogICAg
IHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyhuZXdfc2l6ZSk7DQogI2lmbmRlZiBXVEZfQ0hBTkdF
Uw0KICAgICBNYWxsb2NIb29rOjpJbnZva2VOZXdIb29rKHJlc3VsdCwgbmV3X3NpemUpOw0KICNl
bmRpZg0KKyNlbmRpZg0KICAgICByZXR1cm4gcmVzdWx0Ow0KICAgfQ0KICAgaWYgKG5ld19zaXpl
ID09IDApIHsNCkBAIC0zMzY0LDYgKzM1MDIsMTYgQEANCiAgICAgcmV0dXJuIE5VTEw7DQogICB9
DQogDQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICBpZiAo
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIHNpemVvZihBbGxvY0FsaWdubWVu
dEludGVnZXIpIDw9IG5ld19zaXplKSAgLy8gSWYgb3ZlcmZsb3cgd291bGQgb2NjdXIuLi4NCisg
ICAgICAgIHJldHVybiAwOw0KKyAgICBuZXdfc2l6ZSArPSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyKTsNCisgICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBoZWFkZXIgPSBJbnRlcm5hbDo6
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKG9sZF9wdHIpOw0KKyAgICBpZiAoKmhlYWRl
ciAhPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jKQ0KKyAgICAgICAgSW50ZXJuYWw6OmZhc3RN
YWxsb2NNYXRjaEZhaWxlZChvbGRfcHRyKTsNCisgICAgb2xkX3B0ciA9IGhlYWRlcjsNCisjZW5k
aWYNCisNCiAgIC8vIEdldCB0aGUgc2l6ZSBvZiB0aGUgb2xkIGVudHJ5DQogICBjb25zdCBQYWdl
SUQgcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihvbGRfcHRyKSA+PiBrUGFnZVNoaWZ0
Ow0KICAgc2l6ZV90IGNsID0gcGFnZWhlYXAtPkdldFNpemVDbGFzc0lmQ2FjaGVkKHApOw0KQEAg
LTM0MDAsOCArMzU0OCwxNCBAQA0KICAgICAvLyB0aGF0IHdlIGFscmVhZHkga25vdyB0aGUgc2l6
ZWNsYXNzIG9mIG9sZF9wdHIuICBUaGUgYmVuZWZpdA0KICAgICAvLyB3b3VsZCBiZSBzbWFsbCwg
c28gZG9uJ3QgYm90aGVyLg0KICAgICBkb19mcmVlKG9sZF9wdHIpOw0KKyNpZiBFTkFCTEUoRkFT
VF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgbmV3X3B0ciA9IHN0YXRpY19jYXN0PEFs
bG9jQWxpZ25tZW50SW50ZWdlcio+KG5ld19wdHIpICsgMTsNCisjZW5kaWYNCiAgICAgcmV0dXJu
IG5ld19wdHI7DQogICB9IGVsc2Ugew0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFM
SURBVElPTikNCisgICAgb2xkX3B0ciA9IHBCeXRlICsgc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50
ZWdlcik7ICAvLyBTZXQgb2xkX3B0ciBiYWNrIHRvIHRoZSB1c2VyIHBvaW50ZXIuDQorI2VuZGlm
DQogICAgIHJldHVybiBvbGRfcHRyOw0KICAgfQ0KIH0NCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCShyZXZpc2lvbiA0MDI4OSkNCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
d29ya2luZyBjb3B5KQ0KQEAgLTM4Myw2ICszODMsMTIgQEANCiANCiAvKiBFTkFCTEUgbWFjcm8g
ZGVmYXVsdHMgKi8NCiANCisvKiBmYXN0TWFsbG9jIG1hdGNoIHZhbGlkYXRpb24gYWxsb3dzIGZv
ciBydW50aW1lIHZlcmlmaWNhdGlvbiB0aGF0IA0KKyAgIG5ldyBpcyBtYXRjaGVkIGJ5IGRlbGV0
ZSwgZmFzdE1hbGxvYyBpcyBtYXRjaGVkIGJ5IGZhc3RGcmVlLCBldGMuICovDQorI2lmICFkZWZp
bmVkKEVOQUJMRV9GQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyNkZWZpbmUgRU5BQkxF
X0ZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04gMA0KKyNlbmRpZg0KKw0KICNpZiAhZGVmaW5l
ZChFTkFCTEVfSUNPTkRBVEFCQVNFKQ0KICNkZWZpbmUgRU5BQkxFX0lDT05EQVRBQkFTRSAxDQog
I2VuZGlmDQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUcmFpdHMuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVHJhaXRzLmgJKHJldmlzaW9uIDQwMjg5KQ0K
KysrIEphdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVHJhaXRzLmgJKHdvcmtpbmcgY29weSkNCkBAIC0y
Myw2ICsyMyw3IEBADQogDQogI2luY2x1ZGUgIkFzc2VydGlvbnMuaCINCiAjaW5jbHVkZSAiSGFz
aEZ1bmN0aW9ucy5oIg0KKyNpbmNsdWRlICJUeXBlVHJhaXRzLmgiDQogI2luY2x1ZGUgPHV0aWxp
dHk+DQogI2luY2x1ZGUgPGxpbWl0cz4NCiANCkBAIC0zMSw0NyArMzIsNiBAQA0KICAgICB1c2lu
ZyBzdGQ6OnBhaXI7DQogICAgIHVzaW5nIHN0ZDo6bWFrZV9wYWlyOw0KIA0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSXNJbnRlZ2VyICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBi
b29sIHZhbHVlID0gZmFsc2U7IH07DQotICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxi
b29sPiAgICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0K
LSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8Y2hhcj4gICAgICAgICAgICAgICB7IHN0
YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
SXNJbnRlZ2VyPHNpZ25lZCBjaGFyPiAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9
IHRydWU7IH07DQotICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBjaGFy
PiAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KLSAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBJc0ludGVnZXI8c2hvcnQ+ICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBi
b29sIHZhbHVlID0gdHJ1ZTsgfTsNCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVu
c2lnbmVkIHNob3J0PiAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQot
ICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxpbnQ+ICAgICAgICAgICAgICAgIHsgc3Rh
dGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJ
c0ludGVnZXI8dW5zaWduZWQgaW50PiAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0g
dHJ1ZTsgfTsNCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGxvbmc+ICAgICAgICAg
ICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQotICAgIHRlbXBsYXRl
PD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBsb25nPiAgICAgIHsgc3RhdGljIGNvbnN0IGJv
b2wgdmFsdWUgPSB0cnVlOyB9Ow0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8bG9u
ZyBsb25nPiAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCi0g
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGxvbmcgbG9uZz4geyBzdGF0
aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQotDQotI2lmICFDT01QSUxFUihNU1ZDKSB8
fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQ0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBJc0ludGVnZXI8d2NoYXJfdD4gICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVl
ID0gdHJ1ZTsgfTsNCi0jZW5kaWYNCi0NCi0gICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPGJv
b2w+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9ib29sX3RydWUpOw0KLSAgICBDT01QSUxFX0FTU0VS
VChJc0ludGVnZXI8Y2hhcj46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2NoYXJfdHJ1ZSk7DQotICAg
IENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjxzaWduZWQgY2hhcj46OnZhbHVlLCBXVEZfSXNJbnRl
Z2VyX3NpZ25lZF9jaGFyX3RydWUpOw0KLSAgICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8dW5z
aWduZWQgY2hhcj46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX2NoYXJfdHJ1ZSk7DQot
ICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjxzaG9ydD46OnZhbHVlLCBXVEZfSXNJbnRlZ2Vy
X3Nob3J0X3RydWUpOw0KLSAgICBDT01QSUxFX0FTU0VSVChJc0ludGVnZXI8dW5zaWduZWQgc2hv
cnQ+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl91bnNpZ25lZF9zaG9ydF90cnVlKTsNCi0gICAgQ09N
UElMRV9BU1NFUlQoSXNJbnRlZ2VyPGludD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2ludF90cnVl
KTsNCi0gICAgQ09NUElMRV9BU1NFUlQoSXNJbnRlZ2VyPHVuc2lnbmVkIGludD46OnZhbHVlLCBX
VEZfSXNJbnRlZ2VyX3Vuc2lnbmVkX2ludF90cnVlKTsNCi0gICAgQ09NUElMRV9BU1NFUlQoSXNJ
bnRlZ2VyPGxvbmc+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9sb25nX3RydWUpOw0KLSAgICBDT01Q
SUxFX0FTU0VSVChJc0ludGVnZXI8dW5zaWduZWQgbG9uZz46OnZhbHVlLCBXVEZfSXNJbnRlZ2Vy
X3Vuc2lnbmVkX2xvbmdfdHJ1ZSk7DQotICAgIENPTVBJTEVfQVNTRVJUKElzSW50ZWdlcjxsb25n
IGxvbmc+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9sb25nX2xvbmdfdHJ1ZSk7DQotICAgIENPTVBJ
TEVfQVNTRVJUKElzSW50ZWdlcjx1bnNpZ25lZCBsb25nIGxvbmc+Ojp2YWx1ZSwgV1RGX0lzSW50
ZWdlcl91bnNpZ25lZF9sb25nX2xvbmdfdHJ1ZSk7DQotDQotI2lmICFDT01QSUxFUihNU1ZDKSB8
fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQ0KLSAgICBDT01QSUxFX0FTU0VSVChJ
c0ludGVnZXI8d2NoYXJfdD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX3djaGFyX3RfdHJ1ZSk7DQot
I2VuZGlmDQotDQotICAgIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8Y2hhcio+Ojp2YWx1ZSwg
V1RGX0lzSW50ZWdlcl9jaGFyX3BvaW50ZXJfZmFsc2UpOw0KLSAgICBDT01QSUxFX0FTU0VSVCgh
SXNJbnRlZ2VyPGNvbnN0IGNoYXIqID46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2NvbnN0X2NoYXJf
cG9pbnRlcl9mYWxzZSk7DQotICAgIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8dm9sYXRpbGUg
Y2hhciogPjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfdm9sYXRpbGVfY2hhcl9wb2ludGVyX19mYWxz
ZSk7DQotICAgIENPTVBJTEVfQVNTRVJUKCFJc0ludGVnZXI8ZG91YmxlPjo6dmFsdWUsIFdURl9J
c0ludGVnZXJfZG91YmxlX2ZhbHNlKTsNCi0gICAgQ09NUElMRV9BU1NFUlQoIUlzSW50ZWdlcjxm
bG9hdD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX2Zsb2F0X2ZhbHNlKTsNCi0NCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7DQogDQogICAgIHRlbXBsYXRlPGJvb2wg
aXNJbnRlZ2VyLCB0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHNCYXNlOw0KQEAg
LTg5LDcgKzQ5LDcgQEANCiAgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFQgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID09IHN0YXRpY19jYXN0PFQ+KC0xKTsgfQ0KICAgICB9Ow0KIA0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5l
cmljSGFzaFRyYWl0c0Jhc2U8SXNJbnRlZ2VyPFQ+Ojp2YWx1ZSwgVD4gew0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0
c0Jhc2U8aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBUPiB7DQogICAgICAgICB0eXBlZGVmIFQgVHJh
aXRUeXBlOw0KICAgICAgICAgc3RhdGljIFQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFQoKTsgfQ0K
ICAgICB9Ow0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYv
V1RGLnZjcHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9XVEYvV1RGLnZjcHJvagkocmV2aXNpb24gNDAyODkpDQorKysgSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjcxLDYgKzI3MSwxMCBAQA0KIAkJCT4NCiAJCTwvRmlsZT4NCiAJCTxGaWxlDQorCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlx3dGZcRmFzdEFsbG9jQmFzZS5oIg0KKwkJCT4NCisJCTwvRmlsZT4N
CisJCTxGaWxlDQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcRmFzdE1hbGxvYy5jcHAiDQog
CQkJPg0KIAkJPC9GaWxlPg0KQEAgLTQ1OSw2ICs0NjMsMTAgQEANCiAJCQk+DQogCQk8L0ZpbGU+
DQogCQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFR5cGVUcmFpdHMuaCINCisJ
CQk+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHVu
aWNvZGVcVW5pY29kZS5oIg0KIAkJCT4NCiAJCTwvRmlsZT4NCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gNDAyODkpDQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQ0KQEAgLTMzOSw2ICszMzksOCBA
QA0KIAkJRTFBODYyRDYwRDdGMkI1QzAwMUVDNkFBIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUE4NjJENTBEN0Yy
QjVDMDAxRUM2QUEgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLzsgfTsNCiAJCUUxRUU3OTNEMEQ2
QzlCOTIwMEZFQTNCQSAvKiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNzkzQzBENkM5QjkyMDBGRUEzQkEgLyog
VGhyZWFkaW5nUHRocmVhZHMuY3BwICovOyB9Ow0KIAkJRTFFRjc5QUEwQ0U5N0JBNjAwODhENTAw
IC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFFRjc5QTgwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwICovOyB9Ow0KKwkJRTQ2Njgw
REQwRjJGMEFGQjAwNTYwMjgwIC8qIFR5cGVUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NjY4MERDMEYyRjBBRkIwMDU2MDI4MCAvKiBUeXBl
VHJhaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsN
CisJCUU0NjY4MERGMEYyRjBCMjgwMDU2MDI4MCAvKiBGYXN0QWxsb2NCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDY2ODBERTBGMkYwQjI4MDA1
NjAyODAgLyogRmFzdEFsbG9jQmFzZS5oICovOyB9Ow0KIAkJRkUxQjQ0N0EwRUNDRDczQjAwNEY0
REQxIC8qIFN0ZExpYkV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUxQjQ0NzkwRUNDRDczQjAwNEY0REQxIC8qIFN0ZExpYkV4dHJhcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07DQogLyogRW5kIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovDQogDQpAQCAtNzc3LDYgKzc3OSw4IEBADQogCQlFMUVFNzk4
QjBENkNBNTNEMDBGRUEzQkEgLyogTWVzc2FnZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lc3NhZ2VRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0K
IAkJRTFFRjc5QTgwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVVRGOC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
DQogCQlFMUVGNzlBOTBDRTk3QkE2MDA4OEQ1MDAgLyogVVRGOC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVVEY4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07DQorCQlF
NDY2ODBEQzBGMkYwQUZCMDA1NjAyODAgLyogVHlwZVRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUeXBlVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
DQorCQlFNDY2ODBERTBGMkYwQjI4MDA1NjAyODAgLyogRmFzdEFsbG9jQmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0QWxsb2NCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07DQogCQlGNUJCMkJDNTAzMEY3NzIxMDFGQ0ZFMUQgLyogQ29tcGxldGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21w
bGV0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsNCiAJCUY1
QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q29y
ZVByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07DQogCQlG
NjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07DQpAQCAtMTA3NiwxMiArMTA4MCwxNCBAQA0KIAkJNjUx
NjJFRjEwOEU2QTIxQzAwNzU1NkNEIC8qIHd0ZiAqLyA9IHsNCiAJCQlpc2EgPSBQQlhHcm91cDsN
CiAJCQljaGlsZHJlbiA9ICgNCisJCQkJRTQ2NjgwREUwRjJGMEIyODAwNTYwMjgwIC8qIEZhc3RB
bGxvY0Jhc2UuaCAqLywNCiAJCQkJMDZEMzU4QTAwREFBRDlDNDAwM0IxNzRFIC8qIG1hYyAqLywN
CiAJCQkJRTE5NTY3OEQwOUU3Q0YxMjAwQjg5RDEzIC8qIHVuaWNvZGUgKi8sDQogCQkJCTkzOEM0
RjY5MENBMDZCQzcwMEQ5MzEwQSAvKiBBU0NJSUNUeXBlLmggKi8sDQogCQkJCUUxQTU5NjM3MERF
M0UxQzMwMEMxN0UzNyAvKiBBVkxUcmVlLmggKi8sDQogCQkJCTkzQUE0Rjc3MDk1NzI1MUYwMDg0
QjNBNyAvKiBBbHdheXNJbmxpbmUuaCAqLywNCiAJCQkJNjVFMjE3QjgwOEU3RUVDQzAwMjNFNUY2
IC8qIEFzc2VydGlvbnMuY3BwICovLA0KKwkJCQlFNDY2ODBEQzBGMkYwQUZCMDA1NjAyODAgLyog
VHlwZVRyYWl0cy5oICovLA0KIAkJCQk2NUUyMTdCNzA4RTdFRUNDMDAyM0U1RjYgLyogQXNzZXJ0
aW9ucy5oICovLA0KIAkJCQlBN0ExRjdBQTBGMjUyQjNDMDBFMTg0RTIgLyogQnl0ZUFycmF5LmNw
cCAqLywNCiAJCQkJQTdBMUY3QUIwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVBcnJheS5oICovLA0K
QEAgLTE3MDAsNiArMTcwNiw4IEBADQogCQkJCUJDMThDNDRFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBw
Y3JlX2ludGVybmFsLmggaW4gSGVhZGVycyAqLywNCiAJCQkJQkMxOEM0NzIwRTE2RjVDRDAwQjM0
NDYwIC8qIHVjcGludGVybmFsLmggaW4gSGVhZGVycyAqLywNCiAJCQkJQTdBMUY3QUQwRjI1MkIz
QzAwRTE4NEUyIC8qIEJ5dGVBcnJheS5oIGluIEhlYWRlcnMgKi8sDQorCQkJCUU0NjY4MEREMEYy
RjBBRkIwMDU2MDI4MCAvKiBUeXBlVHJhaXRzLmggaW4gSGVhZGVycyAqLywNCisJCQkJRTQ2Njgw
REYwRjJGMEIyODAwNTYwMjgwIC8qIEZhc3RBbGxvY0Jhc2UuaCBpbiBIZWFkZXJzICovLA0KIAkJ
CSk7DQogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7DQogCQl9Ow0K
</data>
<flag name="review"
          id="13016"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29272</attachid>
            <date>2009-04-06 01:21:12 -0700</date>
            <delta_ts>2009-04-06 09:32:04 -0700</delta_ts>
            <desc>Same patch as before but updated to work with r42235 (April 6, 2009)</desc>
            <filename>FastMalloc2.patch</filename>
            <type>text/plain</type>
            <size>67071</size>
            <attacher name="Paul Pedriana">ppedriana</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDQyMjM1KQ0KKysrIEphdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpDQpAQCAtNDI5LDYgKzQyOSw3IEBA
DQogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHJhY2luZy5oIFwNCiAJSmF2YVNjcmlwdENvcmUv
cnVudGltZS9VU3RyaW5nLmNwcCBcDQogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5o
IFwNCisJSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RBbGxvY0Jhc2UuaCBcDQogCUphdmFTY3JpcHRD
b3JlL3d0Zi9GYXN0TWFsbG9jLmNwcCBcDQogCUphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9j
LmggXA0KIAlKYXZhU2NyaXB0Q29yZS93dGYvTWFsbG9jWm9uZVN1cHBvcnQuaCBcDQpJbmRleDog
SmF2YVNjcmlwdENvcmUvd3RmL1R5cGVUcmFpdHMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL3d0Zi9UeXBlVHJhaXRzLmgJKHJldmlzaW9uIDQyMjM1KQ0KKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9UeXBlVHJhaXRzLmgJKHdvcmtpbmcgY29weSkNCkBAIC0yNCw2ICsyNCwxMCBAQA0K
IA0KICNpbmNsdWRlICJQbGF0Zm9ybS5oIg0KIA0KKyNpZiAoZGVmaW5lZChfX0dMSUJDWFhfXykg
JiYgKF9fR0xJQkNYWF9fID49IDIwMDcwNzI0KSkgfHwgKGRlZmluZWQoX01TQ19WRVIpICYmIChf
TVNDX1ZFUiA+PSAxNjAwKSkNCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+DQorI2VuZGlmDQorDQog
bmFtZXNwYWNlIFdURiB7DQogDQogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIHByb3ZpZGVkIGlu
IHRoaXMgZmlsZToNCkBAIC0xMjgsNiArMTMyLDIwOCBAQA0KICAgICAgICAgdHlwZWRlZiBUIFR5
cGU7DQogICAgIH07DQogDQorI2lmIChkZWZpbmVkKF9fR0xJQkNYWF9fKSAmJiAoX19HTElCQ1hY
X18gPj0gMjAwNzA3MjQpKSB8fCAoZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE2
MDApKQ0KKw0KKyAgICAvLyBHQ0MncyBsaWJzdGRjKysgMjAwNzA3MjQgYW5kIGxhdGVyIHN1cHBv
cnRzIEMrKyBUUjEgdHlwZV90cmFpdHMgaW4gdGhlIHN0ZCBuYW1lc3BhY2UuDQorICAgIC8vIFZD
MTAgKFZTMjAxMCkgYW5kIGxhdGVyIHN1cHBvcnQgQysrIFRSMSB0eXBlX3RyYWl0cyBpbiB0aGUg
c3RkOjp0cjEgbmFtZXNwYWNlLg0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFz
VHJpdmlhbENvbnN0cnVjdG9yIDogcHVibGljIHN0ZDo6dHIxOjpoYXNfdHJpdmlhbF9jb25zdHJ1
Y3RvcjxUPiB7IH07DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNUcml2aWFs
RGVzdHJ1Y3RvciA6IHB1YmxpYyBzdGQ6OnRyMTo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPiB7
IH07DQorDQorI2Vsc2UNCisNCisgICAgLy8gVGhpcyBjb21waWxlciBkb2Vzbid0IHByb3ZpZGUg
dHlwZSB0cmFpdHMsIHNvIHdlIHByb3ZpZGUgYmFzaWMgSGFzVHJpdmlhbENvbnN0cnVjdG9yDQor
ICAgIC8vIGFuZCBIYXNUcml2aWFsRGVzdHJ1Y3RvciBkZWZpbml0aW9ucy4gVGhlIGRlZmluaXRp
b25zIGhlcmUgaW5jbHVkZSBtb3N0IGJ1aWx0LWluIA0KKyAgICAvLyBzY2FsYXIgdHlwZXMgYnV0
IGRvIG5vdCBpbmNsdWRlIFBPRCBzdHJ1Y3RzIGFuZCBjbGFzc2VzLiBGb3IgdGhlIGludGVuZGVk
IHB1cnBvc2VzIG9mIA0KKyAgICAvLyB0eXBlX3RyYWl0cyB0aGlzIHJlc3VsdHMgY29ycmVjdCBi
dXQgcG90ZW50aWFsbHkgbGVzcyBlZmZpY2llbnQgY29kZS4NCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIFQgdj4NCisgICAgc3RydWN0IEludGVncmFsQ29uc3RhbnQgew0KKyAgICAgICAgc3Rh
dGljIGNvbnN0IFQgdmFsdWUgPSB2Ow0KKyAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7DQor
ICAgICAgICB0eXBlZGVmIEludGVncmFsQ29uc3RhbnQ8VCwgdj4gdHlwZTsNCisgICAgfTsNCisN
CisgICAgdHlwZWRlZiBJbnRlZ3JhbENvbnN0YW50PGJvb2wsIHRydWU+ICB0cnVlX3R5cGU7DQor
ICAgIHR5cGVkZWYgSW50ZWdyYWxDb25zdGFudDxib29sLCBmYWxzZT4gZmFsc2VfdHlwZTsNCisN
CisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE0MDApDQorICAgIC8vIFZD
OCAoVlMyMDA1KSBhbmQgbGF0ZXIgaGF2ZSBidWlsdC1pbiBjb21waWxlciBzdXBwb3J0IGZvciBI
YXNUcml2aWFsQ29uc3RydWN0b3IgLyBIYXNUcml2aWFsRGVzdHJ1Y3RvciwgDQorICAgIC8vIGJ1
dCBmb3Igc29tZSB1bmV4cGxhaW5lZCByZWFzb24gaXQgZG9lc24ndCB3b3JrIG9uIGJ1aWx0LWlu
IHR5cGVzLg0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEhhc1RyaXZpYWxDb25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlZ3JhbENvbnN0YW50PGJvb2wsIF9faGFzX3RyaXZpYWxfY29u
c3RydWN0b3IoVCk+eyB9Ow0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEhhc1Ry
aXZpYWxEZXN0cnVjdG9yIDogcHVibGljIEludGVncmFsQ29uc3RhbnQ8Ym9vbCwgX19oYXNfdHJp
dmlhbF9kZXN0cnVjdG9yKFQpPnsgfTsNCisjZWxzZQ0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3RvciA6IHB1YmxpYyBmYWxzZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yIDog
cHVibGljIGZhbHNlX3R5cGV7IH07DQorI2VuZGlmDQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPFQqPiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07DQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0
b3I8VCo+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxDb25zdHJ1Y3RvcjxmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IGZsb2F0PiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
Q29uc3RydWN0b3I8dm9sYXRpbGUgZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAg
dGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBm
bG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbENvbnN0cnVjdG9yPGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IGRvdWJsZT4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bENvbnN0cnVjdG9yPHZvbGF0aWxlIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxl
IGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qg
bG9uZyBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSBsb25nIGRvdWJsZT4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVj
dG9yPGNvbnN0IHZvbGF0aWxlIGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQor
DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dW5zaWduZWQg
Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFz
VHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlw
ZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xh
dGlsZSB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQg
Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbENvbnN0cnVjdG9yPHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qg
dW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydD4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENv
bnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8
dW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0
b3I8dm9sYXRpbGUgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5z
aWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNv
bnN0IHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBsb25nPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
Q29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9y
PHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
Zz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJp
dmlhbENvbnN0cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9y
PGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHNpZ25l
ZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBI
YXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlw
ZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xh
dGlsZSBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBjaGFy
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsQ29uc3RydWN0b3I8c2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgc2lnbmVk
IHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBI
YXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8
Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8c2lnbmVkIGludD4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bENvbnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSBzaWdu
ZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBI
YXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGludD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0
cnVjdG9yPHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGxvbmc+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25z
dHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxl
IHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8c2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVj
dG9yPGNvbnN0IHNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAg
dGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQg
bG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9uZz4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJp
dmlhbENvbnN0cnVjdG9yPGJvb2w+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxh
dGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBib29sPiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0
b3I8dm9sYXRpbGUgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGJvb2w+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxD
b25zdHJ1Y3RvcjxjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3QgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHZv
bGF0aWxlIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBjaGFyPiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorDQorICAgICNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChf
TkFUSVZFX1dDSEFSX1RfREVGSU5FRCkNCisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsQ29uc3RydWN0b3I8d2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICAg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB3Y2hhcl90
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFz
VHJpdmlhbENvbnN0cnVjdG9yPHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsg
fTsNCisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29u
c3Qgdm9sYXRpbGUgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICAjZW5kaWYN
CisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGZsb2F0PiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
RGVzdHJ1Y3Rvcjxjb25zdCBmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgZmxvYXQ+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0
cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGZsb2F0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxkb3VibGU+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0
cnVjdG9yPGNvbnN0IGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgZG91YmxlPiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1
Y3Rvcjxjb25zdCB2b2xhdGlsZSBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisNCisg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGxvbmcgZG91YmxlPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
RGVzdHJ1Y3Rvcjxjb25zdCBsb25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgbG9uZyBk
b3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhh
c1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1
Y3Rvcjx1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBjaGFyPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVz
dHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGls
ZSB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0
b3I8Y29uc3QgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3Ry
dWN0b3I8dW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBpbnQ+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0
cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUg
dW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxj
b25zdCB1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBsb25nPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
RGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx1
bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZz4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bERlc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25z
dCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisN
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHNpZ25lZCBjaGFy
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2
aWFsRGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgc2ln
bmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVz
dHJ1Y3RvcjxzaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxh
dGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBzaG9ydD4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERl
c3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGls
ZSBzaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVf
dHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNv
bnN0IHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBpbnQ+IDogcHVibGlj
IHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVj
dG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisN
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHNpZ25lZCBsb25n
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2
aWFsRGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgc2ln
bmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBsb25nPiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVz
dHJ1Y3RvcjxzaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQgbG9uZyBs
b25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxj
b25zdCB2b2xhdGlsZSBzaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQor
DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxib29sPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVz
dHJ1Y3Rvcjxjb25zdCBib29sPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSBib29sPiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rv
cjxjb25zdCB2b2xhdGlsZSBib29sPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3RvcjxjaGFyPiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxj
b25zdCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2
b2xhdGlsZSBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgICNpZiAhZGVmaW5l
ZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkNCisgICAgICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx3Y2hhcl90PiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07DQorICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERl
c3RydWN0b3I8Y29uc3Qgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICAgICAg
dGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIHdjaGFyX3Q+
IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorICAgICNlbmRpZg0KKw0KKyNlbmRpZiAgLy8gX19HTElCQ1hYX18sIGV0Yy4NCisN
CiB9IC8vIG5hbWVzcGFjZSBXVEYNCiANCiAjZW5kaWYgLy8gVHlwZVRyYWl0c19oDQpJbmRleDog
SmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgJKHJldmlzaW9uIDQyMjM1KQ0KKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9GYXN0TWFsbG9jLmgJKHdvcmtpbmcgY29weSkNCkBAIC01Niw2ICs1Niw5NSBAQA0K
ICAgICB9Ow0KICAgICBGYXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcygp
Ow0KIA0KKyAgICAvLyBUaGlzIGRlZmluZXMgYSB0eXBlIHdoaWNoIGhvbGRzIGFuIHVuc2lnbmVk
IGludGVnZXIgYW5kIGlzIHRoZSBzYW1lIA0KKyAgICAvLyBzaXplIGFzIHRoZSBtaW5pbWFsbHkg
YWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbi4NCisgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyOw0KKw0KKyAgICBuYW1lc3BhY2UgSW50ZXJuYWwgew0K
KyAgICAgICAgZW51bSBBbGxvY1R5cGUgeyAgICAgICAgICAgICAgICAgICAgLy8gU3RhcnQgd2l0
aCBhbiB1bnVzdWFsIG51bWJlciBpbnN0ZWFkIG9mIHplcm8sIGJlY2F1c2UgemVybyBpcyBjb21t
b24uDQorICAgICAgICAgICAgQWxsb2NUeXBlTWFsbG9jID0gMHgzNzVkNjc1MCwgICAvLyBFbmNv
bXBhc3NlcyBmYXN0TWFsbG9jLCBmYXN0WmVyb2VkTWFsbG9jLCBmYXN0Q2FsbG9jLCBmYXN0UmVh
bGxvYy4NCisgICAgICAgICAgICBBbGxvY1R5cGVDbGFzc05ldywgICAgICAgICAgICAgIC8vIEVu
Y29tcGFzc2VzIGNsYXNzIG9wZXJhdG9yIG5ldyBmcm9tIEZhc3RBbGxvY0Jhc2UuIA0KKyAgICAg
ICAgICAgIEFsbG9jVHlwZUNsYXNzTmV3QXJyYXksICAgICAgICAgLy8gRW5jb21wYXNzZXMgY2xh
c3Mgb3BlcmF0b3IgbmV3W10gZnJvbSBGYXN0QWxsb2NCYXNlLiANCisgICAgICAgICAgICBBbGxv
Y1R5cGVGYXN0TmV3LCAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGZhc3ROZXcuDQorICAg
ICAgICAgICAgQWxsb2NUeXBlRmFzdE5ld0FycmF5LCAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBm
YXN0TmV3QXJyYXkuDQorICAgICAgICAgICAgQWxsb2NUeXBlTmV3LCAgICAgICAgICAgICAgICAg
ICAvLyBFbmNvbXBhc3NlcyBnbG9iYWwgb3BlcmF0b3IgbmV3Lg0KKyAgICAgICAgICAgIEFsbG9j
VHlwZU5ld0FycmF5ICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9y
IG5ld1tdLg0KKyAgICAgICAgfTsNCisgICAgfQ0KKw0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0Nf
TUFUQ0hfVkFMSURBVElPTikNCisNCisgICAgLy8gTWFsbG9jIHZhbGlkYXRpb24gaXMgYSBzY2hl
bWUgd2hlcmVieSBhIHRhZyBpcyBhdHRhY2hlZCB0byBhbiANCisgICAgLy8gYWxsb2NhdGlvbiB3
aGljaCBpZGVudGlmaWVzIGhvdyBpdCB3YXMgb3JpZ2luYWxseSBhbGxvY2F0ZWQuIA0KKyAgICAv
LyBUaGlzIGFsbG93cyB1cyB0byB2ZXJpZnkgdGhhdCB0aGUgZnJlZWluZyBvcGVyYXRpb24gbWF0
Y2hlcyB0aGUgDQorICAgIC8vIGFsbG9jYXRpb24gb3BlcmF0aW9uLiBJZiBtZW1vcnkgaXMgYWxs
b2NhdGVkIHdpdGggb3BlcmF0b3IgbmV3W10gDQorICAgIC8vIGJ1dCBmcmVlZCB3aXRoIGZyZWUg
b3IgZGVsZXRlLCB0aGlzIHN5c3RlbSB3b3VsZCBkZXRlY3QgdGhhdC4gDQorICAgIC8vIEluIHRo
ZSBpbXBsZW1lbnRhdGlvbiBoZXJlLCB0aGUgdGFnIGlzIGFuIGludGVnZXIgcHJlcGVuZGVkIHRv
IA0KKyAgICAvLyB0aGUgYWxsb2NhdGlvbiBtZW1vcnkgd2hpY2ggaXMgYXNzaWduZWQgb25lIG9m
IHRoZSBBbGxvY1R5cGUNCisgICAgLy8gZW51bWVyYXRpb24gdmFsdWVzLiBBbiBhbHRlcm5hdGl2
ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIA0KKyAgICAvLyBzY2hlbWUgY291bGQgc3RvcmUgdGhl
IHRhZyBzb21ld2hlcmUgZWxzZSBvciBpZ25vcmUgaXQuIA0KKyAgICAvLyBVc2VycyBvZiBGYXN0
TWFsbG9jIGRvbid0IG5lZWQgdG8ga25vdyBvciBjYXJlIGhvdyB0aGlzIHRhZ2dpbmcgDQorICAg
IC8vIGlzIGltcGxlbWVudGVkLiANCisNCisgICAgbmFtZXNwYWNlIEludGVybmFsIHsNCisNCisg
ICAgICAgIC8vIFJldHVybiB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlIGFs
bG9jYXRlZCBibG9jayBwLg0KKyAgICAgICAgaW5saW5lIEFsbG9jVHlwZSBmYXN0TWFsbG9jTWF0
Y2hWYWxpZGF0aW9uVHlwZShjb25zdCB2b2lkKiBwKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAg
IGNvbnN0IEFsbG9jQWxpZ25tZW50SW50ZWdlciogdHlwZSA9IHN0YXRpY19jYXN0PGNvbnN0IEFs
bG9jQWxpZ25tZW50SW50ZWdlcio+KHApIC0gMTsNCisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8QWxsb2NUeXBlPigqdHlwZSk7DQorICAgICAgICB9DQorDQorICAgICAgICAvLyBSZXR1
cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIEFsbG9jVHlwZSB0YWcgYXNzb2NpYXRlZCB3aXRoIHRoZSBh
bGxvY2F0ZWQgYmxvY2sgcC4NCisgICAgICAgIGlubGluZSBBbGxvY0FsaWdubWVudEludGVnZXIq
IGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1ZSh2b2lkKiBwKQ0KKyAgICAgICAgew0KKyAg
ICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+
KHN0YXRpY19jYXN0PGNoYXIqPihwKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpKTsN
CisgICAgICAgIH0NCisNCisgICAgICAgIC8vIFNldCB0aGUgQWxsb2NUeXBlIHRhZyB0byBiZSBh
c3NvY2lhZ2VkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLg0KKyAgICAgICAgaW5saW5lIHZv
aWQgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUodm9pZCogcCwgQWxsb2NUeXBlIGFs
bG9jVHlwZSkNCisgICAgICAgIHsNCisgICAgICAgICAgICBBbGxvY0FsaWdubWVudEludGVnZXIq
IHR5cGUgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihwKSAtIDE7DQorICAg
ICAgICAgICAgKnR5cGUgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXI+KGFsbG9j
VHlwZSk7DQorICAgICAgICB9DQorDQorICAgICAgICAvLyBIYW5kbGUgYSBkZXRlY3RlZCBhbGxv
Yy9mcmVlIG1pc21hdGNoLiBCeSBkZWZhdWx0IHRoaXMgY2FsbHMgQ1JBU0goKS4NCisgICAgICAg
IHZvaWQgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHZvaWQqIHApOw0KKw0KKyAgICB9IC8vIG5hbWVz
cGFjZSBJbnRlcm5hbA0KKw0KKyAgICAvLyBUaGlzIGlzIGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9u
IHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2luZyBjb2RlLg0KKyAgICBpbmxpbmUgdm9p
ZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyh2b2lkKiBwLCBJbnRlcm5hbDo6QWxsb2NU
eXBlIGFsbG9jVHlwZSkNCisgICAgew0KKyAgICAgICAgaWYgKCFwKQ0KKyAgICAgICAgICAgIHJl
dHVybjsNCisNCisgICAgICAgIEludGVybmFsOjpzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9u
VHlwZShwLCBhbGxvY1R5cGUpOw0KKyAgICB9DQorDQorICAgIC8vIFRoaXMgaXMgYSBoaWdoZXIg
bGV2ZWwgZnVuY3Rpb24gd2hpY2ggaXMgdXNlZCBieSBGYXN0TWFsbG9jLXVzaW5nIGNvZGUuDQor
ICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZSh2b2lkKiBwLCBJbnRl
cm5hbDo6QWxsb2NUeXBlIGFsbG9jVHlwZSkNCisgICAgew0KKyAgICAgICAgaWYgKCFwKQ0KKyAg
ICAgICAgICAgIHJldHVybjsNCisNCisgICAgICAgIGlmIChJbnRlcm5hbDo6ZmFzdE1hbGxvY01h
dGNoVmFsaWRhdGlvblR5cGUocCkgIT0gYWxsb2NUeXBlKQ0KKyAgICAgICAgICAgIEludGVybmFs
OjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7DQorICAgICAgICBJbnRlcm5hbDo6c2V0RmFzdE1h
bGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCwgSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYyk7ICAv
LyBTZXQgaXQgdG8gdGhpcyBzbyB0aGF0IGZhc3RGcmVlIHRoaW5rcyBpdCdzIE9LLg0KKyAgICB9
DQorDQorI2Vsc2UNCisNCisgICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVN
YWxsb2Modm9pZCosIEludGVybmFsOjpBbGxvY1R5cGUpDQorICAgIHsNCisgICAgfQ0KKw0KKyAg
ICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCosIEludGVybmFs
OjpBbGxvY1R5cGUpDQorICAgIHsNCisgICAgfQ0KKw0KKyNlbmRpZg0KKw0KIH0gLy8gbmFtZXNw
YWNlIFdURg0KIA0KIHVzaW5nIFdURjo6ZmFzdE1hbGxvYzsNCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvRmFzdEFsbG9jQmFzZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L0Zhc3RBbGxvY0Jhc2UuaAkocmV2aXNpb24gMCkNCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRmFz
dEFsbG9jQmFzZS5oCShyZXZpc2lvbiAwKQ0KQEAgLTAsMCArMSw0MDIgQEANCisvLyAtKi0gbW9k
ZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0NCisNCisvKg0KKyAqIENvcHlyaWdodCAoQykg
MjAwOCBQYXVsIFBlZHJpYW5hLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zDQorICogYXJlIG1ldDoNCisgKg0KKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuDQorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4NCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZg0KKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4NCisgKg0KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZDQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRA0K
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUNCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZDQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMNCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7DQorICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EDQor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQNCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YNCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0K
KyAqLw0KKw0KKyNpZm5kZWYgV1RGX0Zhc3RBbGxvY0Jhc2VfaA0KKyNkZWZpbmUgV1RGX0Zhc3RB
bGxvY0Jhc2VfaA0KKw0KKy8vIFByb3ZpZGVzIGN1c3RvbWl6YWJsZSBvdmVycmlkZXMgb2YgZmFz
dE1hbGxvYy9mYXN0RnJlZSBhbmQgb3BlcmF0b3IgbmV3L2RlbGV0ZQ0KKy8vDQorLy8gUHJvdmlk
ZWQgZnVuY3Rpb25hbGl0eToNCisvLyAgICBuYW1lc3BhY2UgV1RGIHsgDQorLy8gICAgICAgIGNs
YXNzIEZhc3RBbGxvY0Jhc2U7DQorLy8NCisvLyAgICAgICAgVCogICAgZmFzdE5ldzxUPigpOw0K
Ky8vICAgICAgICBUKiAgICBmYXN0TmV3PFQ+KGFyZyk7DQorLy8gICAgICAgIFQqICAgIGZhc3RO
ZXc8VD4oYXJnLCBhcmcpOw0KKy8vICAgICAgICBUKiAgICBmYXN0TmV3QXJyYXk8VD4oY291bnQp
Ow0KKy8vICAgICAgICB2b2lkICBmYXN0RGVsZXRlKFQqIHApOw0KKy8vICAgICAgICB2b2lkICBm
YXN0RGVsZXRlQXJyYXkoVCogcCk7DQorLy8gICAgICAgIHZvaWQgIGZhc3ROb25OdWxsRGVsZXRl
KFQqIHApOw0KKy8vICAgICAgICB2b2lkICBmYXN0Tm9uTnVsbERlbGV0ZUFycmF5KFQqIHApOw0K
Ky8vICAgIH0NCisvLw0KKy8vIEZhc3REZWxldGUgYXNzdW1lcyB0aGF0IHRoZSB1bmRlcmx5aW5n
IA0KKy8vDQorLy8gRXhhbXBsZSB1c2FnZToNCisvLyAgICBjbGFzcyBXaWRnZXQgOiBwdWJsaWMg
RmFzdEFsbG9jQmFzZSB7IC4uLiB9Ow0KKy8vDQorLy8gICAgY2hhciogY2hhclB0ciA9IGZhc3RO
ZXc8Y2hhcj4oKTsNCisvLyAgICBmYXN0RGVsZXRlKGNoYXJQdHIpOw0KKy8vDQorLy8gICAgY2hh
ciogY2hhckFycmF5UHRyID0gZmFzdE5ld0FycmF5PGNoYXI+KDM3KTsNCisvLyAgICBmYXN0RGVs
ZXRlQXJyYXkoY2hhckFycmF5UHRyKTsNCisvLw0KKy8vICAgIHZvaWQqKiB2b2lkUHRyUHRyID0g
ZmFzdE5ldzx2b2lkKj4oKTsNCisvLyAgICBmYXN0RGVsZXRlKHZvaWRQdHJQdHIpOw0KKy8vDQor
Ly8gICAgdm9pZCoqIHZvaWRQdHJBcnJheVB0ciA9IGZhc3ROZXdBcnJheTx2b2lkKj4oMzcpOw0K
Ky8vICAgIGZhc3REZWxldGVBcnJheSh2b2lkUHRyQXJyYXlQdHIpOw0KKy8vDQorLy8gICAgUE9E
KiBwb2RQdHIgPSBmYXN0TmV3PFBPRD4oKTsNCisvLyAgICBmYXN0RGVsZXRlKHBvZFB0cik7DQor
Ly8NCisvLyAgICBQT0QqIHBvZEFycmF5UHRyID0gZmFzdE5ld0FycmF5PFBPRD4oMzcpOw0KKy8v
ICAgIGZhc3REZWxldGVBcnJheShwb2RBcnJheVB0cik7DQorLy8NCisvLyAgICBPYmplY3QqIG9i
amVjdFB0ciA9IGZhc3ROZXc8T2JqZWN0PigpOw0KKy8vICAgIGZhc3REZWxldGUob2JqZWN0UHRy
KTsNCisvLw0KKy8vICAgIE9iamVjdCogb2JqZWN0QXJyYXlQdHIgPSBmYXN0TmV3QXJyYXk8T2Jq
ZWN0PigzNyk7DQorLy8gICAgZmFzdERlbGV0ZUFycmF5KG9iamVjdEFycmF5UHRyKTsNCisvLw0K
Kw0KKyNpbmNsdWRlIDxuZXc+DQorI2luY2x1ZGUgPHN0ZGludC5oPg0KKyNpbmNsdWRlIDxzdGRs
aWIuaD4NCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
DQorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+DQorI2luY2x1ZGUgPHd0Zi9UeXBlVHJhaXRz
Lmg+DQorDQorbmFtZXNwYWNlIFdURiB7DQorDQorICAgIGNsYXNzIEZhc3RBbGxvY0Jhc2Ugew0K
KyAgICBwdWJsaWM6DQorICAgICAgICAvLyBQbGFjZW1lbnQgb3BlcmF0b3IgbmV3Lg0KKyAgICAg
ICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfQ0KKyAg
ICAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9
DQorDQorICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpDQorICAgICAgICB7
DQorICAgICAgICAgICAgdm9pZCogcCA9IGZhc3RNYWxsb2Moc2l6ZSk7DQorICAgICAgICAgICAg
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUNsYXNz
TmV3KTsNCisgICAgICAgICAgICByZXR1cm4gcDsNCisgICAgICAgIH0NCisNCisgICAgICAgIHZv
aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApDQorICAgICAgICB7DQorICAgICAgICAgICAgZmFz
dE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIEludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7
DQorICAgICAgICAgICAgZmFzdEZyZWUocCk7DQorICAgICAgICB9DQorDQorICAgICAgICB2b2lk
KiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkNCisgICAgICAgIHsNCisgICAgICAgICAgICB2
b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplKTsNCisgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXdBcnJheSk7DQorICAg
ICAgICAgICAgcmV0dXJuIHA7DQorICAgICAgICB9DQorDQorICAgICAgICB2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQqIHApDQorICAgICAgICB7DQorICAgICAgICAgICAgZmFzdE1hbGxvY01h
dGNoVmFsaWRhdGVGcmVlKHAsIEludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsNCisg
ICAgICAgICAgICBmYXN0RnJlZShwKTsNCisgICAgICAgIH0NCisgICAgfTsNCisNCisgICAgLy8g
ZmFzdE5ldyAvIGZhc3REZWxldGUNCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQorICAg
IGlubGluZSBUKiBmYXN0TmV3KCkNCisgICAgew0KKyAgICAgICAgdm9pZCogcCA9IGZhc3RNYWxs
b2Moc2l6ZW9mKFQpKTsNCisNCisgICAgICAgIGlmICghcCkNCisgICAgICAgICAgICByZXR1cm4g
MDsNCisNCisgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFs
OjpBbGxvY1R5cGVGYXN0TmV3KTsNCisgICAgICAgIHJldHVybiA6Om5ldyhwKSBUOw0KKyAgICB9
DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcxPg0KKyAgICBpbmxp
bmUgVCogZmFzdE5ldyhBcmcxIGFyZzEpDQorICAgIHsNCisgICAgICAgIHZvaWQqIHAgPSBmYXN0
TWFsbG9jKHNpemVvZihUKSk7DQorDQorICAgICAgICBpZiAoIXApDQorICAgICAgICAgICAgcmV0
dXJuIDA7DQorDQorICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRl
cm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7DQorICAgICAgICByZXR1cm4gOjpuZXcocCkgVChhcmcx
KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMSwg
dHlwZW5hbWUgQXJnMj4NCisgICAgaW5saW5lIFQqIGZhc3ROZXcoQXJnMSBhcmcxLCBBcmcyIGFy
ZzIpDQorICAgIHsNCisgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihUKSk7DQor
DQorICAgICAgICBpZiAoIXApDQorICAgICAgICAgICAgcmV0dXJuIDA7DQorDQorICAgICAgICBm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5l
dyk7DQorICAgICAgICByZXR1cm4gOjpuZXcocCkgVChhcmcxLCBhcmcyKTsNCisgICAgfQ0KKw0K
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwg
dHlwZW5hbWUgQXJnMz4NCisgICAgaW5saW5lIFQqIGZhc3ROZXcoQXJnMSBhcmcxLCBBcmcyIGFy
ZzIsIEFyZzMgYXJnMykNCisgICAgew0KKyAgICAgICAgdm9pZCogcCA9IGZhc3RNYWxsb2Moc2l6
ZW9mKFQpKTsNCisNCisgICAgICAgIGlmICghcCkNCisgICAgICAgICAgICByZXR1cm4gMDsNCisN
CisgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFsOjpBbGxv
Y1R5cGVGYXN0TmV3KTsNCisgICAgICAgIHJldHVybiA6Om5ldyhwKSBUKGFyZzEsIGFyZzIsIGFy
ZzMpOw0KKyAgICB9DQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcx
LCB0eXBlbmFtZSBBcmcyLCB0eXBlbmFtZSBBcmczLCB0eXBlbmFtZSBBcmc0Pg0KKyAgICBpbmxp
bmUgVCogZmFzdE5ldyhBcmcxIGFyZzEsIEFyZzIgYXJnMiwgQXJnMyBhcmczLCBBcmc0IGFyZzQp
DQorICAgIHsNCisgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihUKSk7DQorDQor
ICAgICAgICBpZiAoIXApDQorICAgICAgICAgICAgcmV0dXJuIDA7DQorDQorICAgICAgICBmYXN0
TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7
DQorICAgICAgICByZXR1cm4gOjpuZXcocCkgVChhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsNCisg
ICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMSwgdHlwZW5h
bWUgQXJnMiwgdHlwZW5hbWUgQXJnMywgdHlwZW5hbWUgQXJnNCwgdHlwZW5hbWUgQXJnNT4NCisg
ICAgaW5saW5lIFQqIGZhc3ROZXcoQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZzMgYXJnMywgQXJn
NCBhcmc0LCBBcmc1IGFyZzUpDQorICAgIHsNCisgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9j
KHNpemVvZihUKSk7DQorDQorICAgICAgICBpZiAoIXApDQorICAgICAgICAgICAgcmV0dXJuIDA7
DQorDQorICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6
QWxsb2NUeXBlRmFzdE5ldyk7DQorICAgICAgICByZXR1cm4gOjpuZXcocCkgVChhcmcxLCBhcmcy
LCBhcmczLCBhcmc0LCBhcmc1KTsNCisgICAgfQ0KKw0KKyAgICBuYW1lc3BhY2UgSW50ZXJuYWwg
ew0KKw0KKyAgICAgICAgLy8gV2UgZGVmaW5lIGEgdW5pb24gb2YgcG9pbnRlciB0byBhbiBpbnRl
Z2VyIGFuZCBwb2ludGVyIHRvIFQuDQorICAgICAgICAvLyBXaGVuIG5vbi1QT0QgYXJyYXlzIGFy
ZSBhbGxvY2F0ZWQgd2UgYWRkIGEgZmV3IGxlYWRpbmcgYnl0ZXMgdG8gdGVsbCB3aGF0DQorICAg
ICAgICAvLyB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgaXMuIFdlIHJldHVybiB0byB0aGUgdXNlciB0
aGUgcG9pbnRlciB0byBULg0KKyAgICAgICAgLy8gVGhlIHdheSB0byB0aGluayBvZiBpdCBpcyBh
cyBpZiB3ZSBhbGxvY2F0ZSBhIHN0cnVjdCBsaWtlIHNvOg0KKyAgICAgICAgLy8gICAgc3RydWN0
IEFycmF5IHsNCisgICAgICAgIC8vICAgICAgICBBbGxvY0FsaWdubWVudEludGVnZXIgbV9zaXpl
Ow0KKyAgICAgICAgLy8gICAgICAgIFQgbV9UW2FycmF5IGNvdW50XTsNCisgICAgICAgIC8vICAg
IH07DQorDQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisgICAgICAgIHVuaW9uIEFy
cmF5U2l6ZSB7DQorICAgICAgICAgICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBzaXplOw0KKyAg
ICAgICAgICAgIFQqIHQ7DQorICAgICAgICB9Ow0KKw0KKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1
cHBvcnQgdGVtcGxhdGUgZm9yIGZhc3ROZXdBcnJheS4NCisgICAgICAgIC8vIFRoaXMgaGFuZGxl
cyB0aGUgY2FzZSB3aGVyZWluIFQgaGFzIGEgdHJpdmlhbCBjdG9yIGFuZCBhIHRyaXZpYWwgZHRv
ci4NCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIHRyaXZpYWxDdG9yLCBib29s
IHRyaXZpYWxEdG9yPg0KKyAgICAgICAgc3RydWN0IE5ld0FycmF5SW1wbCB7DQorICAgICAgICAg
ICAgc3RhdGljIFQqIGZhc3ROZXdBcnJheShzaXplX3QgY291bnQpDQorICAgICAgICAgICAgew0K
KyAgICAgICAgICAgICAgICBUKiBwID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZW9m
KFQpICogY291bnQpKTsNCisgICAgICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVN
YWxsb2MocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXdBcnJheSk7DQorICAgICAgICAgICAg
ICAgIHJldHVybiBwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH07DQorDQorICAgICAgICAv
LyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdE5ld0FycmF5Lg0KKyAgICAgICAg
Ly8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlaW4gVCBoYXMgYSBub24tdHJpdmlhbCBjdG9y
IGFuZCBhIHRyaXZpYWwgZHRvci4NCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAg
ICAgICAgc3RydWN0IE5ld0FycmF5SW1wbDxULCBmYWxzZSwgdHJ1ZT4gew0KKyAgICAgICAgICAg
IHN0YXRpYyBUKiBmYXN0TmV3QXJyYXkoc2l6ZV90IGNvdW50KQ0KKyAgICAgICAgICAgIHsNCisg
ICAgICAgICAgICAgICAgVCogcCA9IHN0YXRpY19jYXN0PFQqPihmYXN0TWFsbG9jKHNpemVvZihU
KSAqIGNvdW50KSk7DQorDQorICAgICAgICAgICAgICAgIGlmICghcCkNCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOw0KKw0KKyAgICAgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxp
ZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5KTsNCisNCisgICAg
ICAgICAgICAgICAgZm9yIChUKiBwT2JqZWN0ID0gcCwgKnBPYmplY3RFbmQgPSBwT2JqZWN0ICsg
Y291bnQ7IHBPYmplY3QgIT0gcE9iamVjdEVuZDsgKytwT2JqZWN0KQ0KKyAgICAgICAgICAgICAg
ICAgICAgOjpuZXcocE9iamVjdCkgVDsNCisNCisgICAgICAgICAgICAgICAgcmV0dXJuIHA7DQor
ICAgICAgICAgICAgfQ0KKyAgICAgICAgfTsNCisNCisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBw
b3J0IHRlbXBsYXRlIGZvciBmYXN0TmV3QXJyYXkuDQorICAgICAgICAvLyBUaGlzIGhhbmRsZXMg
dGhlIGNhc2Ugd2hlcmVpbiBUIGhhcyBhIHRyaXZpYWwgY3RvciBhbmQgYSBub24tdHJpdmlhbCBk
dG9yLg0KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQorICAgICAgICBzdHJ1Y3QgTmV3
QXJyYXlJbXBsPFQsIHRydWUsIGZhbHNlPiB7DQorICAgICAgICAgICAgc3RhdGljIFQqIGZhc3RO
ZXdBcnJheShzaXplX3QgY291bnQpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2
b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSArIChzaXpl
b2YoVCkgKiBjb3VudCkpOw0KKyAgICAgICAgICAgICAgICBBcnJheVNpemU8VD4gYSA9IHsgc3Rh
dGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgfTsNCisNCisgICAgICAgICAgICAg
ICAgaWYgKCFwKQ0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorDQorICAgICAgICAg
ICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFsOjpBbGxvY1R5
cGVGYXN0TmV3QXJyYXkpOw0KKyAgICAgICAgICAgICAgICAqYS5zaXplKysgPSBjb3VudDsNCisg
ICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBjb25zdHJ1Y3QgdGhlIG9iamVjdHMgaW4gdGhp
cyBjYXNlLg0KKw0KKyAgICAgICAgICAgICAgICByZXR1cm4gYS50Ow0KKyAgICAgICAgICAgIH0N
CisgICAgICAgIH07DQorDQorICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBm
b3IgZmFzdE5ld0FycmF5Lg0KKyAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJl
aW4gVCBoYXMgYSBub24tdHJpdmlhbCBjdG9yIGFuZCBhIG5vbi10cml2aWFsIGR0b3IuDQorICAg
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisgICAgICAgIHN0cnVjdCBOZXdBcnJheUltcGw8
VCwgZmFsc2UsIGZhbHNlPiB7DQorICAgICAgICAgICAgc3RhdGljIFQqIGZhc3ROZXdBcnJheShz
aXplX3QgY291bnQpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2b2lkKiBwID0g
ZmFzdE1hbGxvYyhzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSArIChzaXplb2YoVCkgKiBj
b3VudCkpOw0KKyAgICAgICAgICAgICAgICBBcnJheVNpemU8VD4gYSA9IHsgc3RhdGljX2Nhc3Q8
QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgfTsNCisNCisgICAgICAgICAgICAgICAgaWYgKCFw
KQ0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorDQorICAgICAgICAgICAgICAgIGZh
c3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3
QXJyYXkpOw0KKyAgICAgICAgICAgICAgICAqYS5zaXplKysgPSBjb3VudDsNCisNCisgICAgICAg
ICAgICAgICAgZm9yIChUKiBwVCA9IGEudCwgKnBURW5kID0gcFQgKyBjb3VudDsgcFQgIT0gcFRF
bmQ7ICsrcFQpDQorICAgICAgICAgICAgICAgICAgICA6Om5ldyhwVCkgVDsNCisNCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGEudDsNCisgICAgICAgICAgICB9DQorICAgICAgICB9Ow0KKyAgICB9
IC8vIG5hbWVzcGFjZSBJbnRlcm5hbA0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisg
ICAgaW5saW5lIFQqIGZhc3ROZXdBcnJheShzaXplX3QgY291bnQpDQorICAgIHsNCisgICAgICAg
IHJldHVybiBJbnRlcm5hbDo6TmV3QXJyYXlJbXBsPFQsIFdURjo6aGFzX3RyaXZpYWxfY29uc3Ry
dWN0b3I8VD46OnZhbHVlLCBXVEY6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD46OnZhbHVlPjo6
ZmFzdE5ld0FycmF5KGNvdW50KTsNCisgICAgfQ0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4NCisgICAgaW5saW5lIHZvaWQgZmFzdERlbGV0ZShUKiBwKQ0KKyAgICB7DQorICAgICAgICBp
ZiAoIXApDQorICAgICAgICAgICAgcmV0dXJuOw0KKw0KKyAgICAgICAgZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGVGcmVlKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsNCisgICAgICAgIHAt
Pn5UKCk7DQorICAgICAgICBmYXN0RnJlZShwKTsNCisgICAgfQ0KKw0KKyAgICBuYW1lc3BhY2Ug
SW50ZXJuYWwgew0KKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIGZh
c3REZWxldGVBcnJheS4NCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWlu
IFQgaGFzIGEgdHJpdmlhbCBkdG9yLg0KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJv
b2wgdHJpdmlhbER0b3I+DQorICAgICAgICBzdHJ1Y3QgRGVsZXRlQXJyYXlJbXBsIHsNCisgICAg
ICAgICAgICBzdGF0aWMgdm9pZCBmYXN0RGVsZXRlQXJyYXkodm9pZCogcCkNCisgICAgICAgICAg
ICB7DQorICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gZGVzdHJ1Y3QgdGhlIG9iamVjdHMg
aW4gdGhpcyBjYXNlLg0KKyAgICAgICAgICAgICAgICAvLyBXZSBleHBlY3QgdGhhdCBmYXN0RnJl
ZSBjaGVja3MgZm9yIG51bGwuDQorICAgICAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlk
YXRlRnJlZShwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5KTsNCisgICAgICAgICAg
ICAgICAgZmFzdEZyZWUocCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfTsNCisNCisgICAg
ICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBmYXN0RGVsZXRlQXJyYXkuDQor
ICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVpbiBUIGhhcyBhIG5vbi10cml2
aWFsIGR0b3IuDQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisgICAgICAgIHN0cnVj
dCBEZWxldGVBcnJheUltcGw8VCwgZmFsc2U+IHsNCisgICAgICAgICAgICBzdGF0aWMgdm9pZCBm
YXN0RGVsZXRlQXJyYXkoVCogcCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGlm
ICghcCkNCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCisNCisgICAgICAgICAgICAgICAg
QXJyYXlTaXplPFQ+IGE7DQorICAgICAgICAgICAgICAgIGEudCA9IHA7DQorICAgICAgICAgICAg
ICAgIGEuc2l6ZS0tOyAvLyBEZWNyZW1lbnQgc2l6ZSBwb2ludGVyDQorDQorICAgICAgICAgICAg
ICAgIFQqIHBFbmQgPSBwICsgKmEuc2l6ZTsNCisgICAgICAgICAgICAgICAgd2hpbGUgKHBFbmQt
LSAhPSBwKQ0KKyAgICAgICAgICAgICAgICAgICAgcEVuZC0+flQoKTsNCisNCisgICAgICAgICAg
ICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKGEuc2l6ZSwgSW50ZXJuYWw6OkFsbG9j
VHlwZUZhc3ROZXdBcnJheSk7DQorICAgICAgICAgICAgICAgIGZhc3RGcmVlKGEuc2l6ZSk7DQor
ICAgICAgICAgICAgfQ0KKyAgICAgICAgfTsNCisNCisgICAgfSAvLyBuYW1lc3BhY2UgSW50ZXJu
YWwNCisNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQorICAgIHZvaWQgZmFzdERlbGV0ZUFy
cmF5KFQqIHApDQorICAgIHsNCisgICAgICAgIEludGVybmFsOjpEZWxldGVBcnJheUltcGw8VCwg
V1RGOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ojp2YWx1ZT46OmZhc3REZWxldGVBcnJheShw
KTsNCisgICAgfQ0KKw0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCisgICAgaW5saW5l
IHZvaWQgZmFzdE5vbk51bGxEZWxldGUoVCogcCkNCisgICAgew0KKyAgICAgICAgZmFzdE1hbGxv
Y01hdGNoVmFsaWRhdGVGcmVlKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsNCisgICAg
ICAgIHAtPn5UKCk7DQorICAgICAgICBmYXN0RnJlZShwKTsNCisgICAgfQ0KKw0KKyAgICBuYW1l
c3BhY2UgSW50ZXJuYWwgew0KKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUg
Zm9yIGZhc3REZWxldGVBcnJheS4NCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3
aGVyZWluIFQgaGFzIGEgdHJpdmlhbCBkdG9yLg0KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIGJvb2wgdHJpdmlhbER0b3I+DQorICAgICAgICBzdHJ1Y3QgTm9uTnVsbERlbGV0ZUFycmF5
SW1wbCB7DQorICAgICAgICAgICAgc3RhdGljIHZvaWQgZmFzdE5vbk51bGxEZWxldGVBcnJheSh2
b2lkKiBwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGVGcmVlKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3QXJyYXkpOw0KKyAgICAg
ICAgICAgICAgICAvLyBObyBuZWVkIHRvIGRlc3RydWN0IHRoZSBvYmplY3RzIGluIHRoaXMgY2Fz
ZS4NCisgICAgICAgICAgICAgICAgZmFzdEZyZWUocCk7DQorICAgICAgICAgICAgfQ0KKyAgICAg
ICAgfTsNCisNCisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBmYXN0
RGVsZXRlQXJyYXkuDQorICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVpbiBU
IGhhcyBhIG5vbi10cml2aWFsIGR0b3IuDQorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4N
CisgICAgICAgIHN0cnVjdCBOb25OdWxsRGVsZXRlQXJyYXlJbXBsPFQsIGZhbHNlPiB7DQorICAg
ICAgICAgICAgc3RhdGljIHZvaWQgZmFzdE5vbk51bGxEZWxldGVBcnJheShUKiBwKQ0KKyAgICAg
ICAgICAgIHsNCisgICAgICAgICAgICAgICAgQXJyYXlTaXplPFQ+IGE7DQorICAgICAgICAgICAg
ICAgIGEudCA9IHA7DQorICAgICAgICAgICAgICAgIGEuc2l6ZS0tOw0KKw0KKyAgICAgICAgICAg
ICAgICBUKiBwRW5kID0gcCArICphLnNpemU7DQorICAgICAgICAgICAgICAgIHdoaWxlIChwRW5k
LS0gIT0gcCkNCisgICAgICAgICAgICAgICAgICAgIHBFbmQtPn5UKCk7DQorDQorICAgICAgICAg
ICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShhLnNpemUsIEludGVybmFsOjpBbGxv
Y1R5cGVGYXN0TmV3QXJyYXkpOw0KKyAgICAgICAgICAgICAgICBmYXN0RnJlZShhLnNpemUpOw0K
KyAgICAgICAgICAgIH0NCisgICAgICAgIH07DQorDQorICAgIH0gLy8gbmFtZXNwYWNlIEludGVy
bmFsDQorDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KKyAgICB2b2lkIGZhc3ROb25OdWxs
RGVsZXRlQXJyYXkoVCogcCkNCisgICAgew0KKyAgICAgICAgSW50ZXJuYWw6Ok5vbk51bGxEZWxl
dGVBcnJheUltcGw8VCwgV1RGOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ojp2YWx1ZT46OmZh
c3ROb25OdWxsRGVsZXRlQXJyYXkocCk7DQorICAgIH0NCisNCisNCit9IC8vIG5hbWVzcGFjZSBX
VEYNCisNCisjZW5kaWYgLy8gV1RGX0Zhc3RBbGxvY0Jhc2VfaA0KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3d0Zi9GYXN0TWFsbG9jLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9GYXN0TWFsbG9jLmNwcAkocmV2aXNpb24gNDIyMzUpDQorKysgSmF2YVNjcmlwdENvcmUvd3Rm
L0Zhc3RNYWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNzgsNiArNzgsNyBAQA0KICNpbmNs
dWRlICJGYXN0TWFsbG9jLmgiDQogDQogI2luY2x1ZGUgIkFzc2VydGlvbnMuaCINCisjaW5jbHVk
ZSA8bGltaXRzPg0KICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpDQogI2luY2x1ZGUg
PHB0aHJlYWQuaD4NCiAjZW5kaWYNCkBAIC0xNTEsNiArMTUyLDE5IEBADQogDQogbmFtZXNwYWNl
IFdURiB7DQogDQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKw0K
K25hbWVzcGFjZSBJbnRlcm5hbCB7DQorDQordm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9p
ZCopDQorew0KKyAgICBDUkFTSCgpOw0KK30NCisNCit9IC8vIG5hbWVzcGFjZSBJbnRlcm5hbA0K
Kw0KKyNlbmRpZg0KKw0KIHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pIA0KIHsNCiAg
ICAgdm9pZCogcmVzdWx0ID0gZmFzdE1hbGxvYyhuKTsNCkBAIC0xODMsMTMgKzE5NywzNCBAQA0K
IHZvaWQqIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pIA0KIHsNCiAgICAgQVNTRVJUKCFpc0ZvcmJp
ZGRlbigpKTsNCisNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQor
ICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gc2l6ZW9mKEFsbG9j
QWxpZ25tZW50SW50ZWdlcikgPD0gbikgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4uDQor
ICAgICAgICByZXR1cm4gMDsNCisNCisgICAgdm9pZCogcmVzdWx0ID0gbWFsbG9jKG4gKyBzaXpl
b2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSk7DQorICAgIGlmICghcmVzdWx0KQ0KKyAgICAgICAg
cmV0dXJuIDA7DQorDQorICAgICpzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihy
ZXN1bHQpID0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYzsNCisgICAgcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7DQorDQorICAgIHJldHVy
biByZXN1bHQ7DQorI2Vsc2UNCiAgICAgcmV0dXJuIG1hbGxvYyhuKTsNCisjZW5kaWYNCiB9DQog
DQogdm9pZCogZmFzdE1hbGxvYyhzaXplX3QgbikgDQogew0KICAgICBBU1NFUlQoIWlzRm9yYmlk
ZGVuKCkpOw0KKw0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisg
ICAgdm9pZCogcmVzdWx0ID0gdHJ5RmFzdE1hbGxvYyhuKTsNCisjZWxzZQ0KICAgICB2b2lkKiBy
ZXN1bHQgPSBtYWxsb2Mobik7DQorI2VuZGlmDQorDQogICAgIGlmICghcmVzdWx0KQ0KICAgICAg
ICAgQ1JBU0goKTsNCiAgICAgcmV0dXJuIHJlc3VsdDsNCkBAIC0xOTgsMTMgKzIzMywzNiBAQA0K
IHZvaWQqIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3Np
emUpDQogew0KICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOw0KKw0KKyNpZiBFTkFCTEUoRkFT
VF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgc2l6ZV90IHRvdGFsQnl0ZXMgPSBuX2Vs
ZW1lbnRzICogZWxlbWVudF9zaXplOw0KKyAgICBpZiAobl9lbGVtZW50cyA+IDEgJiYgZWxlbWVu
dF9zaXplICYmICh0b3RhbEJ5dGVzIC8gZWxlbWVudF9zaXplKSAhPSBuX2VsZW1lbnRzIHx8IChz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50
SW50ZWdlcikgPD0gdG90YWxCeXRlcykpDQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAgdG90
YWxCeXRlcyArPSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKTsNCisgICAgdm9pZCogcmVz
dWx0ID0gbWFsbG9jKHRvdGFsQnl0ZXMpOw0KKyAgICBpZiAoIXJlc3VsdCkNCisgICAgICAgIHJl
dHVybiAwOw0KKw0KKyAgICBtZW1zZXQocmVzdWx0LCAwLCB0b3RhbEJ5dGVzKTsNCisgICAgKnN0
YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5hbDo6QWxs
b2NUeXBlTWFsbG9jOw0KKyAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudElu
dGVnZXIqPihyZXN1bHQpICsgMTsNCisgICAgcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KICAgICBy
ZXR1cm4gY2FsbG9jKG5fZWxlbWVudHMsIGVsZW1lbnRfc2l6ZSk7DQorI2VuZGlmDQogfQ0KIA0K
IHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUp
DQogew0KICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOw0KKw0KKyNpZiBFTkFCTEUoRkFTVF9N
QUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgdm9pZCogcmVzdWx0ID0gdHJ5RmFzdENhbGxv
YyhuX2VsZW1lbnRzLCBlbGVtZW50X3NpemUpOw0KKyNlbHNlDQogICAgIHZvaWQqIHJlc3VsdCA9
IGNhbGxvYyhuX2VsZW1lbnRzLCBlbGVtZW50X3NpemUpOw0KKyNlbmRpZg0KKw0KICAgICBpZiAo
IXJlc3VsdCkNCiAgICAgICAgIENSQVNIKCk7DQogICAgIHJldHVybiByZXN1bHQ7DQpAQCAtMjEz
LDE5ICsyNzEsNTcgQEANCiB2b2lkIGZhc3RGcmVlKHZvaWQqIHApDQogew0KICAgICBBU1NFUlQo
IWlzRm9yYmlkZGVuKCkpOw0KKw0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURB
VElPTikNCisgICAgaWYgKCFwKQ0KKyAgICAgICAgcmV0dXJuOw0KKw0KKyAgICBBbGxvY0FsaWdu
bWVudEludGVnZXIqIGhlYWRlciA9IEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9u
VmFsdWUocCk7DQorICAgIGlmICgqaGVhZGVyICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2Mp
DQorICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOw0KKyAgICBmcmVl
KGhlYWRlcik7DQorI2Vsc2UNCiAgICAgZnJlZShwKTsNCisjZW5kaWYNCiB9DQogDQogdm9pZCog
dHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4pDQogew0KICAgICBBU1NFUlQoIWlzRm9y
YmlkZGVuKCkpOw0KKw0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikN
CisgICAgaWYgKHApIHsNCisgICAgICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikgPD0gbikgIC8vIElmIG92ZXJm
bG93IHdvdWxkIG9jY3VyLi4uDQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICBBbGxv
Y0FsaWdubWVudEludGVnZXIqIGhlYWRlciA9IEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxp
ZGF0aW9uVmFsdWUocCk7DQorICAgICAgICBpZiAoKmhlYWRlciAhPSBJbnRlcm5hbDo6QWxsb2NU
eXBlTWFsbG9jKQ0KKyAgICAgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQo
cCk7DQorICAgICAgICB2b2lkKiByZXN1bHQgPSByZWFsbG9jKGhlYWRlciwgbiArIHNpemVvZihB
bGxvY0FsaWdubWVudEludGVnZXIpKTsNCisgICAgICAgIGlmICghcmVzdWx0KQ0KKyAgICAgICAg
ICAgIHJldHVybiAwOw0KKw0KKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGJlIG5lZWRlZCBi
ZWNhdXNlIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlOg0KKyAgICAgICAgLy8gKnN0YXRpY19j
YXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5hbDo6QWxsb2NUeXBl
TWFsbG9jOw0KKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRl
Z2VyKj4ocmVzdWx0KSArIDE7DQorICAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICB9IGVsc2Ug
ew0KKyAgICAgICAgcmV0dXJuIGZhc3RNYWxsb2Mobik7DQorICAgIH0NCisjZWxzZQ0KICAgICBy
ZXR1cm4gcmVhbGxvYyhwLCBuKTsNCisjZW5kaWYNCiB9DQogDQogdm9pZCogZmFzdFJlYWxsb2Mo
dm9pZCogcCwgc2l6ZV90IG4pDQogew0KICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOw0KKw0K
KyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgdm9pZCogcmVz
dWx0ID0gdHJ5RmFzdFJlYWxsb2MocCwgbik7DQorI2Vsc2UNCiAgICAgdm9pZCogcmVzdWx0ID0g
cmVhbGxvYyhwLCBuKTsNCisjZW5kaWYNCisNCiAgICAgaWYgKCFyZXN1bHQpDQogICAgICAgICBD
UkFTSCgpOw0KICAgICByZXR1cm4gcmVzdWx0Ow0KQEAgLTI2NSw2ICszNjEsNyBAQA0KICNpbmNs
dWRlICJUQ1N5c3RlbUFsbG9jLmgiDQogI2luY2x1ZGUgPGFsZ29yaXRobT4NCiAjaW5jbHVkZSA8
ZXJybm8uaD4NCisjaW5jbHVkZSA8bGltaXRzPg0KICNpbmNsdWRlIDxuZXc+DQogI2luY2x1ZGUg
PHB0aHJlYWQuaD4NCiAjaW5jbHVkZSA8c3RkYXJnLmg+DQpAQCAtMzI5NCw3ICszMzkxLDIwIEBA
DQogQUxXQVlTX0lOTElORQ0KICNlbmRpZg0KIHZvaWQqIG1hbGxvYyhzaXplX3Qgc2l6ZSkgew0K
LSAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKHNpemUpOw0KKyNpZiBFTkFCTEUoRkFTVF9NQUxM
T0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSBzaXplKSAgLy8gSWYg
b3ZlcmZsb3cgd291bGQgb2NjdXIuLi4NCisgICAgICAgIHJldHVybiAwOw0KKyAgICBzaXplICs9
IHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpOw0KKyAgICB2b2lkKiByZXN1bHQgPSBkb19t
YWxsb2Moc2l6ZSk7DQorICAgIGlmICghcmVzdWx0KQ0KKyAgICAgICAgcmV0dXJuIDA7DQorDQor
ICAgICpzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihyZXN1bHQpID0gSW50ZXJu
YWw6OkFsbG9jVHlwZU1hbGxvYzsNCisgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGln
bm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7DQorI2Vsc2UNCisgICAgdm9pZCogcmVzdWx0ID0g
ZG9fbWFsbG9jKHNpemUpOw0KKyNlbmRpZg0KKw0KICNpZm5kZWYgV1RGX0NIQU5HRVMNCiAgIE1h
bGxvY0hvb2s6Okludm9rZU5ld0hvb2socmVzdWx0LCBzaXplKTsNCiAjZW5kaWYNCkBAIC0zMzA4
LDcgKzM0MTgsMTggQEANCiAjaWZuZGVmIFdURl9DSEFOR0VTDQogICBNYWxsb2NIb29rOjpJbnZv
a2VEZWxldGVIb29rKHB0cik7DQogI2VuZGlmDQotICBkb19mcmVlKHB0cik7DQorDQorI2lmIEVO
QUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQ0KKyAgICBpZiAoIXB0cikNCisgICAg
ICAgIHJldHVybjsNCisNCisgICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBoZWFkZXIgPSBJbnRl
cm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKHB0cik7DQorICAgIGlmICgqaGVh
ZGVyICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpDQorICAgICAgICBJbnRlcm5hbDo6ZmFz
dE1hbGxvY01hdGNoRmFpbGVkKHB0cik7DQorICAgIGRvX2ZyZWUoaGVhZGVyKTsNCisjZWxzZQ0K
KyAgICBkb19mcmVlKHB0cik7DQorI2VuZGlmDQogfQ0KIA0KICNpZm5kZWYgV1RGX0NIQU5HRVMN
CkBAIC0zMzMxLDE2ICszNDUyLDMxIEBADQogQUxXQVlTX0lOTElORQ0KICNlbmRpZg0KIHZvaWQq
IGNhbGxvYyhzaXplX3Qgbiwgc2l6ZV90IGVsZW1fc2l6ZSkgew0KLSAgY29uc3Qgc2l6ZV90IHRv
dGFsQnl0ZXMgPSBuICogZWxlbV9zaXplOw0KKyAgc2l6ZV90IHRvdGFsQnl0ZXMgPSBuICogZWxl
bV9zaXplOw0KICAgICANCiAgIC8vIFByb3RlY3QgYWdhaW5zdCBvdmVyZmxvdw0KICAgaWYgKG4g
PiAxICYmIGVsZW1fc2l6ZSAmJiAodG90YWxCeXRlcyAvIGVsZW1fc2l6ZSkgIT0gbikNCiAgICAg
cmV0dXJuIDA7DQotICAgIA0KLSAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKHRvdGFsQnl0ZXMp
Ow0KLSAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7DQorDQorI2lmIEVOQUJMRShGQVNUX01BTExPQ19N
QVRDSF9WQUxJREFUSU9OKQ0KKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpIDw9IHRvdGFsQnl0ZXMpICAvLyBJ
ZiBvdmVyZmxvdyB3b3VsZCBvY2N1ci4uLg0KKyAgICAgICAgcmV0dXJuIDA7DQorDQorICAgIHRv
dGFsQnl0ZXMgKz0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7DQorICAgIHZvaWQqIHJl
c3VsdCA9IGRvX21hbGxvYyh0b3RhbEJ5dGVzKTsNCisgICAgaWYgKCFyZXN1bHQpDQorICAgICAg
ICByZXR1cm4gMDsNCisNCiAgICAgbWVtc2V0KHJlc3VsdCwgMCwgdG90YWxCeXRlcyk7DQotICB9
DQorICAgICpzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihyZXN1bHQpID0gSW50
ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYzsNCisgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NB
bGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7DQorI2Vsc2UNCisgICAgdm9pZCogcmVzdWx0
ID0gZG9fbWFsbG9jKHRvdGFsQnl0ZXMpOw0KKyAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsNCisg
ICAgICAgIG1lbXNldChyZXN1bHQsIDAsIHRvdGFsQnl0ZXMpOw0KKyAgICB9DQorI2VuZGlmDQor
DQogI2lmbmRlZiBXVEZfQ0hBTkdFUw0KICAgTWFsbG9jSG9vazo6SW52b2tlTmV3SG9vayhyZXN1
bHQsIHRvdGFsQnl0ZXMpOw0KICNlbmRpZg0KQEAgLTMzODEsMTAgKzM1MTcsMTQgQEANCiAjZW5k
aWYNCiB2b2lkKiByZWFsbG9jKHZvaWQqIG9sZF9wdHIsIHNpemVfdCBuZXdfc2l6ZSkgew0KICAg
aWYgKG9sZF9wdHIgPT0gTlVMTCkgew0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFM
SURBVElPTikNCisgICAgdm9pZCogcmVzdWx0ID0gbWFsbG9jKG5ld19zaXplKTsNCisjZWxzZQ0K
ICAgICB2b2lkKiByZXN1bHQgPSBkb19tYWxsb2MobmV3X3NpemUpOw0KICNpZm5kZWYgV1RGX0NI
QU5HRVMNCiAgICAgTWFsbG9jSG9vazo6SW52b2tlTmV3SG9vayhyZXN1bHQsIG5ld19zaXplKTsN
CiAjZW5kaWYNCisjZW5kaWYNCiAgICAgcmV0dXJuIHJlc3VsdDsNCiAgIH0NCiAgIGlmIChuZXdf
c2l6ZSA9PSAwKSB7DQpAQCAtMzM5NSw2ICszNTM1LDE2IEBADQogICAgIHJldHVybiBOVUxMOw0K
ICAgfQ0KIA0KKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisgICAg
aWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBzaXplb2YoQWxsb2NBbGln
bm1lbnRJbnRlZ2VyKSA8PSBuZXdfc2l6ZSkgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4u
DQorICAgICAgICByZXR1cm4gMDsNCisgICAgbmV3X3NpemUgKz0gc2l6ZW9mKEFsbG9jQWxpZ25t
ZW50SW50ZWdlcik7DQorICAgIEFsbG9jQWxpZ25tZW50SW50ZWdlciogaGVhZGVyID0gSW50ZXJu
YWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1ZShvbGRfcHRyKTsNCisgICAgaWYgKCpo
ZWFkZXIgIT0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYykNCisgICAgICAgIEludGVybmFsOjpm
YXN0TWFsbG9jTWF0Y2hGYWlsZWQob2xkX3B0cik7DQorICAgIG9sZF9wdHIgPSBoZWFkZXI7DQor
I2VuZGlmDQorDQogICAvLyBHZXQgdGhlIHNpemUgb2YgdGhlIG9sZCBlbnRyeQ0KICAgY29uc3Qg
UGFnZUlEIHAgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ob2xkX3B0cikgPj4ga1BhZ2VT
aGlmdDsNCiAgIHNpemVfdCBjbCA9IHBhZ2VoZWFwLT5HZXRTaXplQ2xhc3NJZkNhY2hlZChwKTsN
CkBAIC0zNDMxLDggKzM1ODEsMTQgQEANCiAgICAgLy8gdGhhdCB3ZSBhbHJlYWR5IGtub3cgdGhl
IHNpemVjbGFzcyBvZiBvbGRfcHRyLiAgVGhlIGJlbmVmaXQNCiAgICAgLy8gd291bGQgYmUgc21h
bGwsIHNvIGRvbid0IGJvdGhlci4NCiAgICAgZG9fZnJlZShvbGRfcHRyKTsNCisjaWYgRU5BQkxF
KEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pDQorICAgIG5ld19wdHIgPSBzdGF0aWNfY2Fz
dDxBbGxvY0FsaWdubWVudEludGVnZXIqPihuZXdfcHRyKSArIDE7DQorI2VuZGlmDQogICAgIHJl
dHVybiBuZXdfcHRyOw0KICAgfSBlbHNlIHsNCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENI
X1ZBTElEQVRJT04pDQorICAgIG9sZF9wdHIgPSBwQnl0ZSArIHNpemVvZihBbGxvY0FsaWdubWVu
dEludGVnZXIpOyAgLy8gU2V0IG9sZF9wdHIgYmFjayB0byB0aGUgdXNlciBwb2ludGVyLg0KKyNl
bmRpZg0KICAgICByZXR1cm4gb2xkX3B0cjsNCiAgIH0NCiB9DQpJbmRleDogSmF2YVNjcmlwdENv
cmUvd3RmL1BsYXRmb3JtLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAkocmV2aXNpb24gNDIyMzUpDQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgJKHdvcmtpbmcgY29weSkNCkBAIC00MDAsNiArNDAwLDEyIEBADQogDQogLyogRU5BQkxFIG1h
Y3JvIGRlZmF1bHRzICovDQogDQorLyogZmFzdE1hbGxvYyBtYXRjaCB2YWxpZGF0aW9uIGFsbG93
cyBmb3IgcnVudGltZSB2ZXJpZmljYXRpb24gdGhhdCANCisgICBuZXcgaXMgbWF0Y2hlZCBieSBk
ZWxldGUsIGZhc3RNYWxsb2MgaXMgbWF0Y2hlZCBieSBmYXN0RnJlZSwgZXRjLiAqLw0KKyNpZiAh
ZGVmaW5lZChFTkFCTEVfRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikNCisjZGVmaW5lIEVO
QUJMRV9GQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OIDANCisjZW5kaWYNCisNCiAjaWYgIWRl
ZmluZWQoRU5BQkxFX0lDT05EQVRBQkFTRSkNCiAjZGVmaW5lIEVOQUJMRV9JQ09OREFUQUJBU0Ug
MQ0KICNlbmRpZg0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9X
VEYvV1RGLnZjcHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagkocmV2aXNpb24gNDIyMzUpDQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjcxLDYgKzI3MSwxMCBAQA0KIAkJCT4NCiAJCTwvRmlsZT4NCiAJCTxGaWxlDQorCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcRmFzdEFsbG9jQmFzZS5oIg0KKwkJCT4NCisJCTwvRmls
ZT4NCisJCTxGaWxlDQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcRmFzdE1hbGxvYy5jcHAi
DQogCQkJPg0KIAkJPC9GaWxlPg0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNDIyMzUpDQor
KysgSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDI0
IEBADQorMjAwOS0wNC0wNSAgUGF1bCBQZWRyaWFuYSA8cHBlZHJpYW5hQGVhLmNvbT4NCisNCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgKiB3dGYvRmFz
dEFsbG9jQmFzZS5oOg0KKyAgICAgICAgTmV3IGFkZGVkIGZpbGUuIEltcGxlbWVudHMgYWxsb2Nh
dGlvbiBiYXNlIGNsYXNzLg0KKyAgICAgICAgKiB3dGYvVHlwZVRyYWl0cy5oOg0KKyAgICAgICAg
QXVnbWVudHMgZXhpc3RpbmcgdHlwZSB0cmFpdHMgc3VwcG9ydCBhcyBuZWVkZWQgYnkgRmFzdEFs
bG9jQmFzZS4NCisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDoNCisgICAgICAgIENoYW5nZWQg
dG8gc3VwcG9ydCBGYXN0TWFsbG9jIG1hdGNoIHZhbGlkYXRpb24uDQorICAgICAgICAqIHd0Zi9G
YXN0TWFsbG9jLmNwcDoNCisgICAgICAgIENoYW5nZWQgdG8gc3VwcG9ydCBGYXN0TWFsbG9jIG1h
dGNoIHZhbGlkYXRpb24uDQorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOg0KKyAgICAgICAgQWRk
ZWQgRU5BQkxFX0ZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT047IGRlZmF1bHRzIHRvIDAuDQor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOg0KKyAgICAgICAgVXBkYXRlZCB0byBpbmNsdWRlIGFk
ZGVkIEZhc3RBbGxvY0Jhc2UuaC4NCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoNCisgICAgICAgIFVwZGF0ZWQgdG8gaW5jbHVkZSBhZGRlZCBGYXN0
QWxsb2NCYXNlLmguDQorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZj
cHJvajoNCisgICAgICAgIFVwZGF0ZWQgdG8gaW5jbHVkZSBhZGRlZCBGYXN0QWxsb2NCYXNlLmgu
DQorICAgICAgICANCiAyMDA5LTA0LTA0ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxp
dmllcnMuY29tPg0KIA0KICAgICAgICAgd3ggYnVpbGQgZml4IGZvciBXaW4gcG9ydC4gQnVpbGQg
dGhlIGFzc2VtYmxlciBzb3VyY2VzIHRvIGdldCBtaXNzaW5nIGZ1bmN0aW9ucy4NCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gNDIyMzUpDQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQ0KQEAgLTM1
Miw2ICszNTIsNyBAQA0KIAkJRTFBODYyRDYwRDdGMkI1QzAwMUVDNkFBIC8qIENvbGxhdG9yRGVm
YXVsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUE4NjJENTBEN0YyQjVDMDAxRUM2QUEgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLzsgfTsNCiAJ
CUUxRUU3OTNEMEQ2QzlCOTIwMEZFQTNCQSAvKiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNzkzQzBENkM5Qjky
MDBGRUEzQkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwICovOyB9Ow0KIAkJRTFFRjc5QUEwQ0U5
N0JBNjAwODhENTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFFRjc5QTgwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwICovOyB9
Ow0KKwkJRTQ4RTBGMkQwRjgyMTUxNzAwQThDQTM3IC8qIEZhc3RBbGxvY0Jhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OEUwRjJDMEY4MjE1MTcw
MEE4Q0EzNyAvKiBGYXN0QWxsb2NCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsNCiAJCUZFMUI0NDdBMEVDQ0Q3M0IwMDRGNEREMSAvKiBTdGRMaWJF
eHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MUI0NDc5MEVDQ0Q3M0IwMDRGNEREMSAvKiBTdGRMaWJFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Ow0KIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2Vj
dGlvbiAqLw0KIA0KQEAgLTgwMyw2ICs4MDQsNyBAQA0KIAkJRTFFRTc5OEIwRDZDQTUzRDAwRkVB
M0JBIC8qIE1lc3NhZ2VRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZXNzYWdlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsNCiAJCUUxRUY3OUE4MENF
OTdCQTYwMDg4RDUwMCAvKiBVVEY4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVURjguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJRTFFRjc5QTkw
Q0U5N0JBNjAwODhENTAwIC8qIFVURjguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVVRGOC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KKwkJRTQ4RTBGMkMwRjgyMTUx
NzAwQThDQTM3IC8qIEZhc3RBbGxvY0Jhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmFzdEFsbG9jQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Ow0KIAkJRjVC
QjJCQzUwMzBGNzcyMTAxRkNGRTFEIC8qIENvbXBsZXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxldGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07DQogCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1
Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdENvcmVQcmVmaXguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9Ow0KIAkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2
MEY3IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB9Ow0KQEAgLTExMTIsNiArMTExNCw3IEBADQogCQkJCUUxOTU2NzhEMDlFN0NGMTIwMEI4OUQx
MyAvKiB1bmljb2RlICovLA0KIAkJCQk5MzhDNEY2OTBDQTA2QkM3MDBEOTMxMEEgLyogQVNDSUlD
VHlwZS5oICovLA0KIAkJCQlFMUE1OTYzNzBERTNFMUMzMDBDMTdFMzcgLyogQVZMVHJlZS5oICov
LA0KKwkJCQlFNDhFMEYyQzBGODIxNTE3MDBBOENBMzcgLyogRmFzdEFsbG9jQmFzZS5oICovLA0K
IAkJCQk5M0FBNEY3NzA5NTcyNTFGMDA4NEIzQTcgLyogQWx3YXlzSW5saW5lLmggKi8sDQogCQkJ
CTY1RTIxN0I4MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25zLmNwcCAqLywNCiAJCQkJNjVF
MjE3QjcwOEU3RUVDQzAwMjNFNUY2IC8qIEFzc2VydGlvbnMuaCAqLywNCkBAIC0xNzQ4LDYgKzE3
NTEsNyBAQA0KIAkJCQk4NjAxNjFFNjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaCBpbiBIZWFkZXJzICovLA0KIAkJCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUg
LyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8sDQogCQkJCTE0QTQyRTQwMEY0RjYwRUUwMDU5OTA5
OSAvKiBUaW1lb3V0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sDQorCQkJCUU0OEUwRjJEMEY4MjE1
MTcwMEE4Q0EzNyAvKiBGYXN0QWxsb2NCYXNlLmggaW4gSGVhZGVycyAqLywNCiAJCQkpOw0KIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOw0KIAkJfTsNCkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA0MjIzNSkNCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQ0KQEAgLTEs
MyArMSwxMSBAQA0KKzIwMDktMDQtMDUgIFBhdWwgUGVkcmlhbmEgPHBwZWRyaWFuYUBlYS5jb20+
DQorDQorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisNCisgICAgICAgICog
Rm9yd2FyZGluZ0hlYWRlcnMvd3RmL1R5cGVUcmFpdHMuaDoNCisgICAgICAgIFVwZGF0ZWQgaW4g
cGFyYWxsZWwgd2l0aCBKYXZhU2NyaXB0Q29yZS93dGYvVHlwZVRyYWl0cy5oDQorICAgICAgICAN
CisgICAgICAgIA0KIDIwMDktMDQtMDUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4NCiANCiAgICAgICAgIFtPcmlnaW5hbGx5XSBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLg0KSW5k
ZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1R5cGVUcmFpdHMuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1R5cGVUcmFpdHMuaAkocmV2aXNp
b24gNDIyMzUpDQorKysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvVHlwZVRyYWl0cy5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMSArMSwzMzkgQEANCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvVHlwZVRyYWl0cy5oPg0KKyAvKg0KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMN
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VDQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8NCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLA0KKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0KKyAqDQorICovDQorDQor
I2lmbmRlZiBUeXBlVHJhaXRzX2gNCisjZGVmaW5lIFR5cGVUcmFpdHNfaA0KKw0KKyNpbmNsdWRl
ICJQbGF0Zm9ybS5oIg0KKw0KKyNpZiAoZGVmaW5lZChfX0dMSUJDWFhfXykgJiYgKF9fR0xJQkNY
WF9fID49IDIwMDcwNzI0KSkgfHwgKGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAx
NjAwKSkNCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+DQorI2VuZGlmDQorDQorbmFtZXNwYWNlIFdU
RiB7DQorDQorICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIHByb3ZpZGVkIGluIHRoaXMgZmlsZToN
CisgICAgLy8NCisgICAgLy8gICBJc0ludGVnZXI8VD46OnZhbHVlDQorICAgIC8vICAgSXNQb2Q8
VD46OnZhbHVlLCBzZWUgdGhlIGRlZmluaXRpb24gZm9yIGEgbm90ZSBhYm91dCBpdHMgbGltaXRh
dGlvbnMNCisgICAgLy8gICBJc0NvbnZlcnRpYmxlVG9JbnRlZ2VyPFQ+Ojp2YWx1ZQ0KKyAgICAv
Lw0KKyAgICAvLyAgIElzU2FtZVR5cGU8VCwgVT46OnZhbHVlDQorICAgIC8vDQorICAgIC8vICAg
UmVtb3ZlUG9pbnRlcjxUPjo6VHlwZQ0KKyAgICAvLyAgIFJlbW92ZUNvbnN0PFQ+OjpUeXBlDQor
ICAgIC8vICAgUmVtb3ZlVm9sYXRpbGU8VD46OlR5cGUNCisgICAgLy8gICBSZW1vdmVDb25zdFZv
bGF0aWxlPFQ+OjpUeXBlDQorICAgIC8vDQorICAgIC8vICAgQ09NUElMRV9BU1NFUlQncyBpbiBU
eXBlVHJhaXRzLmNwcCBpbGx1c3RyYXRlIHRoZWlyIHVzYWdlIGFuZCB3aGF0IHRoZXkgZG8uDQor
DQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc0ludGVnZXIgICAgICAgICAgIHsg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSXNJbnRlZ2VyPGJvb2w+ICAgICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1
ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxjaGFyPiAgICAg
ICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8c2lnbmVkIGNoYXI+ICAgICAgICB7IHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2Vy
PHVuc2lnbmVkIGNoYXI+ICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07
DQorICAgIHRlbXBsYXRlPD4gc3RydWN0IElzSW50ZWdlcjxzaG9ydD4gICAgICAgICAgICAgIHsg
c3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBJc0ludGVnZXI8dW5zaWduZWQgc2hvcnQ+ICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVl
ID0gdHJ1ZTsgfTsNCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPGludD4gICAgICAg
ICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBs
YXRlPD4gc3RydWN0IElzSW50ZWdlcjx1bnNpZ25lZCBpbnQ+ICAgICAgIHsgc3RhdGljIGNvbnN0
IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8
bG9uZz4gICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsN
CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSXNJbnRlZ2VyPHVuc2lnbmVkIGxvbmc+ICAgICAgeyBz
dGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlPD4gc3RydWN0
IElzSW50ZWdlcjxsb25nIGxvbmc+ICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUg
PSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJc0ludGVnZXI8dW5zaWduZWQgbG9u
ZyBsb25nPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsNCisjaWYgIUNPTVBJ
TEVSKE1TVkMpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpDQorICAgIHRlbXBs
YXRlPD4gc3RydWN0IElzSW50ZWdlcjx3Y2hhcl90PiAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0
IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyNlbmRpZg0KKw0KKyAgICAvLyBJc1BvZCBpcyBtaXNu
YW1lZCBhcyBpdCBkb2Vzbid0IGNvdmVyIGFsbCBwbGFpbiBvbGQgZGF0YSAocG9kKSB0eXBlcy4N
CisgICAgLy8gU3BlY2lmaWNhbGx5LCBpdCBkb2Vzbid0IGFsbG93IGZvciBlbnVtcyBvciBmb3Ig
c3RydWN0cy4NCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1BvZCAgICAgICAg
ICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IElzSW50ZWdlcjxUPjo6dmFsdWU7IH07DQor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBJc1BvZDxmbG9hdD4gICAgICAgICAgICAgIHsgc3RhdGlj
IGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSXNQ
b2Q8ZG91YmxlPiAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsg
fTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IElzUG9kPGxvbmcgZG91YmxlPiAgICAgICAgeyBz
dGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07DQorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBQPiBzdHJ1Y3QgSXNQb2Q8UCo+ICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0
cnVlOyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBJc0NvbnZlcnRpYmxl
VG9JbnRlZ2VyIHsNCisgICAgICAgIC8vIEF2b2lkICJwb3NzaWJsZSBsb3NzIG9mIGRhdGEiIHdh
cm5pbmcgd2hlbiB1c2luZyBNaWNyb3NvZnQncyBDKysgY29tcGlsZXINCisgICAgICAgIC8vIGJ5
IG5vdCBjb252ZXJ0aW5nIGludCdzIHRvIGRvdWJsZXMuDQorICAgICAgICB0ZW1wbGF0ZTxib29s
IHBlcmZvcm1DaGVjaywgdHlwZW5hbWUgVT4gY2xhc3MgSXNDb252ZXJ0aWJsZVRvRG91YmxlOw0K
KyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gY2xhc3MgSXNDb252ZXJ0aWJsZVRvRG91Ymxl
PGZhbHNlLCBVPiB7DQorICAgICAgICBwdWJsaWM6DQorICAgICAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgdmFsdWUgPSBmYWxzZTsNCisgICAgICAgIH07DQorDQorICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBjbGFzcyBJc0NvbnZlcnRpYmxlVG9Eb3VibGU8dHJ1ZSwgVT4gew0KKyAgICAg
ICAgICAgIHR5cGVkZWYgY2hhciBZZXNUeXBlOw0KKyAgICAgICAgICAgIHN0cnVjdCBOb1R5cGUg
ew0KKyAgICAgICAgICAgICAgICBjaGFyIHBhZGRpbmdbOF07DQorICAgICAgICAgICAgfTsNCisN
CisgICAgICAgICAgICBzdGF0aWMgWWVzVHlwZSBmbG9hdENoZWNrKGxvbmcgZG91YmxlKTsNCisg
ICAgICAgICAgICBzdGF0aWMgTm9UeXBlIGZsb2F0Q2hlY2soLi4uKTsNCisgICAgICAgICAgICBz
dGF0aWMgVCYgdDsNCisgICAgICAgIHB1YmxpYzoNCisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCB2YWx1ZSA9IHNpemVvZihmbG9hdENoZWNrKHQpKSA9PSBzaXplb2YoWWVzVHlwZSk7DQor
ICAgICAgICB9Ow0KKw0KKyAgICBwdWJsaWM6DQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2
YWx1ZSA9IElzSW50ZWdlcjxUPjo6dmFsdWUgfHwgSXNDb252ZXJ0aWJsZVRvRG91YmxlPCFJc0lu
dGVnZXI8VD46OnZhbHVlLCBUPjo6dmFsdWU7DQorICAgIH07DQorDQorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgSXNTYW1lVHlwZSB7DQorICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RydWN0IElzU2FtZVR5cGU8VCwgVD4gew0KKyAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgdmFsdWUgPSB0cnVlOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RydWN0IFJlbW92ZUNvbnN0IHsNCisgICAgICAgIHR5cGVkZWYgVCBUeXBlOw0KKyAg
ICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNvbnN0PGNv
bnN0IFQ+IHsNCisgICAgICAgIHR5cGVkZWYgVCBUeXBlOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZVZvbGF0aWxlIHsNCisgICAgICAgIHR5cGVk
ZWYgVCBUeXBlOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0
IFJlbW92ZVZvbGF0aWxlPHZvbGF0aWxlIFQ+IHsNCisgICAgICAgIHR5cGVkZWYgVCBUeXBlOw0K
KyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNvbnN0
Vm9sYXRpbGUgew0KKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVWb2xhdGlsZTx0eXBl
bmFtZSBSZW1vdmVDb25zdDxUPjo6VHlwZT46OlR5cGUgVHlwZTsNCisgICAgfTsNCisNCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVQb2ludGVyIHsNCisgICAgICAgIHR5
cGVkZWYgVCBUeXBlOw0KKyAgICB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Ry
dWN0IFJlbW92ZVBvaW50ZXI8VCo+IHsNCisgICAgICAgIHR5cGVkZWYgVCBUeXBlOw0KKyAgICB9
Ow0KKw0KKyNpZiAoZGVmaW5lZChfX0dMSUJDWFhfXykgJiYgKF9fR0xJQkNYWF9fID49IDIwMDcw
NzI0KSkgfHwgKGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxNjAwKSkNCisNCisg
ICAgLy8gR0NDJ3MgbGlic3RkYysrIDIwMDcwNzI0IGFuZCBsYXRlciBzdXBwb3J0cyBDKysgVFIx
IHR5cGVfdHJhaXRzIGluIHRoZSBzdGQgbmFtZXNwYWNlLg0KKyAgICAvLyBWQzEwIChWUzIwMTAp
IGFuZCBsYXRlciBzdXBwb3J0IEMrKyBUUjEgdHlwZV90cmFpdHMgaW4gdGhlIHN0ZDo6dHIxIG5h
bWVzcGFjZS4NCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc1RyaXZpYWxDb25z
dHJ1Y3RvciA6IHB1YmxpYyBzdGQ6OnRyMTo6aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8VD4geyB9
Ow0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3Ig
OiBwdWJsaWMgc3RkOjp0cjE6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD4geyB9Ow0KKw0KKyNl
bHNlDQorDQorICAgIC8vIFRoaXMgY29tcGlsZXIgZG9lc24ndCBwcm92aWRlIHR5cGUgdHJhaXRz
LCBzbyB3ZSBwcm92aWRlIGJhc2ljIEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcg0KKyAgICAvLyBhbmQg
SGFzVHJpdmlhbERlc3RydWN0b3IgZGVmaW5pdGlvbnMuIFRoZSBkZWZpbml0aW9ucyBoZXJlIGlu
Y2x1ZGUgbW9zdCBidWlsdC1pbiANCisgICAgLy8gc2NhbGFyIHR5cGVzIGJ1dCBkbyBub3QgaW5j
bHVkZSBQT0Qgc3RydWN0cyBhbmQgY2xhc3Nlcy4gRm9yIHRoZSBpbnRlbmRlZCBwdXJwb3NlcyBv
ZiANCisgICAgLy8gdHlwZV90cmFpdHMgdGhpcyByZXN1bHRzIGNvcnJlY3QgYnV0IHBvdGVudGlh
bGx5IGxlc3MgZWZmaWNpZW50IGNvZGUuDQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBUIHY+
DQorICAgIHN0cnVjdCBJbnRlZ3JhbENvbnN0YW50IHsNCisgICAgICAgIHN0YXRpYyBjb25zdCBU
IHZhbHVlID0gdjsNCisgICAgICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOw0KKyAgICAgICAgdHlw
ZWRlZiBJbnRlZ3JhbENvbnN0YW50PFQsIHY+IHR5cGU7DQorICAgIH07DQorDQorICAgIHR5cGVk
ZWYgSW50ZWdyYWxDb25zdGFudDxib29sLCB0cnVlPiAgdHJ1ZV90eXBlOw0KKyAgICB0eXBlZGVm
IEludGVncmFsQ29uc3RhbnQ8Ym9vbCwgZmFsc2U+IGZhbHNlX3R5cGU7DQorDQorI2lmIGRlZmlu
ZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxNDAwKQ0KKyAgICAvLyBWQzggKFZTMjAwNSkg
YW5kIGxhdGVyIGhhdmUgYnVpbHQtaW4gY29tcGlsZXIgc3VwcG9ydCBmb3IgSGFzVHJpdmlhbENv
bnN0cnVjdG9yIC8gSGFzVHJpdmlhbERlc3RydWN0b3IsIA0KKyAgICAvLyBidXQgZm9yIHNvbWUg
dW5leHBsYWluZWQgcmVhc29uIGl0IGRvZXNuJ3Qgd29yayBvbiBidWlsdC1pbiB0eXBlcy4NCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3IgOiBw
dWJsaWMgSW50ZWdyYWxDb25zdGFudDxib29sLCBfX2hhc190cml2aWFsX2NvbnN0cnVjdG9yKFQp
PnsgfTsNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1
Y3RvciA6IHB1YmxpYyBJbnRlZ3JhbENvbnN0YW50PGJvb2wsIF9faGFzX3RyaXZpYWxfZGVzdHJ1
Y3RvcihUKT57IH07DQorI2Vsc2UNCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBI
YXNUcml2aWFsQ29uc3RydWN0b3IgOiBwdWJsaWMgZmFsc2VfdHlwZXsgfTsNCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3RvciA6IHB1YmxpYyBmYWxz
ZV90eXBleyB9Ow0KKyNlbmRpZg0KKw0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0
IEhhc1RyaXZpYWxDb25zdHJ1Y3RvcjxUKj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPFQqPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
Q29uc3RydWN0b3I8ZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBmbG9hdD4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9y
PHZvbGF0aWxlIGZsb2F0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgZmxvYXQ+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxD
b25zdHJ1Y3Rvcjxkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBkb3VibGU+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rv
cjx2b2xhdGlsZSBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBkb3VibGU+IDog
cHVibGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZp
YWxDb25zdHJ1Y3Rvcjxsb25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IGxvbmcgZG91Ymxl
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2
aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgbG9uZyBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsg
fTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2
b2xhdGlsZSBsb25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHVuc2lnbmVkIGNoYXI+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25z
dHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgdW5zaWdu
ZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGNoYXI+IDogcHVi
bGljIHRydWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxD
b25zdHJ1Y3Rvcjx1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIHNo
b3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVf
dHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxj
b25zdCB2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHVuc2lnbmVkIGlu
dD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJp
dmlhbENvbnN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHZvbGF0aWxl
IHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGludD4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJp
dmlhbENvbnN0cnVjdG9yPHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25l
ZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBI
YXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9y
PGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisN
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx1bnNpZ25lZCBs
b25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGlj
IHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1
Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsN
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xh
dGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisNCisgICAg
dGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3RvcjxzaWduZWQgY2hhcj4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENv
bnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVk
IGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhh
c1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgY2hhcj4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0
cnVjdG9yPHNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBzaG9ydD4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENv
bnN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0
aWxlIHNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHNpZ25lZCBpbnQ+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rv
cjxjb25zdCBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIGludD4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENv
bnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsg
fTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3RvcjxzaWdu
ZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9s
YXRpbGUgc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgbG9u
Zz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFz
VHJpdmlhbENvbnN0cnVjdG9yPHNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsg
fTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBz
aWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9uZz4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1
Y3Rvcjxib29sPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3QgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHZvbGF0aWxl
IGJvb2w+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhh
c1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBib29sPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8
Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFz
VHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSBjaGFy
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2
aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
Ow0KKw0KKyAgICAjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hB
Ul9UX0RFRklORUQpDQorICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0
cnVjdG9yPHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgd2NoYXJfdD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25z
dHJ1Y3Rvcjx2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgICAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxl
IHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgI2VuZGlmDQorDQorICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3RvcjxmbG9hdD4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8
Y29uc3QgZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIGZsb2F0PiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25z
dCB2b2xhdGlsZSBmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8ZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25z
dCBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qg
dm9sYXRpbGUgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxsb25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8
Y29uc3QgbG9uZyBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIGxvbmcgZG91YmxlPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVz
dHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBsb25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dW5zaWdu
ZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9s
YXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQg
Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbERlc3RydWN0b3I8dW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsg
fTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHVu
c2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydD4gOiBwdWJs
aWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3Ry
dWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsg
fTsNCisNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHVuc2ln
bmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3QgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xh
dGlsZSB1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGlu
dD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFz
VHJpdmlhbERlc3RydWN0b3I8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3QgdW5zaWdu
ZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8
Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dW5zaWduZWQgbG9u
ZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBI
YXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9y
PHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUg
dW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3RvcjxzaWduZWQgY2hhcj4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0
b3I8Y29uc3Qgc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxh
dGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
RGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8c2ln
bmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVf
dHlwZXsgfTsNCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZv
bGF0aWxlIHNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIHNo
b3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBI
YXNUcml2aWFsRGVzdHJ1Y3RvcjxzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQg
aW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2
b2xhdGlsZSBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorDQorICAgIHRlbXBs
YXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3RvcjxzaWduZWQgbG9uZz4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0
b3I8Y29uc3Qgc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgdGVtcGxh
dGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBsb25nPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07DQorICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
RGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8c2ln
bmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJs
aWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3Ry
dWN0b3I8dm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRp
bGUgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Ym9vbD4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29u
c3QgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9s
YXRpbGUgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0K
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3QgY2hhcj4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bERlc3RydWN0b3I8dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgY2hh
cj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKw0KKyAgICAjaWYgIWRlZmluZWQoX01TQ19WRVIp
IHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpDQorICAgICAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8d2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBl
eyB9Ow0KKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNv
bnN0IHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXsgfTsNCisgICAgICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07DQorICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3Ry
dWN0b3I8Y29uc3Qgdm9sYXRpbGUgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Ow0KKyAg
ICAjZW5kaWYNCisNCisjZW5kaWYgIC8vIF9fR0xJQkNYWF9fLCBldGMuDQorDQorfSAvLyBuYW1l
c3BhY2UgV1RGDQorDQorI2VuZGlmIC8vIFR5cGVUcmFpdHNfaA0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29285</attachid>
            <date>2009-04-06 11:48:41 -0700</date>
            <delta_ts>2009-04-06 11:54:45 -0700</delta_ts>
            <desc>Same patch as before, updated</desc>
            <filename>FastMalloc3.patch</filename>
            <type>text/plain</type>
            <size>45659</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0MjI0NSkKKysrIEphdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00MjksNiArNDI5LDcgQEAKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RyYWNpbmcuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9VU3RyaW5nLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggXAorCUph
dmFTY3JpcHRDb3JlL3d0Zi9GYXN0QWxsb2NCYXNlLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9G
YXN0TWFsbG9jLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCBcCiAJSmF2
YVNjcmlwdENvcmUvd3RmL01hbGxvY1pvbmVTdXBwb3J0LmggXApJbmRleDogSmF2YVNjcmlwdENv
cmUvd3RmL1R5cGVUcmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVHlw
ZVRyYWl0cy5oCShyZXZpc2lvbiA0MjI0NSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9UeXBlVHJh
aXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDEwIEBACiAKICNpbmNsdWRlICJQbGF0
Zm9ybS5oIgogCisjaWYgKGRlZmluZWQoX19HTElCQ1hYX18pICYmIChfX0dMSUJDWFhfXyA+PSAy
MDA3MDcyNCkpIHx8IChkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTYwMCkpCisj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKICAgICAv
LyBUaGUgZm9sbG93aW5nIGFyZSBwcm92aWRlZCBpbiB0aGlzIGZpbGU6CkBAIC0xMjgsNiArMTMy
LDIwOCBAQAogICAgICAgICB0eXBlZGVmIFQgVHlwZTsKICAgICB9OwogCisjaWYgKGRlZmluZWQo
X19HTElCQ1hYX18pICYmIChfX0dMSUJDWFhfXyA+PSAyMDA3MDcyNCkpIHx8IChkZWZpbmVkKF9N
U0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTYwMCkpCisKKyAgICAvLyBHQ0MncyBsaWJzdGRjKysg
MjAwNzA3MjQgYW5kIGxhdGVyIHN1cHBvcnRzIEMrKyBUUjEgdHlwZV90cmFpdHMgaW4gdGhlIHN0
ZCBuYW1lc3BhY2UuCisgICAgLy8gVkMxMCAoVlMyMDEwKSBhbmQgbGF0ZXIgc3VwcG9ydCBDKysg
VFIxIHR5cGVfdHJhaXRzIGluIHRoZSBzdGQ6OnRyMSBuYW1lc3BhY2UuCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3RvciA6IHB1YmxpYyBzdGQ6OnRy
MTo6aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8VD4geyB9OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3RvciA6IHB1YmxpYyBzdGQ6OnRyMTo6aGFzX3Ry
aXZpYWxfZGVzdHJ1Y3RvcjxUPiB7IH07CisKKyNlbHNlCisKKyAgICAvLyBUaGlzIGNvbXBpbGVy
IGRvZXNuJ3QgcHJvdmlkZSB0eXBlIHRyYWl0cywgc28gd2UgcHJvdmlkZSBiYXNpYyBIYXNUcml2
aWFsQ29uc3RydWN0b3IKKyAgICAvLyBhbmQgSGFzVHJpdmlhbERlc3RydWN0b3IgZGVmaW5pdGlv
bnMuIFRoZSBkZWZpbml0aW9ucyBoZXJlIGluY2x1ZGUgbW9zdCBidWlsdC1pbiAKKyAgICAvLyBz
Y2FsYXIgdHlwZXMgYnV0IGRvIG5vdCBpbmNsdWRlIFBPRCBzdHJ1Y3RzIGFuZCBjbGFzc2VzLiBG
b3IgdGhlIGludGVuZGVkIHB1cnBvc2VzIG9mIAorICAgIC8vIHR5cGVfdHJhaXRzIHRoaXMgcmVz
dWx0cyBjb3JyZWN0IGJ1dCBwb3RlbnRpYWxseSBsZXNzIGVmZmljaWVudCBjb2RlLgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCBUIHY+CisgICAgc3RydWN0IEludGVncmFsQ29uc3RhbnQgewor
ICAgICAgICBzdGF0aWMgY29uc3QgVCB2YWx1ZSA9IHY7CisgICAgICAgIHR5cGVkZWYgVCB2YWx1
ZV90eXBlOworICAgICAgICB0eXBlZGVmIEludGVncmFsQ29uc3RhbnQ8VCwgdj4gdHlwZTsKKyAg
ICB9OworCisgICAgdHlwZWRlZiBJbnRlZ3JhbENvbnN0YW50PGJvb2wsIHRydWU+ICB0cnVlX3R5
cGU7CisgICAgdHlwZWRlZiBJbnRlZ3JhbENvbnN0YW50PGJvb2wsIGZhbHNlPiBmYWxzZV90eXBl
OworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE0MDApCisgICAgLy8g
VkM4IChWUzIwMDUpIGFuZCBsYXRlciBoYXZlIGJ1aWx0LWluIGNvbXBpbGVyIHN1cHBvcnQgZm9y
IEhhc1RyaXZpYWxDb25zdHJ1Y3RvciAvIEhhc1RyaXZpYWxEZXN0cnVjdG9yLCAKKyAgICAvLyBi
dXQgZm9yIHNvbWUgdW5leHBsYWluZWQgcmVhc29uIGl0IGRvZXNuJ3Qgd29yayBvbiBidWlsdC1p
biB0eXBlcy4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEhhc1RyaXZpYWxDb25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlZ3JhbENvbnN0YW50PGJvb2wsIF9faGFzX3RyaXZpYWxfY29u
c3RydWN0b3IoVCk+eyB9OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzVHJp
dmlhbERlc3RydWN0b3IgOiBwdWJsaWMgSW50ZWdyYWxDb25zdGFudDxib29sLCBfX2hhc190cml2
aWFsX2Rlc3RydWN0b3IoVCk+eyB9OworI2Vsc2UKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3RvciA6IHB1YmxpYyBmYWxzZV90eXBleyB9OworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3IgOiBwdWJs
aWMgZmFsc2VfdHlwZXsgfTsKKyNlbmRpZgorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8VCo+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPFQqPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bENvbnN0cnVjdG9yPGZsb2F0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBmbG9hdD4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8
dm9sYXRpbGUgZmxvYXQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGZsb2F0PiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0
cnVjdG9yPGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3QgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xh
dGlsZSBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGRvdWJsZT4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1
Y3Rvcjxsb25nIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3QgbG9uZyBkb3VibGU+IDogcHVibGlj
IHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVj
dG9yPHZvbGF0aWxlIGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBsb25n
IGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7
IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB1
bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBjaGFyPiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1
Y3Rvcjxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHVuc2lnbmVk
IHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhh
c1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9s
YXRpbGUgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVk
IHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbENvbnN0cnVjdG9yPHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3QgdW5z
aWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9y
PGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworCisg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx1bnNpZ25lZCBsb25n
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZp
YWxDb25zdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSB1
bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bENvbnN0cnVjdG9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Owor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3QgdW5zaWdu
ZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDog
cHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENv
bnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rv
cjxzaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGNoYXI+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9y
PHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxh
dGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQg
Y2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhh
c1RyaXZpYWxDb25zdHJ1Y3RvcjxzaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsK
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHNpZ25l
ZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBI
YXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxj
b25zdCB2b2xhdGlsZSBzaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKworICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8c2lnbmVkIGludD4gOiBw
dWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29u
c3RydWN0b3I8Y29uc3Qgc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgc2lnbmVkIGlu
dD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2
aWFsQ29uc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxz
aWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y29uc3Qgc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVf
dHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHZv
bGF0aWxlIHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUg
PD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgbG9u
Zz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1Ry
aXZpYWxDb25zdHJ1Y3RvcjxzaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07
CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjxjb25zdCBzaWdu
ZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEhhc1RyaXZpYWxDb25zdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQgbG9uZyBsb25nPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxDb25z
dHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBzaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPGJv
b2w+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJp
dmlhbENvbnN0cnVjdG9yPGNvbnN0IGJvb2w+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHZvbGF0aWxlIGJvb2w+IDog
cHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENv
bnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGJvb2w+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKwor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8Y2hhcj4gOiBwdWJs
aWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3Ry
dWN0b3I8Y29uc3QgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+
IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8
Y29uc3Qgdm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworCisgICAgI2lmICFk
ZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQorICAg
ICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbENvbnN0cnVjdG9yPHdjaGFyX3Q+IDog
cHVibGljIHRydWVfdHlwZXsgfTsKKyAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZp
YWxDb25zdHJ1Y3Rvcjxjb25zdCB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAg
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsQ29uc3RydWN0b3I8dm9sYXRpbGUgd2No
YXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbENvbnN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsKKyAgICAjZW5kaWYKKworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2
aWFsRGVzdHJ1Y3RvcjxmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCBmbG9hdD4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2
b2xhdGlsZSBmbG9hdD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSBmbG9hdD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVj
dG9yPGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVj
dCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCBkb3VibGU+IDogcHVibGljIHRydWVfdHlwZXsg
fTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUg
ZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhh
c1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGRvdWJsZT4gOiBwdWJsaWMgdHJ1ZV90
eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGxv
bmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0
aWxlIGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGxvbmcgZG91YmxlPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlh
bERlc3RydWN0b3I8dW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRl
bXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBjaGFy
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZp
YWxEZXN0cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsg
fTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9s
YXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworCisgICAgdGVtcGxh
dGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHVuc2lnbmVkIHNob3J0PiA6IHB1Ymxp
YyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVj
dG9yPGNvbnN0IHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1Ry
aXZpYWxEZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0
b3I8dW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHVuc2lnbmVkIGludD4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rv
cjx2b2xhdGlsZSB1bnNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgdW5zaWdu
ZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbERlc3RydWN0b3I8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9
OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB1bnNp
Z25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0
IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRy
dWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8
Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworCisg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHVuc2lnbmVkIGxvbmcg
bG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVf
dHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9s
YXRpbGUgdW5zaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIHVuc2ln
bmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4g
c3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0
IHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9y
PGNvbnN0IHZvbGF0aWxlIHNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisKKyAg
ICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8c2lnbmVkIHNob3J0PiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxE
ZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSBzaWduZWQg
c2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFz
VHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0
cnVlX3R5cGV7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0
b3I8c2lnbmVkIGludD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCBzaWduZWQgaW50PiA6IHB1YmxpYyB0cnVl
X3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZv
bGF0aWxlIHNpZ25lZCBpbnQ+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGludD4g
OiBwdWJsaWMgdHJ1ZV90eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZp
YWxEZXN0cnVjdG9yPHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVt
cGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHNpZ25lZCBsb25nPiA6
IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxE
ZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07Cisg
ICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxl
IHNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisKKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8c2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxj
b25zdCBzaWduZWQgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxh
dGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVjdG9yPHZvbGF0aWxlIHNpZ25lZCBsb25nIGxv
bmc+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFzVHJp
dmlhbERlc3RydWN0b3I8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGxvbmcgbG9uZz4gOiBwdWJsaWMg
dHJ1ZV90eXBleyB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0cnVj
dG9yPGJvb2w+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
SGFzVHJpdmlhbERlc3RydWN0b3I8Y29uc3QgYm9vbD4gOiBwdWJsaWMgdHJ1ZV90eXBleyB9Owor
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSBib29s
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZp
YWxEZXN0cnVjdG9yPGNvbnN0IHZvbGF0aWxlIGJvb2w+IDogcHVibGljIHRydWVfdHlwZXsgfTsK
KworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3RvcjxjaGFyPiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07CisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhhc1RyaXZpYWxEZXN0
cnVjdG9yPGNvbnN0IGNoYXI+IDogcHVibGljIHRydWVfdHlwZXsgfTsKKyAgICB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgSGFzVHJpdmlhbERlc3RydWN0b3I8dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1
ZV90eXBleyB9OworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjxj
b25zdCB2b2xhdGlsZSBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisKKyAgICAjaWYgIWRl
ZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpCisgICAg
ICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx3Y2hhcl90PiA6IHB1
YmxpYyB0cnVlX3R5cGV7IH07CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFs
RGVzdHJ1Y3Rvcjxjb25zdCB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgICAg
IHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNUcml2aWFsRGVzdHJ1Y3Rvcjx2b2xhdGlsZSB3Y2hhcl90
PiA6IHB1YmxpYyB0cnVlX3R5cGV7IH07CisgICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIYXNU
cml2aWFsRGVzdHJ1Y3Rvcjxjb25zdCB2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5
cGV7IH07CisgICAgI2VuZGlmCisKKyNlbmRpZiAgLy8gX19HTElCQ1hYX18sIGV0Yy4KKwogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBUeXBlVHJhaXRzX2gKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L0Zhc3RNYWxsb2MuaAkocmV2aXNpb24gNDIyNDUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRmFz
dE1hbGxvYy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw5NSBAQAogICAgIH07CiAgICAg
RmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsKIAorICAgIC8vIFRo
aXMgZGVmaW5lcyBhIHR5cGUgd2hpY2ggaG9sZHMgYW4gdW5zaWduZWQgaW50ZWdlciBhbmQgaXMg
dGhlIHNhbWUgCisgICAgLy8gc2l6ZSBhcyB0aGUgbWluaW1hbGx5IGFsaWduZWQgbWVtb3J5IGFs
bG9jYXRpb24uCisgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgQWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyOworCisgICAgbmFtZXNwYWNlIEludGVybmFsIHsKKyAgICAgICAgZW51bSBBbGxvY1R5
cGUgeyAgICAgICAgICAgICAgICAgICAgLy8gU3RhcnQgd2l0aCBhbiB1bnVzdWFsIG51bWJlciBp
bnN0ZWFkIG9mIHplcm8sIGJlY2F1c2UgemVybyBpcyBjb21tb24uCisgICAgICAgICAgICBBbGxv
Y1R5cGVNYWxsb2MgPSAweDM3NWQ2NzUwLCAgIC8vIEVuY29tcGFzc2VzIGZhc3RNYWxsb2MsIGZh
c3RaZXJvZWRNYWxsb2MsIGZhc3RDYWxsb2MsIGZhc3RSZWFsbG9jLgorICAgICAgICAgICAgQWxs
b2NUeXBlQ2xhc3NOZXcsICAgICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBjbGFzcyBvcGVyYXRv
ciBuZXcgZnJvbSBGYXN0QWxsb2NCYXNlLiAKKyAgICAgICAgICAgIEFsbG9jVHlwZUNsYXNzTmV3
QXJyYXksICAgICAgICAgLy8gRW5jb21wYXNzZXMgY2xhc3Mgb3BlcmF0b3IgbmV3W10gZnJvbSBG
YXN0QWxsb2NCYXNlLiAKKyAgICAgICAgICAgIEFsbG9jVHlwZUZhc3ROZXcsICAgICAgICAgICAg
ICAgLy8gRW5jb21wYXNzZXMgZmFzdE5ldy4KKyAgICAgICAgICAgIEFsbG9jVHlwZUZhc3ROZXdB
cnJheSwgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZmFzdE5ld0FycmF5LgorICAgICAgICAgICAg
QWxsb2NUeXBlTmV3LCAgICAgICAgICAgICAgICAgICAvLyBFbmNvbXBhc3NlcyBnbG9iYWwgb3Bl
cmF0b3IgbmV3LgorICAgICAgICAgICAgQWxsb2NUeXBlTmV3QXJyYXkgICAgICAgICAgICAgICAv
LyBFbmNvbXBhc3NlcyBnbG9iYWwgb3BlcmF0b3IgbmV3W10uCisgICAgICAgIH07CisgICAgfQor
CisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisKKyAgICAvLyBNYWxs
b2MgdmFsaWRhdGlvbiBpcyBhIHNjaGVtZSB3aGVyZWJ5IGEgdGFnIGlzIGF0dGFjaGVkIHRvIGFu
IAorICAgIC8vIGFsbG9jYXRpb24gd2hpY2ggaWRlbnRpZmllcyBob3cgaXQgd2FzIG9yaWdpbmFs
bHkgYWxsb2NhdGVkLiAKKyAgICAvLyBUaGlzIGFsbG93cyB1cyB0byB2ZXJpZnkgdGhhdCB0aGUg
ZnJlZWluZyBvcGVyYXRpb24gbWF0Y2hlcyB0aGUgCisgICAgLy8gYWxsb2NhdGlvbiBvcGVyYXRp
b24uIElmIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBvcGVyYXRvciBuZXdbXSAKKyAgICAvLyBi
dXQgZnJlZWQgd2l0aCBmcmVlIG9yIGRlbGV0ZSwgdGhpcyBzeXN0ZW0gd291bGQgZGV0ZWN0IHRo
YXQuIAorICAgIC8vIEluIHRoZSBpbXBsZW1lbnRhdGlvbiBoZXJlLCB0aGUgdGFnIGlzIGFuIGlu
dGVnZXIgcHJlcGVuZGVkIHRvIAorICAgIC8vIHRoZSBhbGxvY2F0aW9uIG1lbW9yeSB3aGljaCBp
cyBhc3NpZ25lZCBvbmUgb2YgdGhlIEFsbG9jVHlwZQorICAgIC8vIGVudW1lcmF0aW9uIHZhbHVl
cy4gQW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyAKKyAgICAvLyBzY2hlbWUg
Y291bGQgc3RvcmUgdGhlIHRhZyBzb21ld2hlcmUgZWxzZSBvciBpZ25vcmUgaXQuIAorICAgIC8v
IFVzZXJzIG9mIEZhc3RNYWxsb2MgZG9uJ3QgbmVlZCB0byBrbm93IG9yIGNhcmUgaG93IHRoaXMg
dGFnZ2luZyAKKyAgICAvLyBpcyBpbXBsZW1lbnRlZC4gCisKKyAgICBuYW1lc3BhY2UgSW50ZXJu
YWwgeworCisgICAgICAgIC8vIFJldHVybiB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdp
dGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgorICAgICAgICBpbmxpbmUgQWxsb2NUeXBlIGZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKGNvbnN0IHZvaWQqIHApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnN0IEFsbG9jQWxpZ25tZW50SW50ZWdlciogdHlwZSA9IHN0YXRpY19jYXN0PGNv
bnN0IEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHApIC0gMTsKKyAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxBbGxvY1R5cGU+KCp0eXBlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJl
dHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhl
IGFsbG9jYXRlZCBibG9jayBwLgorICAgICAgICBpbmxpbmUgQWxsb2NBbGlnbm1lbnRJbnRlZ2Vy
KiBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUodm9pZCogcCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4o
c3RhdGljX2Nhc3Q8Y2hhcio+KHApIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0IHRoZSBBbGxvY1R5cGUgdGFnIHRvIGJlIGFzc29j
aWFnZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCisgICAgICAgIGlubGluZSB2b2lkIHNl
dEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHZvaWQqIHAsIEFsbG9jVHlwZSBhbGxvY1R5
cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFsbG9jQWxpZ25tZW50SW50ZWdlciogdHlwZSA9
IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHApIC0gMTsKKyAgICAgICAgICAg
ICp0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyPihhbGxvY1R5cGUpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gSGFuZGxlIGEgZGV0ZWN0ZWQgYWxsb2MvZnJlZSBtaXNt
YXRjaC4gQnkgZGVmYXVsdCB0aGlzIGNhbGxzIENSQVNIKCkuCisgICAgICAgIHZvaWQgZmFzdE1h
bGxvY01hdGNoRmFpbGVkKHZvaWQqIHApOworCisgICAgfSAvLyBuYW1lc3BhY2UgSW50ZXJuYWwK
KworICAgIC8vIFRoaXMgaXMgYSBoaWdoZXIgbGV2ZWwgZnVuY3Rpb24gd2hpY2ggaXMgdXNlZCBi
eSBGYXN0TWFsbG9jLXVzaW5nIGNvZGUuCisgICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGVNYWxsb2Modm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUpCisg
ICAgeworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgSW50
ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIGFsbG9jVHlwZSk7Cisg
ICAgfQorCisgICAgLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBmdW5jdGlvbiB3aGljaCBpcyB1
c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4KKyAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9j
TWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUp
CisgICAgeworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShwKSAhPSBhbGxvY1R5
cGUpCisgICAgICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOworICAg
ICAgICBJbnRlcm5hbDo6c2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCwgSW50ZXJu
YWw6OkFsbG9jVHlwZU1hbGxvYyk7ICAvLyBTZXQgaXQgdG8gdGhpcyBzbyB0aGF0IGZhc3RGcmVl
IHRoaW5rcyBpdCdzIE9LLgorICAgIH0KKworI2Vsc2UKKworICAgIGlubGluZSB2b2lkIGZhc3RN
YWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQorICAg
IHsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUo
dm9pZCosIEludGVybmFsOjpBbGxvY1R5cGUpCisgICAgeworICAgIH0KKworI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmZhc3RNYWxsb2M7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3d0Zi9GYXN0QWxsb2NCYXNlLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYv
RmFzdEFsbG9jQmFzZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBQYXVsIFBlZHJpYW5hLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV1RGX0Zhc3RBbGxvY0Jhc2VfaAorI2RlZmluZSBXVEZfRmFzdEFsbG9jQmFzZV9oCisKKy8v
IFByb3ZpZGVzIGN1c3RvbWl6YWJsZSBvdmVycmlkZXMgb2YgZmFzdE1hbGxvYy9mYXN0RnJlZSBh
bmQgb3BlcmF0b3IgbmV3L2RlbGV0ZQorLy8KKy8vIFByb3ZpZGVkIGZ1bmN0aW9uYWxpdHk6Cisv
LyAgICBuYW1lc3BhY2UgV1RGIHsgCisvLyAgICAgICAgY2xhc3MgRmFzdEFsbG9jQmFzZTsKKy8v
CisvLyAgICAgICAgVCogICAgZmFzdE5ldzxUPigpOworLy8gICAgICAgIFQqICAgIGZhc3ROZXc8
VD4oYXJnKTsKKy8vICAgICAgICBUKiAgICBmYXN0TmV3PFQ+KGFyZywgYXJnKTsKKy8vICAgICAg
ICBUKiAgICBmYXN0TmV3QXJyYXk8VD4oY291bnQpOworLy8gICAgICAgIHZvaWQgIGZhc3REZWxl
dGUoVCogcCk7CisvLyAgICAgICAgdm9pZCAgZmFzdERlbGV0ZUFycmF5KFQqIHApOworLy8gICAg
ICAgIHZvaWQgIGZhc3ROb25OdWxsRGVsZXRlKFQqIHApOworLy8gICAgICAgIHZvaWQgIGZhc3RO
b25OdWxsRGVsZXRlQXJyYXkoVCogcCk7CisvLyAgICB9CisvLworLy8gRmFzdERlbGV0ZSBhc3N1
bWVzIHRoYXQgdGhlIHVuZGVybHlpbmcgCisvLworLy8gRXhhbXBsZSB1c2FnZToKKy8vICAgIGNs
YXNzIFdpZGdldCA6IHB1YmxpYyBGYXN0QWxsb2NCYXNlIHsgLi4uIH07CisvLworLy8gICAgY2hh
ciogY2hhclB0ciA9IGZhc3ROZXc8Y2hhcj4oKTsKKy8vICAgIGZhc3REZWxldGUoY2hhclB0cik7
CisvLworLy8gICAgY2hhciogY2hhckFycmF5UHRyID0gZmFzdE5ld0FycmF5PGNoYXI+KDM3KTsK
Ky8vICAgIGZhc3REZWxldGVBcnJheShjaGFyQXJyYXlQdHIpOworLy8KKy8vICAgIHZvaWQqKiB2
b2lkUHRyUHRyID0gZmFzdE5ldzx2b2lkKj4oKTsKKy8vICAgIGZhc3REZWxldGUodm9pZFB0clB0
cik7CisvLworLy8gICAgdm9pZCoqIHZvaWRQdHJBcnJheVB0ciA9IGZhc3ROZXdBcnJheTx2b2lk
Kj4oMzcpOworLy8gICAgZmFzdERlbGV0ZUFycmF5KHZvaWRQdHJBcnJheVB0cik7CisvLworLy8g
ICAgUE9EKiBwb2RQdHIgPSBmYXN0TmV3PFBPRD4oKTsKKy8vICAgIGZhc3REZWxldGUocG9kUHRy
KTsKKy8vCisvLyAgICBQT0QqIHBvZEFycmF5UHRyID0gZmFzdE5ld0FycmF5PFBPRD4oMzcpOwor
Ly8gICAgZmFzdERlbGV0ZUFycmF5KHBvZEFycmF5UHRyKTsKKy8vCisvLyAgICBPYmplY3QqIG9i
amVjdFB0ciA9IGZhc3ROZXc8T2JqZWN0PigpOworLy8gICAgZmFzdERlbGV0ZShvYmplY3RQdHIp
OworLy8KKy8vICAgIE9iamVjdCogb2JqZWN0QXJyYXlQdHIgPSBmYXN0TmV3QXJyYXk8T2JqZWN0
PigzNyk7CisvLyAgICBmYXN0RGVsZXRlQXJyYXkob2JqZWN0QXJyYXlQdHIpOworLy8KKworI2lu
Y2x1ZGUgPG5ldz4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNp
bmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4KKworbmFtZXNw
YWNlIFdURiB7CisKKyAgICBjbGFzcyBGYXN0QWxsb2NCYXNlIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIC8vIFBsYWNlbWVudCBvcGVyYXRvciBuZXcuCisgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0KKyAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9CisKKyAgICAgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICB2b2lkKiBwID0g
ZmFzdE1hbGxvYyhzaXplKTsKKyAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFs
bG9jKHAsIEludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ldyk7CisgICAgICAgICAgICByZXR1cm4g
cDsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCBJbnRl
cm5hbDo6QWxsb2NUeXBlQ2xhc3NOZXcpOworICAgICAgICAgICAgZmFzdEZyZWUocCk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgdm9pZCogcCA9IGZhc3RNYWxsb2Moc2l6ZSk7CisgICAgICAgICAg
ICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlQ2xh
c3NOZXdBcnJheSk7CisgICAgICAgICAgICByZXR1cm4gcDsKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHAsIEludGVybmFsOjpBbGxvY1R5cGVDbGFzc05l
d0FycmF5KTsKKyAgICAgICAgICAgIGZhc3RGcmVlKHApOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIC8vIGZhc3ROZXcgLyBmYXN0RGVsZXRlCisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgICBpbmxpbmUgVCogZmFzdE5ldygpCisgICAgeworICAgICAgICB2b2lkKiBwID0gZmFzdE1h
bGxvYyhzaXplb2YoVCkpOworCisgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgIHJldHVybiAw
OworCisgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFsOjpB
bGxvY1R5cGVGYXN0TmV3KTsKKyAgICAgICAgcmV0dXJuIDo6bmV3KHApIFQ7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZzE+CisgICAgaW5saW5lIFQqIGZh
c3ROZXcoQXJnMSBhcmcxKQorICAgIHsKKyAgICAgICAgdm9pZCogcCA9IGZhc3RNYWxsb2Moc2l6
ZW9mKFQpKTsKKworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAg
ICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBl
RmFzdE5ldyk7CisgICAgICAgIHJldHVybiA6Om5ldyhwKSBUKGFyZzEpOworICAgIH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyPgorICAg
IGlubGluZSBUKiBmYXN0TmV3KEFyZzEgYXJnMSwgQXJnMiBhcmcyKQorICAgIHsKKyAgICAgICAg
dm9pZCogcCA9IGZhc3RNYWxsb2Moc2l6ZW9mKFQpKTsKKworICAgICAgICBpZiAoIXApCisgICAg
ICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxv
YyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7CisgICAgICAgIHJldHVybiA6Om5ldyhw
KSBUKGFyZzEsIGFyZzIpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB0eXBlbmFtZSBBcmczPgorICAgIGlubGluZSBUKiBm
YXN0TmV3KEFyZzEgYXJnMSwgQXJnMiBhcmcyLCBBcmczIGFyZzMpCisgICAgeworICAgICAgICB2
b2lkKiBwID0gZmFzdE1hbGxvYyhzaXplb2YoVCkpOworCisgICAgICAgIGlmICghcCkKKyAgICAg
ICAgICAgIHJldHVybiAwOworCisgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9j
KHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsKKyAgICAgICAgcmV0dXJuIDo6bmV3KHAp
IFQoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHR5cGVuYW1lIEFyZzMsIHR5cGVuYW1lIEFy
ZzQ+CisgICAgaW5saW5lIFQqIGZhc3ROZXcoQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZzMgYXJn
MywgQXJnNCBhcmc0KQorICAgIHsKKyAgICAgICAgdm9pZCogcCA9IGZhc3RNYWxsb2Moc2l6ZW9m
KFQpKTsKKworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAg
ICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFz
dE5ldyk7CisgICAgICAgIHJldHVybiA6Om5ldyhwKSBUKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQp
OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcxLCB0eXBl
bmFtZSBBcmcyLCB0eXBlbmFtZSBBcmczLCB0eXBlbmFtZSBBcmc0LCB0eXBlbmFtZSBBcmc1Pgor
ICAgIGlubGluZSBUKiBmYXN0TmV3KEFyZzEgYXJnMSwgQXJnMiBhcmcyLCBBcmczIGFyZzMsIEFy
ZzQgYXJnNCwgQXJnNSBhcmc1KQorICAgIHsKKyAgICAgICAgdm9pZCogcCA9IGZhc3RNYWxsb2Mo
c2l6ZW9mKFQpKTsKKworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICByZXR1cm4gMDsKKwor
ICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NU
eXBlRmFzdE5ldyk7CisgICAgICAgIHJldHVybiA6Om5ldyhwKSBUKGFyZzEsIGFyZzIsIGFyZzMs
IGFyZzQsIGFyZzUpOworICAgIH0KKworICAgIG5hbWVzcGFjZSBJbnRlcm5hbCB7CisKKyAgICAg
ICAgLy8gV2UgZGVmaW5lIGEgdW5pb24gb2YgcG9pbnRlciB0byBhbiBpbnRlZ2VyIGFuZCBwb2lu
dGVyIHRvIFQuCisgICAgICAgIC8vIFdoZW4gbm9uLVBPRCBhcnJheXMgYXJlIGFsbG9jYXRlZCB3
ZSBhZGQgYSBmZXcgbGVhZGluZyBieXRlcyB0byB0ZWxsIHdoYXQKKyAgICAgICAgLy8gdGhlIHNp
emUgb2YgdGhlIGFycmF5IGlzLiBXZSByZXR1cm4gdG8gdGhlIHVzZXIgdGhlIHBvaW50ZXIgdG8g
VC4KKyAgICAgICAgLy8gVGhlIHdheSB0byB0aGluayBvZiBpdCBpcyBhcyBpZiB3ZSBhbGxvY2F0
ZSBhIHN0cnVjdCBsaWtlIHNvOgorICAgICAgICAvLyAgICBzdHJ1Y3QgQXJyYXkgeworICAgICAg
ICAvLyAgICAgICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyIG1fc2l6ZTsKKyAgICAgICAgLy8gICAg
ICAgIFQgbV9UW2FycmF5IGNvdW50XTsKKyAgICAgICAgLy8gICAgfTsKKworICAgICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgdW5pb24gQXJyYXlTaXplIHsKKyAgICAgICAgICAg
IEFsbG9jQWxpZ25tZW50SW50ZWdlciogc2l6ZTsKKyAgICAgICAgICAgIFQqIHQ7CisgICAgICAg
IH07CisKKyAgICAgICAgLy8gVGhpcyBpcyBhIHN1cHBvcnQgdGVtcGxhdGUgZm9yIGZhc3ROZXdB
cnJheS4KKyAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlaW4gVCBoYXMgYSB0
cml2aWFsIGN0b3IgYW5kIGEgdHJpdmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgYm9vbCB0cml2aWFsQ3RvciwgYm9vbCB0cml2aWFsRHRvcj4KKyAgICAgICAgc3RydWN0
IE5ld0FycmF5SW1wbCB7CisgICAgICAgICAgICBzdGF0aWMgVCogZmFzdE5ld0FycmF5KHNpemVf
dCBjb3VudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUKiBwID0gc3RhdGljX2Nh
c3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFQpICogY291bnQpKTsKKyAgICAgICAgICAgICAgICBm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5l
d0FycmF5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKworICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdE5l
d0FycmF5LgorICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVpbiBUIGhhcyBh
IG5vbi10cml2aWFsIGN0b3IgYW5kIGEgdHJpdmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgICAgICAgc3RydWN0IE5ld0FycmF5SW1wbDxULCBmYWxzZSwgdHJ1ZT4g
eworICAgICAgICAgICAgc3RhdGljIFQqIGZhc3ROZXdBcnJheShzaXplX3QgY291bnQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgVCogcCA9IHN0YXRpY19jYXN0PFQqPihmYXN0TWFs
bG9jKHNpemVvZihUKSAqIGNvdW50KSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXApCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICAgICAgZmFzdE1hbGxvY01h
dGNoVmFsaWRhdGVNYWxsb2MocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXdBcnJheSk7CisK
KyAgICAgICAgICAgICAgICBmb3IgKFQqIHBPYmplY3QgPSBwLCAqcE9iamVjdEVuZCA9IHBPYmpl
Y3QgKyBjb3VudDsgcE9iamVjdCAhPSBwT2JqZWN0RW5kOyArK3BPYmplY3QpCisgICAgICAgICAg
ICAgICAgICAgIDo6bmV3KHBPYmplY3QpIFQ7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9y
dCB0ZW1wbGF0ZSBmb3IgZmFzdE5ld0FycmF5LgorICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhl
IGNhc2Ugd2hlcmVpbiBUIGhhcyBhIHRyaXZpYWwgY3RvciBhbmQgYSBub24tdHJpdmlhbCBkdG9y
LgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RydWN0IE5ld0FycmF5
SW1wbDxULCB0cnVlLCBmYWxzZT4geworICAgICAgICAgICAgc3RhdGljIFQqIGZhc3ROZXdBcnJh
eShzaXplX3QgY291bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdm9pZCogcCA9
IGZhc3RNYWxsb2Moc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikgKyAoc2l6ZW9mKFQpICog
Y291bnQpKTsKKyAgICAgICAgICAgICAgICBBcnJheVNpemU8VD4gYSA9IHsgc3RhdGljX2Nhc3Q8
QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgfTsKKworICAgICAgICAgICAgICAgIGlmICghcCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgICAgICBmYXN0TWFs
bG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5
KTsKKyAgICAgICAgICAgICAgICAqYS5zaXplKysgPSBjb3VudDsKKyAgICAgICAgICAgICAgICAv
LyBObyBuZWVkIHRvIGNvbnN0cnVjdCB0aGUgb2JqZWN0cyBpbiB0aGlzIGNhc2UuCisKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYS50OworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBmYXN0TmV3QXJyYXkuCisgICAg
ICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWluIFQgaGFzIGEgbm9uLXRyaXZpYWwg
Y3RvciBhbmQgYSBub24tdHJpdmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICAgICAgc3RydWN0IE5ld0FycmF5SW1wbDxULCBmYWxzZSwgZmFsc2U+IHsKKyAgICAg
ICAgICAgIHN0YXRpYyBUKiBmYXN0TmV3QXJyYXkoc2l6ZV90IGNvdW50KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHZvaWQqIHAgPSBmYXN0TWFsbG9jKHNpemVvZihBbGxvY0FsaWdu
bWVudEludGVnZXIpICsgKHNpemVvZihUKSAqIGNvdW50KSk7CisgICAgICAgICAgICAgICAgQXJy
YXlTaXplPFQ+IGEgPSB7IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHApIH07
CisKKyAgICAgICAgICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAw
OworCisgICAgICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgSW50
ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXdBcnJheSk7CisgICAgICAgICAgICAgICAgKmEuc2l6ZSsr
ID0gY291bnQ7CisKKyAgICAgICAgICAgICAgICBmb3IgKFQqIHBUID0gYS50LCAqcFRFbmQgPSBw
VCArIGNvdW50OyBwVCAhPSBwVEVuZDsgKytwVCkKKyAgICAgICAgICAgICAgICAgICAgOjpuZXco
cFQpIFQ7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gYS50OworICAgICAgICAgICAgfQorICAg
ICAgICB9OworICAgIH0gLy8gbmFtZXNwYWNlIEludGVybmFsCisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgICBpbmxpbmUgVCogZmFzdE5ld0FycmF5KHNpemVfdCBjb3VudCkKKyAgICB7
CisgICAgICAgIHJldHVybiBJbnRlcm5hbDo6TmV3QXJyYXlJbXBsPFQsIFdURjo6SGFzVHJpdmlh
bENvbnN0cnVjdG9yPFQ+Ojp2YWx1ZSwgV1RGOjpIYXNUcml2aWFsRGVzdHJ1Y3RvcjxUPjo6dmFs
dWU+OjpmYXN0TmV3QXJyYXkoY291bnQpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICAgIGlubGluZSB2b2lkIGZhc3REZWxldGUoVCogcCkKKyAgICB7CisgICAgICAgIGlm
ICghcCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxp
ZGF0ZUZyZWUocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXcpOworICAgICAgICBwLT5+VCgp
OworICAgICAgICBmYXN0RnJlZShwKTsKKyAgICB9CisKKyAgICBuYW1lc3BhY2UgSW50ZXJuYWwg
eworICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdERlbGV0ZUFy
cmF5LgorICAgICAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVpbiBUIGhhcyBhIHRy
aXZpYWwgZHRvci4KKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgdHJpdmlhbER0
b3I+CisgICAgICAgIHN0cnVjdCBEZWxldGVBcnJheUltcGwgeworICAgICAgICAgICAgc3RhdGlj
IHZvaWQgZmFzdERlbGV0ZUFycmF5KHZvaWQqIHApCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgLy8gTm8gbmVlZCB0byBkZXN0cnVjdCB0aGUgb2JqZWN0cyBpbiB0aGlzIGNhc2UuCisg
ICAgICAgICAgICAgICAgLy8gV2UgZXhwZWN0IHRoYXQgZmFzdEZyZWUgY2hlY2tzIGZvciBudWxs
LgorICAgICAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShwLCBJbnRlcm5h
bDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5KTsKKyAgICAgICAgICAgICAgICBmYXN0RnJlZShwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAvLyBUaGlzIGlzIGEgc3VwcG9y
dCB0ZW1wbGF0ZSBmb3IgZmFzdERlbGV0ZUFycmF5LgorICAgICAgICAvLyBUaGlzIGhhbmRsZXMg
dGhlIGNhc2Ugd2hlcmVpbiBUIGhhcyBhIG5vbi10cml2aWFsIGR0b3IuCisgICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBzdHJ1Y3QgRGVsZXRlQXJyYXlJbXBsPFQsIGZhbHNl
PiB7CisgICAgICAgICAgICBzdGF0aWMgdm9pZCBmYXN0RGVsZXRlQXJyYXkoVCogcCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIEFycmF5U2l6ZTxUPiBhOworICAgICAgICAgICAgICAg
IGEudCA9IHA7CisgICAgICAgICAgICAgICAgYS5zaXplLS07IC8vIERlY3JlbWVudCBzaXplIHBv
aW50ZXIKKworICAgICAgICAgICAgICAgIFQqIHBFbmQgPSBwICsgKmEuc2l6ZTsKKyAgICAgICAg
ICAgICAgICB3aGlsZSAocEVuZC0tICE9IHApCisgICAgICAgICAgICAgICAgICAgIHBFbmQtPn5U
KCk7CisKKyAgICAgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUoYS5zaXpl
LCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5KTsKKyAgICAgICAgICAgICAgICBmYXN0
RnJlZShhLnNpemUpOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgfSAvLyBuYW1l
c3BhY2UgSW50ZXJuYWwKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgZmFz
dERlbGV0ZUFycmF5KFQqIHApCisgICAgeworICAgICAgICBJbnRlcm5hbDo6RGVsZXRlQXJyYXlJ
bXBsPFQsIFdURjo6SGFzVHJpdmlhbERlc3RydWN0b3I8VD46OnZhbHVlPjo6ZmFzdERlbGV0ZUFy
cmF5KHApOworICAgIH0KKworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgaW5saW5l
IHZvaWQgZmFzdE5vbk51bGxEZWxldGUoVCogcCkKKyAgICB7CisgICAgICAgIGZhc3RNYWxsb2NN
YXRjaFZhbGlkYXRlRnJlZShwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7CisgICAgICAg
IHAtPn5UKCk7CisgICAgICAgIGZhc3RGcmVlKHApOworICAgIH0KKworICAgIG5hbWVzcGFjZSBJ
bnRlcm5hbCB7CisgICAgICAgIC8vIFRoaXMgaXMgYSBzdXBwb3J0IHRlbXBsYXRlIGZvciBmYXN0
RGVsZXRlQXJyYXkuCisgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZWluIFQg
aGFzIGEgdHJpdmlhbCBkdG9yLgorICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCB0
cml2aWFsRHRvcj4KKyAgICAgICAgc3RydWN0IE5vbk51bGxEZWxldGVBcnJheUltcGwgeworICAg
ICAgICAgICAgc3RhdGljIHZvaWQgZmFzdE5vbk51bGxEZWxldGVBcnJheSh2b2lkKiBwKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZShw
LCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5KTsKKyAgICAgICAgICAgICAgICAvLyBO
byBuZWVkIHRvIGRlc3RydWN0IHRoZSBvYmplY3RzIGluIHRoaXMgY2FzZS4KKyAgICAgICAgICAg
ICAgICBmYXN0RnJlZShwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAv
LyBUaGlzIGlzIGEgc3VwcG9ydCB0ZW1wbGF0ZSBmb3IgZmFzdERlbGV0ZUFycmF5LgorICAgICAg
ICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmVpbiBUIGhhcyBhIG5vbi10cml2aWFsIGR0
b3IuCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBzdHJ1Y3QgTm9uTnVs
bERlbGV0ZUFycmF5SW1wbDxULCBmYWxzZT4geworICAgICAgICAgICAgc3RhdGljIHZvaWQgZmFz
dE5vbk51bGxEZWxldGVBcnJheShUKiBwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEFycmF5U2l6ZTxUPiBhOworICAgICAgICAgICAgICAgIGEudCA9IHA7CisgICAgICAgICAgICAg
ICAgYS5zaXplLS07CisKKyAgICAgICAgICAgICAgICBUKiBwRW5kID0gcCArICphLnNpemU7Cisg
ICAgICAgICAgICAgICAgd2hpbGUgKHBFbmQtLSAhPSBwKQorICAgICAgICAgICAgICAgICAgICBw
RW5kLT5+VCgpOworCisgICAgICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVl
KGEuc2l6ZSwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXdBcnJheSk7CisgICAgICAgICAgICAg
ICAgZmFzdEZyZWUoYS5zaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgIH0g
Ly8gbmFtZXNwYWNlIEludGVybmFsCisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2
b2lkIGZhc3ROb25OdWxsRGVsZXRlQXJyYXkoVCogcCkKKyAgICB7CisgICAgICAgIEludGVybmFs
OjpOb25OdWxsRGVsZXRlQXJyYXlJbXBsPFQsIFdURjo6SGFzVHJpdmlhbERlc3RydWN0b3I8VD46
OnZhbHVlPjo6ZmFzdE5vbk51bGxEZWxldGVBcnJheShwKTsKKyAgICB9CisKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfRmFzdEFsbG9jQmFzZV9oCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
d3RmL0Zhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiA0MjI0NSkKKysrIEphdmFTY3JpcHRDb3JlL3d0
Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1
ZGUgIkZhc3RNYWxsb2MuaCIKIAogI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKKyNpbmNsdWRlIDxs
aW1pdHM+CiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogI2luY2x1ZGUgPHB0aHJl
YWQuaD4KICNlbmRpZgpAQCAtMTUxLDYgKzE1MiwxOSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAor
I2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQorCituYW1lc3BhY2UgSW50
ZXJuYWwgeworCit2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKikKK3sKKyAgICBDUkFT
SCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBJbnRlcm5hbAorCisjZW5kaWYKKwogdm9pZCogZmFz
dFplcm9lZE1hbGxvYyhzaXplX3QgbikgCiB7CiAgICAgdm9pZCogcmVzdWx0ID0gZmFzdE1hbGxv
YyhuKTsKQEAgLTE4MywxMyArMTk3LDM0IEBACiB2b2lkKiB0cnlGYXN0TWFsbG9jKHNpemVfdCBu
KSAKIHsKICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOworCisjaWYgRU5BQkxFKEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04pCisgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSBuKSAgLy8gSWYgb3Zl
cmZsb3cgd291bGQgb2NjdXIuLi4KKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB2b2lkKiByZXN1
bHQgPSBtYWxsb2MobiArIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAqc3RhdGljX2Nhc3Q8QWxsb2NBbGln
bm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7CisgICAg
cmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7
CisKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKICAgICByZXR1cm4gbWFsbG9jKG4pOworI2Vu
ZGlmCiB9CiAKIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90IG4pIAogewogICAgIEFTU0VSVCghaXNG
b3JiaWRkZW4oKSk7CisKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikK
KyAgICB2b2lkKiByZXN1bHQgPSB0cnlGYXN0TWFsbG9jKG4pOworI2Vsc2UKICAgICB2b2lkKiBy
ZXN1bHQgPSBtYWxsb2Mobik7CisjZW5kaWYKKwogICAgIGlmICghcmVzdWx0KQogICAgICAgICBD
UkFTSCgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xOTgsMTMgKzIzMywzNiBAQAogdm9pZCog
dHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSkKIHsK
ICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOworCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01B
VENIX1ZBTElEQVRJT04pCisgICAgc2l6ZV90IHRvdGFsQnl0ZXMgPSBuX2VsZW1lbnRzICogZWxl
bWVudF9zaXplOworICAgIGlmIChuX2VsZW1lbnRzID4gMSAmJiBlbGVtZW50X3NpemUgJiYgKHRv
dGFsQnl0ZXMgLyBlbGVtZW50X3NpemUpICE9IG5fZWxlbWVudHMgfHwgKHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSB0
b3RhbEJ5dGVzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB0b3RhbEJ5dGVzICs9IHNpemVv
ZihBbGxvY0FsaWdubWVudEludGVnZXIpOworICAgIHZvaWQqIHJlc3VsdCA9IG1hbGxvYyh0b3Rh
bEJ5dGVzKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtZW1z
ZXQocmVzdWx0LCAwLCB0b3RhbEJ5dGVzKTsKKyAgICAqc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1l
bnRJbnRlZ2VyKj4ocmVzdWx0KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7CisgICAgcmVz
dWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCiAgICAgcmV0dXJuIGNhbGxvYyhuX2VsZW1lbnRzLCBl
bGVtZW50X3NpemUpOworI2VuZGlmCiB9CiAKIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG5fZWxl
bWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpCiB7CiAgICAgQVNTRVJUKCFpc0ZvcmJpZGRlbigp
KTsKKworI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQorICAgIHZvaWQq
IHJlc3VsdCA9IHRyeUZhc3RDYWxsb2Mobl9lbGVtZW50cywgZWxlbWVudF9zaXplKTsKKyNlbHNl
CiAgICAgdm9pZCogcmVzdWx0ID0gY2FsbG9jKG5fZWxlbWVudHMsIGVsZW1lbnRfc2l6ZSk7Cisj
ZW5kaWYKKwogICAgIGlmICghcmVzdWx0KQogICAgICAgICBDUkFTSCgpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0yMTMsMTkgKzI3MSw1NyBAQAogdm9pZCBmYXN0RnJlZSh2b2lkKiBwKQogewog
ICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7CisKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFU
Q0hfVkFMSURBVElPTikKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybjsKKworICAgIEFsbG9j
QWxpZ25tZW50SW50ZWdlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlk
YXRpb25WYWx1ZShwKTsKKyAgICBpZiAoKmhlYWRlciAhPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFs
bG9jKQorICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOworICAgIGZy
ZWUoaGVhZGVyKTsKKyNlbHNlCiAgICAgZnJlZShwKTsKKyNlbmRpZgogfQogCiB2b2lkKiB0cnlG
YXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3QgbikKIHsKICAgICBBU1NFUlQoIWlzRm9yYmlkZGVu
KCkpOworCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisgICAgaWYg
KHApIHsKKyAgICAgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBz
aXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSBuKSAgLy8gSWYgb3ZlcmZsb3cgd291bGQg
b2NjdXIuLi4KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBBbGxvY0FsaWdubWVudElu
dGVnZXIqIGhlYWRlciA9IEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUo
cCk7CisgICAgICAgIGlmICgqaGVhZGVyICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCisg
ICAgICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOworICAgICAgICB2
b2lkKiByZXN1bHQgPSByZWFsbG9jKGhlYWRlciwgbiArIHNpemVvZihBbGxvY0FsaWdubWVudElu
dGVnZXIpKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gMDsKKwor
ICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkIGJlY2F1c2UgdGhlIHZhbHVlIGlz
IGFscmVhZHkgdGhlcmU6CisgICAgICAgIC8vICpzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudElu
dGVnZXIqPihyZXN1bHQpID0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYzsKKyAgICAgICAgcmVz
dWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZhc3RN
YWxsb2Mobik7CisgICAgfQorI2Vsc2UKICAgICByZXR1cm4gcmVhbGxvYyhwLCBuKTsKKyNlbmRp
ZgogfQogCiB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3QgbikKIHsKICAgICBBU1NF
UlQoIWlzRm9yYmlkZGVuKCkpOworCisjaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElE
QVRJT04pCisgICAgdm9pZCogcmVzdWx0ID0gdHJ5RmFzdFJlYWxsb2MocCwgbik7CisjZWxzZQog
ICAgIHZvaWQqIHJlc3VsdCA9IHJlYWxsb2MocCwgbik7CisjZW5kaWYKKwogICAgIGlmICghcmVz
dWx0KQogICAgICAgICBDUkFTSCgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yNjUsNiArMzYx
LDcgQEAKICNpbmNsdWRlICJUQ1N5c3RlbUFsbG9jLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPG5ldz4KICNp
bmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+CkBAIC0zMjk0LDcgKzMzOTEs
MjAgQEAKIEFMV0FZU19JTkxJTkUKICNlbmRpZgogdm9pZCogbWFsbG9jKHNpemVfdCBzaXplKSB7
Ci0gIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyhzaXplKTsKKyNpZiBFTkFCTEUoRkFTVF9NQUxM
T0NfTUFUQ0hfVkFMSURBVElPTikKKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpIDw9IHNpemUpICAvLyBJZiBv
dmVyZmxvdyB3b3VsZCBvY2N1ci4uLgorICAgICAgICByZXR1cm4gMDsKKyAgICBzaXplICs9IHNp
emVvZihBbGxvY0FsaWdubWVudEludGVnZXIpOworICAgIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxv
YyhzaXplKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAqc3Rh
dGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSA9IEludGVybmFsOjpBbGxv
Y1R5cGVNYWxsb2M7CisgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRl
Z2VyKj4ocmVzdWx0KSArIDE7CisjZWxzZQorICAgIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyhz
aXplKTsKKyNlbmRpZgorCiAjaWZuZGVmIFdURl9DSEFOR0VTCiAgIE1hbGxvY0hvb2s6Okludm9r
ZU5ld0hvb2socmVzdWx0LCBzaXplKTsKICNlbmRpZgpAQCAtMzMwOCw3ICszNDE4LDE4IEBACiAj
aWZuZGVmIFdURl9DSEFOR0VTCiAgIE1hbGxvY0hvb2s6Okludm9rZURlbGV0ZUhvb2socHRyKTsK
ICNlbmRpZgotICBkb19mcmVlKHB0cik7CisKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hf
VkFMSURBVElPTikKKyAgICBpZiAoIXB0cikKKyAgICAgICAgcmV0dXJuOworCisgICAgQWxsb2NB
bGlnbm1lbnRJbnRlZ2VyKiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRh
dGlvblZhbHVlKHB0cik7CisgICAgaWYgKCpoZWFkZXIgIT0gSW50ZXJuYWw6OkFsbG9jVHlwZU1h
bGxvYykKKyAgICAgICAgSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaEZhaWxlZChwdHIpOworICAg
IGRvX2ZyZWUoaGVhZGVyKTsKKyNlbHNlCisgICAgZG9fZnJlZShwdHIpOworI2VuZGlmCiB9CiAK
ICNpZm5kZWYgV1RGX0NIQU5HRVMKQEAgLTMzMzEsMTYgKzM0NTIsMzEgQEAKIEFMV0FZU19JTkxJ
TkUKICNlbmRpZgogdm9pZCogY2FsbG9jKHNpemVfdCBuLCBzaXplX3QgZWxlbV9zaXplKSB7Ci0g
IGNvbnN0IHNpemVfdCB0b3RhbEJ5dGVzID0gbiAqIGVsZW1fc2l6ZTsKKyAgc2l6ZV90IHRvdGFs
Qnl0ZXMgPSBuICogZWxlbV9zaXplOwogICAgIAogICAvLyBQcm90ZWN0IGFnYWluc3Qgb3ZlcmZs
b3cKICAgaWYgKG4gPiAxICYmIGVsZW1fc2l6ZSAmJiAodG90YWxCeXRlcyAvIGVsZW1fc2l6ZSkg
IT0gbikKICAgICByZXR1cm4gMDsKLSAgICAKLSAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKHRv
dGFsQnl0ZXMpOwotICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKKworI2lmIEVOQUJMRShGQVNUX01B
TExPQ19NQVRDSF9WQUxJREFUSU9OKQorICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikgPD0gdG90YWxCeXRlcykg
IC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4uCisgICAgICAgIHJldHVybiAwOworCisgICAg
dG90YWxCeXRlcyArPSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKTsKKyAgICB2b2lkKiBy
ZXN1bHQgPSBkb19tYWxsb2ModG90YWxCeXRlcyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
IHJldHVybiAwOworCiAgICAgbWVtc2V0KHJlc3VsdCwgMCwgdG90YWxCeXRlcyk7Ci0gIH0KKyAg
ICAqc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSA9IEludGVybmFs
OjpBbGxvY1R5cGVNYWxsb2M7CisgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1l
bnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7CisjZWxzZQorICAgIHZvaWQqIHJlc3VsdCA9IGRvX21h
bGxvYyh0b3RhbEJ5dGVzKTsKKyAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgbWVt
c2V0KHJlc3VsdCwgMCwgdG90YWxCeXRlcyk7CisgICAgfQorI2VuZGlmCisKICNpZm5kZWYgV1RG
X0NIQU5HRVMKICAgTWFsbG9jSG9vazo6SW52b2tlTmV3SG9vayhyZXN1bHQsIHRvdGFsQnl0ZXMp
OwogI2VuZGlmCkBAIC0zMzgxLDEwICszNTE3LDE0IEBACiAjZW5kaWYKIHZvaWQqIHJlYWxsb2Mo
dm9pZCogb2xkX3B0ciwgc2l6ZV90IG5ld19zaXplKSB7CiAgIGlmIChvbGRfcHRyID09IE5VTEwp
IHsKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKKyAgICB2b2lkKiBy
ZXN1bHQgPSBtYWxsb2MobmV3X3NpemUpOworI2Vsc2UKICAgICB2b2lkKiByZXN1bHQgPSBkb19t
YWxsb2MobmV3X3NpemUpOwogI2lmbmRlZiBXVEZfQ0hBTkdFUwogICAgIE1hbGxvY0hvb2s6Oklu
dm9rZU5ld0hvb2socmVzdWx0LCBuZXdfc2l6ZSk7CiAjZW5kaWYKKyNlbmRpZgogICAgIHJldHVy
biByZXN1bHQ7CiAgIH0KICAgaWYgKG5ld19zaXplID09IDApIHsKQEAgLTMzOTUsNiArMzUzNSwx
NiBAQAogICAgIHJldHVybiBOVUxMOwogICB9CiAKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFU
Q0hfVkFMSURBVElPTikKKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpIDw9IG5ld19zaXplKSAgLy8gSWYgb3Zl
cmZsb3cgd291bGQgb2NjdXIuLi4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgbmV3X3NpemUgKz0g
c2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7CisgICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2Vy
KiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKG9sZF9w
dHIpOworICAgIGlmICgqaGVhZGVyICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCisgICAg
ICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQob2xkX3B0cik7CisgICAgb2xkX3B0
ciA9IGhlYWRlcjsKKyNlbmRpZgorCiAgIC8vIEdldCB0aGUgc2l6ZSBvZiB0aGUgb2xkIGVudHJ5
CiAgIGNvbnN0IFBhZ2VJRCBwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9sZF9wdHIp
ID4+IGtQYWdlU2hpZnQ7CiAgIHNpemVfdCBjbCA9IHBhZ2VoZWFwLT5HZXRTaXplQ2xhc3NJZkNh
Y2hlZChwKTsKQEAgLTM0MzEsOCArMzU4MSwxNCBAQAogICAgIC8vIHRoYXQgd2UgYWxyZWFkeSBr
bm93IHRoZSBzaXplY2xhc3Mgb2Ygb2xkX3B0ci4gIFRoZSBiZW5lZml0CiAgICAgLy8gd291bGQg
YmUgc21hbGwsIHNvIGRvbid0IGJvdGhlci4KICAgICBkb19mcmVlKG9sZF9wdHIpOworI2lmIEVO
QUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQorICAgIG5ld19wdHIgPSBzdGF0aWNf
Y2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihuZXdfcHRyKSArIDE7CisjZW5kaWYKICAgICBy
ZXR1cm4gbmV3X3B0cjsKICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hf
VkFMSURBVElPTikKKyAgICBvbGRfcHRyID0gcEJ5dGUgKyBzaXplb2YoQWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyKTsgIC8vIFNldCBvbGRfcHRyIGJhY2sgdG8gdGhlIHVzZXIgcG9pbnRlci4KKyNlbmRp
ZgogICAgIHJldHVybiBvbGRfcHRyOwogICB9CiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
cmV2aXNpb24gNDIyNDUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAwLDYgKzQwMCwxMiBAQAogCiAvKiBFTkFCTEUgbWFjcm8gZGVmYXVsdHMg
Ki8KIAorLyogZmFzdE1hbGxvYyBtYXRjaCB2YWxpZGF0aW9uIGFsbG93cyBmb3IgcnVudGltZSB2
ZXJpZmljYXRpb24gdGhhdCAKKyAgIG5ldyBpcyBtYXRjaGVkIGJ5IGRlbGV0ZSwgZmFzdE1hbGxv
YyBpcyBtYXRjaGVkIGJ5IGZhc3RGcmVlLCBldGMuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0ZB
U1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisjZGVmaW5lIEVOQUJMRV9GQVNUX01BTExPQ19N
QVRDSF9WQUxJREFUSU9OIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lDT05EQVRB
QkFTRSkKICNkZWZpbmUgRU5BQkxFX0lDT05EQVRBQkFTRSAxCiAjZW5kaWYKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJ
KHJldmlzaW9uIDQyMjM1KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L1dURi9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNiArMjcxLDEwIEBACiAJCQk+
CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXEZhc3RBbGxv
Y0Jhc2UuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlwu
Llx3dGZcRmFzdE1hbGxvYy5jcHAiCiAJCQk+CiAJCTwvRmlsZT4KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDQyMjQ1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDQtMDUgIFBhdWwgUGVkcmlhbmEgPHBwZWRyaWFuYUBl
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvRmFzdEFsbG9jQmFzZS5oOgorICAgICAgICBOZXcgYWRkZWQgZmlsZS4gSW1wbGVtZW50
cyBhbGxvY2F0aW9uIGJhc2UgY2xhc3MuCisgICAgICAgICogd3RmL1R5cGVUcmFpdHMuaDoKKyAg
ICAgICAgQXVnbWVudHMgZXhpc3RpbmcgdHlwZSB0cmFpdHMgc3VwcG9ydCBhcyBuZWVkZWQgYnkg
RmFzdEFsbG9jQmFzZS4KKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICBDaGFu
Z2VkIHRvIHN1cHBvcnQgRmFzdE1hbGxvYyBtYXRjaCB2YWxpZGF0aW9uLgorICAgICAgICAqIHd0
Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgQ2hhbmdlZCB0byBzdXBwb3J0IEZhc3RNYWxsb2Mg
bWF0Y2ggdmFsaWRhdGlvbi4KKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgQWRk
ZWQgRU5BQkxFX0ZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT047IGRlZmF1bHRzIHRvIDAuCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgIFVwZGF0ZWQgdG8gaW5jbHVkZSBhZGRl
ZCBGYXN0QWxsb2NCYXNlLmguCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgVXBkYXRlZCB0byBpbmNsdWRlIGFkZGVkIEZhc3RBbGxv
Y0Jhc2UuaC4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2o6
CisgICAgICAgIFVwZGF0ZWQgdG8gaW5jbHVkZSBhZGRlZCBGYXN0QWxsb2NCYXNlLmguCisgICAg
ICAgIAogMjAwOS0wNC0wNCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNv
bT4KIAogICAgICAgICB3eCBidWlsZCBmaXggZm9yIFdpbiBwb3J0LiBCdWlsZCB0aGUgYXNzZW1i
bGVyIHNvdXJjZXMgdG8gZ2V0IG1pc3NpbmcgZnVuY3Rpb25zLgpJbmRleDogSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA0MjI0NSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1Miw2ICszNTIsNyBAQAog
CQlFMUE4NjJENjBEN0YyQjVDMDAxRUM2QUEgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTg2MkQ1MEQ3RjJCNUMw
MDFFQzZBQSAvKiBDb2xsYXRvckRlZmF1bHQuY3BwICovOyB9OwogCQlFMUVFNzkzRDBENkM5Qjky
MDBGRUEzQkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTc5M0MwRDZDOUI5MjAwRkVBM0JBIC8qIFRocmVh
ZGluZ1B0aHJlYWRzLmNwcCAqLzsgfTsKIAkJRTFFRjc5QUEwQ0U5N0JBNjAwODhENTAwIC8qIFVU
RjguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFF
Rjc5QTgwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwICovOyB9OworCQlFNDhFMEYyRDBGODIx
NTE3MDBBOENBMzcgLyogRmFzdEFsbG9jQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4RTBGMkMwRjgyMTUxNzAwQThDQTM3IC8qIEZhc3RBbGxv
Y0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlGRTFCNDQ3QTBFQ0NENzNCMDA0RjRERDEgLyogU3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFCNDQ3OTBFQ0NENzNCMDA0RjRE
RDEgLyogU3RkTGliRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCkBAIC04MDMsNiAr
ODA0LDcgQEAKIAkJRTFFRTc5OEIwRDZDQTUzRDAwRkVBM0JBIC8qIE1lc3NhZ2VRdWV1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUXVldWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFRjc5QTgwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRGOC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRUY3OUE5MENFOTdCQTYwMDg4RDUwMCAvKiBVVEY4Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVURjguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTQ4RTBGMkMwRjgyMTUxNzAwQThDQTM3IC8qIEZhc3RBbGxvY0Jhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEFsbG9jQmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNUJCMkJDNTAzMEY3NzIxMDFGQ0ZFMUQgLyogQ29t
cGxldGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21wbGV0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
fTsKIAkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFT
Y3JpcHRDb3JlUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
fTsKIAkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwpAQCAtMTExMiw2ICsxMTE0LDcgQEAKIAkJ
CQlFMTk1Njc4RDA5RTdDRjEyMDBCODlEMTMgLyogdW5pY29kZSAqLywKIAkJCQk5MzhDNEY2OTBD
QTA2QkM3MDBEOTMxMEEgLyogQVNDSUlDVHlwZS5oICovLAogCQkJCUUxQTU5NjM3MERFM0UxQzMw
MEMxN0UzNyAvKiBBVkxUcmVlLmggKi8sCisJCQkJRTQ4RTBGMkMwRjgyMTUxNzAwQThDQTM3IC8q
IEZhc3RBbGxvY0Jhc2UuaCAqLywKIAkJCQk5M0FBNEY3NzA5NTcyNTFGMDA4NEIzQTcgLyogQWx3
YXlzSW5saW5lLmggKi8sCiAJCQkJNjVFMjE3QjgwOEU3RUVDQzAwMjNFNUY2IC8qIEFzc2VydGlv
bnMuY3BwICovLAogCQkJCTY1RTIxN0I3MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25zLmgg
Ki8sCkBAIC0xNzQ4LDYgKzE3NTEsNyBAQAogCQkJCTg2MDE2MUU2MEYzQTgzQzEwMEY4NDcxMCAv
KiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQ0VGREUw
RjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QTQyRTQw
MEY0RjYwRUUwMDU5OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTQ4RTBGMkQwRjgyMTUxNzAwQThDQTM3IC8qIEZhc3RBbGxvY0Jhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
Owo=
</data>
<flag name="review"
          id="14545"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29578</attachid>
            <date>2009-04-17 08:17:38 -0700</date>
            <delta_ts>2009-05-14 01:38:17 -0700</delta_ts>
            <desc>proposed patch for HashTable inheritance</desc>
            <filename>HashTable.patch</filename>
            <type>text/plain</type>
            <size>1412</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyNjA5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDQtMTcgIFpvbHRhbiBI
b3J2YXRoICA8aG9ydmF0aC56b2x0YW4uNkBzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCQorCUluaGVyaXRlIEhhc2hUYWJsZSBmcm9tIEZh
c3RBbGxvY0Jhc2UsIGJlY2F1c2UgaXQgaGFzIGJlZW4gaW5zdGFudGlhdGVkIGJ5CisJJ25ldycg
aW4gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwLgorCisgICAgICAgICog
d3RmL0hhc2hUYWJsZS5oOgorCiAyMDA5LTA0LTA4ICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFA
YWRvYmUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3d0Zi9IYXNoVGFibGUuaAkocmV2aXNpb24gNDI2MDkpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYv
SGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJG
YXN0TWFsbG9jLmgiCiAjaW5jbHVkZSAiSGFzaFRyYWl0cy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjgwLDcgKzI4MSw3IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1l
IFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIGNsYXNzIEhhc2hUYWJsZSB7Cisg
ICAgY2xhc3MgSGFzaFRhYmxlIDogcHVibGljIEZhc3RBbGxvY0Jhc2UgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKICAgICAgICAgdHlw
ZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>