<?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>56099</bug_id>
          
          <creation_ts>2011-03-10 07:28:25 -0800</creation_ts>
          <short_desc>Introduce WTF HexNumber.h</short_desc>
          <delta_ts>2011-03-24 23:36:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>30342</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>barraclough</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>365155</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-10 07:28:25 -0800</bug_when>
    <thetext>Currently number -&gt; hex string conversion is done in a couple of places in WebCore, many hand-written. some using String::format(&quot;%x&quot;)
I&apos;m still on the mission to eliminate String::format completly, and this is another step in that direction!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365162</commentid>
    <comment_count>1</comment_count>
      <attachid>85324</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-10 07:34:24 -0800</bug_when>
    <thetext>Created attachment 85324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365164</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-10 07:36:36 -0800</bug_when>
    <thetext>Attachment 85324 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebCore/editing/MarkupAccumulator.h:116:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/text/StringConcatenate.h:445:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/JavaScriptCore/wtf/text/StringConcatenate.h:545:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/css/CSSParser.cpp:76:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365167</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-10 07:42:57 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 85324 [details] did not pass style-queue:
ng&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Source/JavaScriptCore/wtf/text/StringConcatenate.h:445:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
&gt; Source/JavaScriptCore/wtf/text/StringConcatenate.h:545:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Fixed all issues but these two, I think it&apos;s intended in StringConcatenate. Uploading a fixed version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365168</commentid>
    <comment_count>4</comment_count>
      <attachid>85326</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-10 07:43:31 -0800</bug_when>
    <thetext>Created attachment 85326
Patch v2

I&apos;d highly appreciate if Darin could check the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365171</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-10 07:46:36 -0800</bug_when>
    <thetext>Attachment 85326 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/text/StringConcatenate.h:445:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/JavaScriptCore/wtf/text/StringConcatenate.h:545:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 2 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365180</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-10 08:03:40 -0800</bug_when>
    <thetext>Attachment 85324 did not build on chromium:
Build output: http://queues.webkit.org/results/8115956</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365191</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-10 08:16:26 -0800</bug_when>
    <thetext>Attachment 85326 did not build on chromium:
Build output: http://queues.webkit.org/results/8118835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365204</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-10 08:30:39 -0800</bug_when>
    <thetext>Attachment 85326 did not build on win:
Build output: http://queues.webkit.org/results/8125069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365213</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-10 08:42:39 -0800</bug_when>
    <thetext>Attachment 85324 did not build on win:
Build output: http://queues.webkit.org/results/8115966</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365221</commentid>
    <comment_count>10</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-10 08:53:49 -0800</bug_when>
    <thetext>Attachment 85326 did not build on gtk:
Build output: http://queues.webkit.org/results/8118848</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365244</commentid>
    <comment_count>11</comment_count>
      <attachid>85341</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-10 09:27:25 -0800</bug_when>
    <thetext>Created attachment 85341
Patch v3

Trying a new variant...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365245</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-10 09:30:24 -0800</bug_when>
    <thetext>Attachment 85341 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/text/StringConcatenate.h:445:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/JavaScriptCore/wtf/text/StringConcatenate.h:545:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 2 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365272</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-10 10:10:00 -0800</bug_when>
    <thetext>Attachment 85341 did not build on win:
Build output: http://queues.webkit.org/results/8115983</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365922</commentid>
    <comment_count>14</comment_count>
      <attachid>85458</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-11 04:18:29 -0800</bug_when>
    <thetext>Created attachment 85458
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365924</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-11 04:20:20 -0800</bug_when>
    <thetext>Attachment 85458 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/text/StringConcatenate.h:445:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/JavaScriptCore/wtf/text/StringConcatenate.h:545:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365937</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-11 04:57:02 -0800</bug_when>
    <thetext>Attachment 85458 did not build on win:
Build output: http://queues.webkit.org/results/8132234</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366562</commentid>
    <comment_count>17</comment_count>
      <attachid>85587</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-12 04:32:58 -0800</bug_when>
    <thetext>Created attachment 85587
Patch v5

Fix win build, add missing symbol to JavaScriptCore.def.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366563</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-12 04:37:36 -0800</bug_when>
    <thetext>Attachment 85587 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/text/StringConcatenate.h:445:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/JavaScriptCore/wtf/text/StringConcatenate.h:545:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 2 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366570</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-12 05:33:18 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Fixed all issues but these two, I think it&apos;s intended in StringConcatenate. Uploading a fixed version.

It may have been done intentionally, but it’s wrong in StringConcatenate. That should use a normal RefPtr with release rather than PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366574</commentid>
    <comment_count>20</comment_count>
      <attachid>85587</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-12 06:18:21 -0800</bug_when>
    <thetext>Comment on attachment 85587
Patch v5

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

Looks like some good changes, but this is too much in a single patch. I suggest one patch about using more efficient idioms for building strings that do not involve hex, and a separate patch focusing on hex.

One of the main ideas here seems to be “StringBuilder is better than Vector”, but I’m not sure it always is. I’d like to see a patch that adopts makeString more. Another patch that gets rid of intermediate strings when using String::number (especially valuable with makeString), and then perhaps a patch that moves from Vector to StringBuilder in the places where we build up strings in a loop, but that Vector -&gt; StringBuilder one will require more thought.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:27
&gt; +class HexNumber {

This seems like a namespace, not a class.

I’m not sure the hexadecimal number processing functions need a namespace or class. If the functions themselves had good enough names then they could be at the top level in WTF.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:29
&gt; +    enum ConversionMode {

Making this enum a member of the class HexNumber does avoid polluting the global namespace, but at a cost of having to say HexNumber::Uppercase every time. I’d prefer an enum at namespace scope if we can give it a clear enough name.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:30
&gt; +        LowerCase = 1 &lt;&lt; 0,

We normally use the word “lowercase”, not the two words “lower case”.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:31
&gt; +        UpperCase = 1 &lt;&lt; 1,

We normally use the word “uppercase”, not the two words “lower case”.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:32
&gt; +        Compressed = 1 &lt;&lt; 2 // eg. #000 (used in the CSSParser)

I think the Compressed option is confusing. It seems to just mean “single digit”. There has to be some cleaner way to expose that. Maybe just an entirely separate function for a single digit. I don’t think that having the logic for compressed mode here (use 1 digit if the number fits) makes a lot of sense. It’s a pretty idiosyncratic requirement.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:35
&gt; +    static String charToString(unsigned char number, unsigned mode = LowerCase)

This seems like an inefficient function that would rarely be useful.

A string like this could almost never be used alone, and allocating two memory blocks just to make the string seems like major overhead if we are just going to concatenate it to something else. What call sites actually need this? Can we find another way to do this that’s more efficient? I’d like to see this tied in with the efficient mechanisms for building strings rather than providing a function that constructs a single string.

If we want this to fit into the makeString string concatenation mechanism, we want to come up with a way to fit it in without allocating a temporary string. We can probably do that by coming up with a struct that contains a small fixed size array of UChar with a length and making sure makeString can handle that.

I don’t think that “char” is a good name for a single byte. We’re stuck with it in the C++ language, but in our function names I would prefer the word “byte” for cases where “char” does not mean “character”, and the word “character” for cases where it does.

Just personal bias, but I prefer uppercase as a default. Depends on clients in the code I suspect.

I’m a little surprised that the type of the argument is unsigned rather than ConversionMode.

I don’t think it’s a good idea to make this an inline function. In fact, the header would read a lot clearer if we separated function declarations from definitions, even if some of the definitions need to be inline. That goes for templates too.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:44
&gt; +        Vector&lt;UChar, 2&gt; buffer;
&gt; +        buffer.resize(2);
&gt; +        buffer[0] = hexDigits[number &gt;&gt; 4];
&gt; +        buffer[1] = hexDigits[number &amp; 0xF];
&gt; +        return String::adopt(buffer);

Using a vector here is not a good idea. Instead it should be more like this:

    UChar digits[2] = { hexDigits[number &gt;&gt; 4], hexDigits[number &amp; 0xF] };
    return String(digits, 2);

But as above, I question the need for this function.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:48
&gt; +    template&lt;typename T, size_t inlineCapacity&gt;
&gt; +    static void appendCharToVector(unsigned char number, Vector&lt;T, inlineCapacity&gt;&amp; destination, unsigned mode = LowerCase)

I think it would be better to just call this appendByteAsHex, have it not be a class member and not make it vector-specific. The only thing this relies on is an append function.

    template&lt;typename T&gt; void appendByteAsHex(T&amp; destination, unsigned char byte, ConversionMode);

&gt; Source/JavaScriptCore/wtf/HexNumber.h:61
&gt; +    static String unsignedToString(unsigned number, int stopAfterDigits = -1, unsigned mode = LowerCase)

Same comments as above about functions returning strings. The use of -1 to mean don’t stop seems awkward. I think we should instead have a separate function without a minimum number of digits.

stopAfterDigits seems the wrong name for this if it’s trying to replicate String::format. The String::format argument is minimumDigits or something like that.

We could make something that does a fixed number of digits.

I think the comment that this can replace String::format is a little strange.

Should assert that the fixed number of digits is a reasonable one.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:83
&gt; +        String hexString = unsignedToString(number, stopAfterDigits, mode);

We definitely don’t want to make a string first. We should make the append function and then we could build a string version out of that.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:96
&gt; +        static const char s_lowerHexDigits[17] = &quot;0123456789abcdef&quot;;
&gt; +        static const char s_upperHexDigits[17] = &quot;0123456789ABCDEF&quot;;

These global variables are local to the function, and so don’t need to have any prefix at all. They are not data members, and so “s_” doesn’t apply even though they keyword, “static”, is the same.

&gt; Source/JavaScriptCore/wtf/text/WTFString.h:-462
&gt; -inline void appendNumber(Vector&lt;UChar&gt;&amp; vector, unsigned char number)

Why did you delete this? It’s not about hex, so deleting it does not seem directly related to your patch.

&gt; Source/WebCore/css/CSSOMUtils.cpp:59
&gt; +    String hexString = HexNumber::unsignedToString(c);
&gt; +    appendTo.append(&apos;\\&apos;);
&gt; +    appendTo.append(hexString.characters(), hexString.length());
&gt; +    appendTo.append(&apos; &apos;);

This should be using the function for appending to vectors, not the function for making strings.

&gt; Source/WebCore/css/CSSParser.cpp:6403
&gt; +            Vector&lt;char, 2&gt; destination;
&gt; +            HexNumber::appendCharToVector&lt;char, 2&gt;(ch, destination, HexNumber::LowerCase | HexNumber::Compressed);

We need to do this without allocating memory. Your new code is much slower than the old code because it allocates a temporary vector which it then throws away.

Probably the best way is to figure out a way to hook the append template up to the buffer[index++] operation. If we had an object with an append function that did buffer[index++] that would do the trick.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:638
&gt; -            text = formatNumber(m_value.num) + &quot;%&quot;;
&gt; +            text = makeString(formatNumber(m_value.num), &quot;%&quot;);

This is good--much better to use makeString rather than string concatenation--but not directly related to your new hex work. I think you should land this separately. If we change the return value of formatNumber so we don’t have to allocate a string we can make this much more efficient, but again not part of the hex patch.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:730
&gt; +            StringBuilder builder;
&gt; +            builder.reserveCapacity(32);

This would be much more efficient with either a Vector&lt;UChar&gt; or a single call to makeString. Your change to use StringBuilder is probably making it a bit less efficient.

StringBuilder is not a very good class unless you happen to already have everything in String objects; otherwise we do memory allocations for each string while building the string and then throw away all the temporary strings after the fact.

Vector is a little because it uses only a single memory block to build the vector, possibly reallocating it a few times, then a second memory block the string at the end.

makeString is even better because it just allocates the entire string all at once and can take advantage of the optimization where we put the StringImpl and characters into a single block. We can easily use makeString here by doing the hasAlpha work completely separately. But to really make performance good we will also want a function that’s like String::number but that works without allocating a new string, as I suggested for hex.

But again, this improvement is not related to hex so should probably should not be mixed in with the hex changes.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:752
&gt; +            StringBuilder builder;

Better to minimize the number of intermediate strings a bit more. Make use makeString with more arguments at a time. I guess StringBuilder is OK for this. Not sure how it compares to Vector if we do everything else as efficiently as possible.

&gt; Source/WebCore/dom/DatasetDOMStringMap.cpp:55
&gt; -    Vector&lt;UChar&gt; newStringBuffer;
&gt; +    StringBuilder stringBuilder;

As written this is extremely inefficient. It’s not using the buffer in StringBuilder and so it’s actually allocating a new String for *every character*. So please don’t make this change unless you think it through a bit more. As is I believe it actually makes performance of this function pathologically bad.

&gt; Source/WebCore/editing/HTMLInterchange.cpp:61
&gt; -    Vector&lt;UChar&gt; s;
&gt; +    StringBuilder s;

Not sure StringBuilder actually ends up giving us better performance in this function. We’re probably better off with the vector, but I am not sure. This probably needs some testing. Since the whole point is to make it more efficient, I suggest performance testing of some sort.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:467
&gt;      ASSERT(length &gt; 0);
&gt; -    static const char hexDigits[17] = &quot;0123456789ABCDEF&quot;;
&gt; -    size_t bufferSize = length * 3 - 1;
&gt; -    StringBuffer buffer(bufferSize);
&gt; -    size_t index = 0;
&gt; +    Vector&lt;UChar&gt; buffer;
&gt; +    buffer.reserveInitialCapacity(length * 3 - 1);
&gt;      for (size_t i = 0; i &lt; length; ++i) {
&gt;          if (i &gt; 0)
&gt; -            buffer[index++] = &apos;:&apos;;
&gt; -        buffer[index++] = hexDigits[value[i] &gt;&gt; 4];
&gt; -        buffer[index++] = hexDigits[value[i] &amp; 0xF];
&gt; +            buffer.append(&apos;:&apos;);
&gt; +        HexNumber::appendCharToVector&lt;UChar&gt;(value[i], buffer, HexNumber::UpperCase);
&gt;      }
&gt; -    ASSERT(index == bufferSize);
&gt;      return String::adopt(buffer);

I think this new code results in an additional buffer compared to the old, giving us a two-buffer string instead of an “all in one buffer” string. Not sure.

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:135
&gt; -        Vector&lt;UChar&gt; headerBuffer;
&gt; +        StringBuilder headerBuilder;

This might be better, but the improvement seems marginal. One of the premises of your patch seems to be that StringBuilder is almost always better than using a vector. But I am not sure that’s the case.

It would be best if the patches were much clearer. One way is to make one patch about simple examples where we know the performance tradeoff is absolutely correct and easy to review. Then we could do a different patch about more complex subtle cases.

&gt; Source/WebCore/page/SecurityOrigin.cpp:400
&gt; -    Vector&lt;UChar&gt; result;
&gt; -    result.reserveInitialCapacity(m_protocol.length() + m_host.length() + 10);
&gt; -    append(result, m_protocol);
&gt; -    append(result, &quot;://&quot;);
&gt; -    append(result, m_host);
&gt; -
&gt; -    if (m_port) {
&gt; -        append(result, &quot;:&quot;);
&gt; -        append(result, String::number(m_port));
&gt; -    }
&gt; +    StringBuilder result;
&gt; +    result.reserveCapacity(m_protocol.length() + m_host.length() + 10);
&gt; +    result.append(makeString(m_protocol, &quot;://&quot;, m_host));
&gt; +
&gt; +    if (m_port)
&gt; +        result.append(makeString(&quot;:&quot;, String::number(m_port)));
&gt;  
&gt; -    return String::adopt(result);
&gt; +    return result.toString();

makeString would be better than either StringBuilder or Vector here. Not sure StringBuilder is better than Vector but this is actually a small fixed string.

&gt; Source/WebCore/platform/FileSystem.cpp:93
&gt; -            *p++ = hexDigits[(c &gt;&gt; 4) &amp; 0xF];
&gt; -            *p++ = hexDigits[c &amp; 0xF];
&gt; +            HexNumber::appendCharToVector&lt;UChar, 512&gt;(c, buffer, HexNumber::UpperCase);

I think you broke this code. This is writing with *p++ and you replaced that with buffer.append which will not do the same thing. Needs testing.

&gt; Source/WebCore/platform/KURL.cpp:963
&gt; +    Vector&lt;char, 2&gt; destination;
&gt; +    HexNumber::appendCharToVector&lt;char, 2&gt;(c, destination, HexNumber::UpperCase);
&gt; +    ASSERT(destination.size() == 2);
&gt;      *buffer++ = &apos;%&apos;;
&gt; -    *buffer++ = hexDigits[c &gt;&gt; 4];
&gt; -    *buffer++ = hexDigits[c &amp; 0xF];
&gt; +    *buffer++ = destination[0];
&gt; +    *buffer++ = destination[1];

Using a vector here seems weak and awkward. We need to make sure the hex code can handle these *buffer++ cases; a simple way would be to have an adapter with an append function, but another way is to simply offer the *p++ idiom as a function.

&gt; Source/WebCore/platform/UUID.cpp:115
&gt;      StringBuilder builder;
&gt; -    builder.append(String::format(&quot;%08x&quot;, randomData[0]));
&gt; +    builder.append(HexNumber::unsignedToString(randomData[0], 8));
&gt;      builder.append(&quot;-&quot;);
&gt; -    builder.append(String::format(&quot;%04x&quot;, randomData[1] &gt;&gt; 16));
&gt; +    builder.append(HexNumber::unsignedToString(randomData[1] &gt;&gt; 16, 4));
&gt;      builder.append(&quot;-4&quot;);
&gt; -    builder.append(String::format(&quot;%03x&quot;, randomData[1] &amp; 0x00000fff));
&gt; +    builder.append(HexNumber::unsignedToString(randomData[1] &amp; 0x00000fff, 3));
&gt;      builder.append(&quot;-&quot;);
&gt; -    builder.append(String::format(&quot;%x&quot;, (randomData[2] &gt;&gt; 30) | 0x8)); // Condense this byte to 8, 9, a, and b.
&gt; -    builder.append(String::format(&quot;%03x&quot;, (randomData[2] &gt;&gt; 16) &amp; 0x00000fff));
&gt; +    builder.append(HexNumber::unsignedToString((randomData[2] &gt;&gt; 30) | 0x8, 1));
&gt; +    builder.append(HexNumber::unsignedToString((randomData[2] &gt;&gt; 16) &amp; 0x00000fff, 3));
&gt;      builder.append(&quot;-&quot;);
&gt; -    builder.append(String::format(&quot;%04x&quot;, randomData[2] &amp; 0x0000ffff));
&gt; -    builder.append(String::format(&quot;%08x&quot;, randomData[3]));
&gt; +    builder.append(HexNumber::unsignedToString(randomData[2] &amp; 0x0000ffff, 4));
&gt; +    builder.append(HexNumber::unsignedToString(randomData[3], 8));
&gt; +    builder.append(&quot;\n&quot;);

This should use a giant makeString, and not a builder. And is also a case that would benefit a lot from a way to do hex numbers without intermediate String objects.

&gt; Source/WebCore/platform/graphics/Color.cpp:191
&gt; +    StringBuilder builder;
&gt; +    builder.reserveCapacity(28);
&gt; +    builder.append(makeString(&quot;rgba(&quot;, String::number(red()), &quot;, &quot;, String::number(green()), &quot;, &quot;, String::number(blue()), &quot;, &quot;));

Again, makeString is great, StringBuilder, not so great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367367</commentid>
    <comment_count>21</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-14 17:20:47 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 85587 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85587&amp;action=review
&gt; 
&gt; Looks like some good changes, but this is too much in a single patch. I suggest one patch about using more efficient idioms for building strings that do not involve hex, and a separate patch focusing on hex.
&gt; 
&gt; One of the main ideas here seems to be “StringBuilder is better than Vector”, but I’m not sure it always is. I’d like to see a patch that adopts makeString more. Another patch that gets rid of intermediate strings when using String::number (especially valuable with makeString), and then perhaps a patch that moves from Vector to StringBuilder in the places where we build up strings in a loop, but that Vector -&gt; StringBuilder one will require more thought.

Actually, since some (semi-)recent changes to StringBuilder, I think we probably do consider StringBuilder superior to in all cases to Vector.  Previously StringBuilder used to collect a vector of Strings, then concatenate them together.  Now StringBuilder uses an internal StringImpl to serve as a buffer, reallocating this as necessary - very much like  Vector would (except with the StringImpl header included in the same allocation).

I&apos;m hoping that over time we can remove cases of String data being allocated using a Vector, to the point that we may be able to remove the adopting constructor from StringImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367369</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-14 17:23:59 -0700</bug_when>
    <thetext>OK, sounds good. Sorry, Nico, I guess it turns out I was out of date, and StringBuilder is always better than Vector&lt;UChar&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367848</commentid>
    <comment_count>23</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-15 12:26:00 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; OK, sounds good. Sorry, Nico, I guess it turns out I was out of date, and StringBuilder is always better than Vector&lt;UChar&gt;.

Thanks for the extensive review Darin! I&apos;m going to prepare new patches, but leaving the Vector&lt;UChar&gt; -&gt; StringBuilder changes as is. Sorry for the late reply, I&apos;ve been ill the last few days :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368972</commentid>
    <comment_count>24</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-17 04:11:04 -0700</bug_when>
    <thetext>A new patch is coming soon, only containing the Hex changes. The HexNumber class is gone, and a few free functions replace the whole logic. Thanks for the suggestions, it&apos;s a lot cleaner now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368997</commentid>
    <comment_count>25</comment_count>
      <attachid>86045</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-17 04:43:10 -0700</bug_when>
    <thetext>Created attachment 86045
Patch v6

Awaiting EWS results...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369816</commentid>
    <comment_count>26</comment_count>
      <attachid>86045</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-18 13:20:35 -0700</bug_when>
    <thetext>Comment on attachment 86045
Patch v6

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

&gt; Source/JavaScriptCore/wtf/HexNumber.h:53
&gt; +// Special variant for CSSParser, that eventually appends just a single hex digit, if the byte fits.
&gt; +template&lt;typename T&gt;
&gt; +inline void placeByteAsHex(unsigned char byte, T&amp; destination, unsigned&amp; index, HexConversionMode mode = Uppercase)

This special variant needs a different name.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:72
&gt; +// If desiredDigits=-1: it will create as many hex digits as needed to represent the number.
&gt; +// Otherwhise, it uses exactly &apos;desiredDigits&apos; for the conversion, use with caution.
&gt; +template&lt;typename T&gt;
&gt; +inline void appendUnsignedAsHex(unsigned number, T&amp; destination, int desiredDigits = -1, HexConversionMode mode = Uppercase)

I’d rather see this as two separate functions. The magic number -1 seems undesirable.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:461
&gt; -    static const char hexDigits[17] = &quot;0123456789ABCDEF&quot;;
&gt; -    size_t bufferSize = length * 3 - 1;
&gt; -    StringBuffer buffer(bufferSize);
&gt; -    size_t index = 0;
&gt; +    Vector&lt;UChar&gt; buffer;
&gt; +    buffer.reserveInitialCapacity(length * 3 - 1);

Gavin says StringBuilder is better than Vector&lt;UChar&gt; now, so lets use StringBuilder here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370114</commentid>
    <comment_count>27</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-19 05:05:31 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 86045 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86045&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wtf/HexNumber.h:53
&gt; &gt; +// Special variant for CSSParser, that eventually appends just a single hex digit, if the byte fits.
&gt; &gt; +template&lt;typename T&gt;
&gt; &gt; +inline void placeByteAsHex(unsigned char byte, T&amp; destination, unsigned&amp; index, HexConversionMode mode = Uppercase)
&gt; 
&gt; This special variant needs a different name.
How about placeByteAsHexCompressIfPossible?
 
&gt; I’d rather see this as two separate functions. The magic number -1 seems undesirable.
Oops, forgot about that, you already mentioned it before.
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:461
&gt; &gt; -    static const char hexDigits[17] = &quot;0123456789ABCDEF&quot;;
&gt; &gt; -    size_t bufferSize = length * 3 - 1;
&gt; &gt; -    StringBuffer buffer(bufferSize);
&gt; &gt; -    size_t index = 0;
&gt; &gt; +    Vector&lt;UChar&gt; buffer;
&gt; &gt; +    buffer.reserveInitialCapacity(length * 3 - 1);
&gt; 
&gt; Gavin says StringBuilder is better than Vector&lt;UChar&gt; now, so lets use StringBuilder here.
Yeah, I reverted a bit too much there, uses StringBuilder again.

Even you already r+ed it, I&apos;ll upload a new version -- I found a DRT problem, forgot to set Lowercase flag somewhere, now all tests are passing again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370118</commentid>
    <comment_count>28</comment_count>
      <attachid>86261</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-19 05:16:59 -0700</bug_when>
    <thetext>Created attachment 86261
Patch v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370119</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-19 05:18:27 -0700</bug_when>
    <thetext>Attachment 86261 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/WebCore/inspector/InspectorResourceAgent.cpp:461:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370120</commentid>
    <comment_count>30</comment_count>
      <attachid>86262</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-19 05:20:53 -0700</bug_when>
    <thetext>Created attachment 86262
Patch v8

Oops fix style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370171</commentid>
    <comment_count>31</comment_count>
      <attachid>86262</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-19 14:42:48 -0700</bug_when>
    <thetext>Comment on attachment 86262
Patch v8

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

&gt; Source/JavaScriptCore/wtf/HexNumber.h:76
&gt; +    Vector&lt;UChar, 8&gt; result;
&gt; +    do {
&gt; +        result.prepend(hexDigits[number % 16]);
&gt; +        number &gt;&gt;= 4;
&gt; +    } while (number &gt; 0);

We are guaranteed that we never need more than 8 digits for this. So we should write this with an array, not a vector; it would be significantly more efficient since we could put the data at the end of the array and would not need to move everything down as Vector does when you prepend.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:81
&gt; +// Same as appendUsingAsHex, but using exactly &apos;desiredDigits&apos; for the conversion.

Typo here: Using instead of Unsigned.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:83
&gt; +inline void appendUnsignedAsHexFixedSize(unsigned number, T&amp; destination, unsigned desiredDigits, HexConversionMode mode = Uppercase)

I would say AsFixedSizeHex rather than AsHexFixedSize.

&gt; Source/JavaScriptCore/wtf/HexNumber.h:92
&gt; +    const char* hexDigits = Internal::hexDigitsForMode(mode);
&gt; +    Vector&lt;UChar, 8&gt; result;
&gt; +    do {
&gt; +        result.prepend(hexDigits[number % 16]);
&gt; +        number &gt;&gt;= 4;
&gt; +    } while (result.size() &lt; desiredDigits);

As long as desiredDigits is only allowed to be in the range 1-8, we could do the same as I suggest above, using an array instead of a vector and starting at the end of the array.

&gt; Source/WebCore/platform/UUID.cpp:110
&gt; +    appendUnsignedAsHexFixedSize((randomData[2] &gt;&gt; 30) | 0x8, builder, 1, Lowercase);

This could use the non-fixed-size version. Fixed size seems OK, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373348</commentid>
    <comment_count>32</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-03-24 23:36:40 -0700</bug_when>
    <thetext>Committed r81943: &lt;http://trac.webkit.org/changeset/81943&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85324</attachid>
            <date>2011-03-10 07:34:24 -0800</date>
            <delta_ts>2011-03-10 07:43:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>HexNumber.patch</filename>
            <type>text/plain</type>
            <size>66637</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA3MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTEtMDMtMTAgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFdURiBIZXhOdW1iZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MDk5CisKKyAgICAgICAgSW50cm9kdWNlIGEgY2xhc3MgdGhhdCBpcyBj
YXBhYmxlIG9mIGNvbnZlcnRpbmcgZnJvbSB1bnNpZ25lZCBjaGFyL3Vuc2lnbmVkIHRvIGEgU3Ry
aW5nCisgICAgICAgIG9yIGFwcGVuZCBvbmUvdHdvIG9yIG1vcmUgY2hhcmFjdGVycyB0byBhIFZl
Y3RvcjxjaGFyPi9WZWN0b3I8VUNoYXI+LCBpbiBvcmRlciB0byByZXBsYWNlCisgICAgICAgIHJl
cGVhdGluZyBhbnkgLT4gaGV4IGNvbnZlcnNpb25zIGFuZCBTdHJpbmc6OmZvcm1hdCgiJXgiKSB1
c2FnZXMgYWxsIG92ZXIgV2ViQ29yZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDog
RXhwb3J0IFN0cmluZ0J1aWxkZXI6OnJlc2VydmVDYXBhY2l0eS4KKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgSGV4TnVtYmVyLmggdG8gYnVp
bGQuCisgICAgICAgICogd3RmL0hleE51bWJlci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6SGV4
TnVtYmVyOjpjaGFyVG9TdHJpbmcpOiBOZXcgcHVibGljIEFQSSwgdG8gY29udmVydCBhIHVuc2ln
bmVkIGNoYXIgdG8gYSBoZXggc3RyaW5nLgorICAgICAgICAoV1RGOjpIZXhOdW1iZXI6OmFwcGVu
ZENoYXJUb1ZlY3Rvcik6IERpdHRvLCBidXQgYXBwZW5kcyB0byBhIFZlY3Rvci4KKyAgICAgICAg
KFdURjo6SGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKTogU2FtZSBmb3IgdW5zaWduZWQgbnVt
YmVycy4KKyAgICAgICAgKFdURjo6SGV4TnVtYmVyOjphcHBlbmRVbnNpZ25lZFRvVmVjdG9yKTog
RGl0dG8uCisgICAgICAgIChXVEY6OkhleE51bWJlcjo6dXNlQ29tcHJlc3NlZE1vZGUpOiBJbnRl
cm5hbCBoZWxwZXIuCisgICAgICAgIChXVEY6OkhleE51bWJlcjo6aGV4RGlnaXRzRm9yTW9kZSk6
IERpdHRvLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg6IEFkZCB2YXJp
YW50IGZvciBtYWtlU3RyaW5nLCB0YWtpbmcgOSBhcmd1bWVudHMuCisgICAgICAgIChXVEY6OnRy
eU1ha2VTdHJpbmcpOgorICAgICAgICAoV1RGOjptYWtlU3RyaW5nKToKKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDogUmVtb3ZlIGFwcGVuZChWZWN0b3I8VUNoYXI+KSBmcmVlIGZ1bmN0
aW9ucywgd2FzIG9ubHkgdXNlZCBpbiBvbmUgcGxhY2UuCisKIDIwMTEtMDMtMDkgIERhbmllbCBC
YXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIEF0dGVtcHQgdG8gZml4IHRoZSBXaW5D
RSBidWlsZCBhZnRlciBjaGFuZ2VzZXQgODA2ODQgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzgwNjg0PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OCw2ICszODgsNyBAQCBfX1pOM1dURjEyY3Jl
YXRlVGhyZWFkRVBGUHZTMF9FUzBfUEtjCiBfX1pOM1dURjEyZGV0YWNoVGhyZWFkRWoKIF9fWk4z
V1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJhbmRvbU51bWJlckV2CitfX1pOM1dURjEz
U3RyaW5nQnVpbGRlcjE1cmVzZXJ2ZUNhcGFjaXR5RWoKIF9fWk4zV1RGMTNTdHJpbmdCdWlsZGVy
MTFyZWlmeVN0cmluZ0V2CiBfX1pOM1dURjEzU3RyaW5nQnVpbGRlcjExc2hyaW5rVG9GaXRFdgog
X19aTjNXVEYxM1N0cmluZ0J1aWxkZXI2YXBwZW5kRVBLY2oKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTAsNiArMjEwLDcgQEAKIAkJNjVERkM5MzMwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NURG
QzkyRDA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmNwcCAqLzsgfTsKIAkJNjVFMUEzREYx
MjJCODk0NTAwQjI2MDk3IC8qIE5vbkNvcHlpbmdTb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUxQTJGNDEyMkI4ODBEMDBCMjYwOTcgLyogTm9u
Q29weWluZ1NvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2NUZERTQ5QzBCREQxRDRBMDBFODAxMTEgLyogQXNzZXJ0aW9ucy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUyMTdCODA4RTdFRUND
MDAyM0U1RjYgLyogQXNzZXJ0aW9ucy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdT
ID0gIi1Xbm8tbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIjsgfTsgfTsKKwkJNzE4NkE2RUMxMzEw
MEJBNTAwNDQ3OUUxIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzE4NkE2RTgxMzEwMEI1NzAwNDQ3OUUxIC8qIEhleE51bWJlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc2RkI5
RjBGMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NkZCOUYwRTEyRTg1MTg2MDA1MUEyRUIgLyogU0hBMS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc2RkI5RjEx
MTJFODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc2RkI5RjEwMTJFODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCAq
LzsgfTsKIAkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3
OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODUwLDYgKzg1MSw3IEBACiAJCTY1RUE3MzYyMEJB
RTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbW9uSWRlbnRpZmllcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NUVBNzM2MzBCQUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRp
ZmllcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbklkZW50aWZp
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNEZEMzUzMDU2OTdFNkQwMDNE
QkVEOSAvKiBCb29sZWFuT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJvb2xlYW5PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB9OworCQk3MTg2QTZFODEzMTAwQjU3MDA0NDc5RTEgLyogSGV4TnVt
YmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhleE51bWJlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkZCOUYwRTEyRTg1MTg2MDA1MUEyRUIgLyogU0hB
MS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTSEExLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc2RkI5RjEwMTJFODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNIQTEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3RTJDNkM5ODBEMzFDNkI2MDAyRDQ0RTIgLyogU2NvcGVDaGFp
bk1hcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVDaGFpbk1hcmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjcsNiArMTU2OSw3IEBACiAJCQkJ
NjVERkM5MkQwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5jcHAgKi8sCiAJCQkJNjVERkM5
MkUwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5oICovLAogCQkJCTY1REZDOTJGMDhFQTE3
M0EwMEY3MzAwQiAvKiBIYXNoVHJhaXRzLmggKi8sCisJCQkJNzE4NkE2RTgxMzEwMEI1NzAwNDQ3
OUUxIC8qIEhleE51bWJlci5oICovLAogCQkJCTY1N0VCNzQ1MEI3MDhGNTQwMDYzNDYxQiAvKiBM
aXN0SGFzaFNldC5oICovLAogCQkJCTE0OEExNjI2MDk1RDE2QkIwMDY2NkQwRCAvKiBMaXN0UmVm
UHRyLmggKi8sCiAJCQkJRTFFRTc5MjcwRDZDOTY0NTAwRkVBM0JBIC8qIExvY2tlci5oICovLApA
QCAtMjIwNSw2ICsyMjA4LDcgQEAKIAkJCQlCQzE4QzQwRDBFMTZGNUNEMDBCMzQ0NjAgLyogSGFz
aFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwRTBFMTZGNUNEMDBCMzQ0NjAgLyog
SGFzaFRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwQ0RFNzExMkRFOTdCMTAwMTNDRkM1
IC8qIEhlYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxODZBNkVDMTMxMDBCQTUwMDQ0NzlFMSAv
KiBIZXhOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxMDBFMTZGNUNEMDBC
MzQ0NjAgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3
OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGV4TnVtYmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvSGV4TnVtYmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEhleE51bWJlcl9oCisjZGVmaW5lIEhl
eE51bWJlcl9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworY2xhc3MgSGV4TnVtYmVyIHsKK3B1YmxpYzoKKyAgICBlbnVtIENv
bnZlcnNpb25Nb2RlIHsKKyAgICAgICAgTG93ZXJDYXNlID0gMSA8PCAwLAorICAgICAgICBVcHBl
ckNhc2UgPSAxIDw8IDEsCisgICAgICAgIENvbXByZXNzZWQgPSAxIDw8IDIgLy8gZWcuICMwMDAg
KHVzZWQgaW4gdGhlIENTU1BhcnNlcikKKyAgICB9OworCisgICAgc3RhdGljIFN0cmluZyBjaGFy
VG9TdHJpbmcodW5zaWduZWQgY2hhciBudW1iZXIsIHVuc2lnbmVkIG1vZGUgPSBMb3dlckNhc2Up
CisgICAgeworICAgICAgICBjb25zdCBjaGFyKiBoZXhEaWdpdHMgPSBoZXhEaWdpdHNGb3JNb2Rl
KG1vZGUpOworICAgICAgICBpZiAodXNlQ29tcHJlc3NlZE1vZGUobW9kZSwgbnVtYmVyKSkKKyAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoJmhleERpZ2l0c1tudW1iZXIgJiAweEZdLCAxKTsKKyAg
ICAgICAgVmVjdG9yPFVDaGFyLCAyPiBidWZmZXI7CisgICAgICAgIGJ1ZmZlci5yZXNpemUoMik7
CisgICAgICAgIGJ1ZmZlclswXSA9IGhleERpZ2l0c1tudW1iZXIgPj4gNF07CisgICAgICAgIGJ1
ZmZlclsxXSA9IGhleERpZ2l0c1tudW1iZXIgJiAweEZdOworICAgICAgICByZXR1cm4gU3RyaW5n
OjphZG9wdChidWZmZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KKyAgICBzdGF0aWMgdm9pZCBhcHBlbmRDaGFyVG9WZWN0b3IodW5z
aWduZWQgY2hhciBudW1iZXIsIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBtb2RlID0gTG93ZXJDYXNlKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciog
aGV4RGlnaXRzID0gaGV4RGlnaXRzRm9yTW9kZShtb2RlKTsKKyAgICAgICAgaWYgKHVzZUNvbXBy
ZXNzZWRNb2RlKG1vZGUsIG51bWJlcikpIHsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVu
ZChoZXhEaWdpdHNbbnVtYmVyICYgMHhGXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgZGVzdGluYXRpb24uYXBwZW5kKGhleERpZ2l0c1tudW1iZXIgPj4gNF0pOwor
ICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoaGV4RGlnaXRzW251bWJlciAmIDB4Rl0pOworICAg
IH0KKworICAgIC8vIFRoaXMgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSBTdHJpbmc6OmZvcm1hdCgi
JTAzeCIsICIlMDhYIiwgIiV4IiwgIiVYIiksIGJ5IHNwZWNpZnlpbmcgZWl0aGVyIExvd2VyQ2Fz
ZS9VcHBlckNhc2UKKyAgICAvLyBhbmQgYnkgc2V0dGluZyBzdG9wQWZ0ZXJEaWdpdHMgdG8gdGhl
IGRlc2lyZWQgbnVtYmVyIG9mIGRpZ2l0cy4KKyAgICBzdGF0aWMgU3RyaW5nIHVuc2lnbmVkVG9T
dHJpbmcodW5zaWduZWQgbnVtYmVyLCBpbnQgc3RvcEFmdGVyRGlnaXRzID0gLTEsIHVuc2lnbmVk
IG1vZGUgPSBMb3dlckNhc2UpCisgICAgeworICAgICAgICBBU1NFUlQoIShtb2RlICYgQ29tcHJl
c3NlZCkpOyAvLyBDb21wcmVzc2VkIG1vZGUgb25seSBhdmFpbGFibGUgZm9yIGFwcGVuZFRvVmVj
dG9yKCkvY2hhclRvU3RyaW5nKCkuCisgICAgICAgIGNvbnN0IGNoYXIqIGhleERpZ2l0cyA9IGhl
eERpZ2l0c0Zvck1vZGUobW9kZSk7CisgICAgICAgIFZlY3RvcjxVQ2hhciwgOD4gcmVzdWx0Owor
ICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHJlc3VsdC5wcmVw
ZW5kKGhleERpZ2l0c1tudW1iZXIgJSAxNl0pOworICAgICAgICAgICAgbnVtYmVyID4+PSA0Owor
ICAgICAgICAgICAgKytpOworICAgICAgICB9IHdoaWxlIChzdG9wQWZ0ZXJEaWdpdHMgPT0gLTEg
PyBudW1iZXIgPiAwIDogaSA8IHN0b3BBZnRlckRpZ2l0cyk7CisKKyAgICAgICAgaWYgKHN0b3BB
ZnRlckRpZ2l0cyAhPSAtMSkKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJl
c3VsdC5zaXplKCkpID09IHN0b3BBZnRlckRpZ2l0cyk7CisgICAgCisgICAgICAgIHJldHVybiBT
dHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHN0YXRpYyB2b2lkIGFwcGVuZFVuc2lnbmVkVG9W
ZWN0b3IodW5zaWduZWQgbnVtYmVyLCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiBkZXN0aW5h
dGlvbiwgaW50IHN0b3BBZnRlckRpZ2l0cyA9IC0xLCB1bnNpZ25lZCBtb2RlID0gTG93ZXJDYXNl
KQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSBlYXNpbHkgb3B0aW1pemVkLCBpZiB3
ZSBzZWUgdGhlIG5lZWQgZm9yIGl0LgorICAgICAgICBTdHJpbmcgaGV4U3RyaW5nID0gdW5zaWdu
ZWRUb1N0cmluZyhudW1iZXIsIHN0b3BBZnRlckRpZ2l0cywgbW9kZSk7CisgICAgICAgIGRlc3Rp
bmF0aW9uLmFwcGVuZChoZXhTdHJpbmcuY2hhcmFjdGVycygpLCBoZXhTdHJpbmcubGVuZ3RoKCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCB1c2VDb21wcmVzc2VkTW9kZSh1
bnNpZ25lZCBtb2RlLCB1bnNpZ25lZCBjaGFyIG51bWJlcikKKyAgICB7CisgICAgICAgIHJldHVy
biBtb2RlICYgQ29tcHJlc3NlZCAmJiBudW1iZXIgPCAweDEwOworICAgIH0KKworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBoZXhEaWdpdHNGb3JNb2RlKHVuc2lnbmVkIG1vZGUpCisgICAgeworICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciBzX2xvd2VySGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5
YWJjZGVmIjsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgc191cHBlckhleERpZ2l0c1sxN10g
PSAiMDEyMzQ1Njc4OUFCQ0RFRiI7CisgICAgICAgIHJldHVybiBtb2RlICYgTG93ZXJDYXNlID8g
c19sb3dlckhleERpZ2l0cyA6IHNfdXBwZXJIZXhEaWdpdHM7CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6SGV4TnVtYmVyOworCisjZW5kaWYgLy8gSGV4TnVt
YmVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNiAr
NDE2LDU5IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHIKICAgICBy
ZXR1cm4gcmVzdWx0SW1wbDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5
cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5n
VHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5h
bWUgU3RyaW5nVHlwZTcsIHR5cGVuYW1lIFN0cmluZ1R5cGU4LCB0eXBlbmFtZSBTdHJpbmdUeXBl
OT4KK1Bhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJp
bmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBl
NCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJp
bmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBzdHJpbmc4LCBTdHJpbmdUeXBlOSBzdHJpbmc5
KQoreworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcx
KTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7
CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTM+IGFkYXB0ZXIzKHN0cmluZzMpOwor
ICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU0PiBhZGFwdGVyNChzdHJpbmc0KTsKKyAg
ICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNT4gYWRhcHRlcjUoc3RyaW5nNSk7CisgICAg
U3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTY+IGFkYXB0ZXI2KHN0cmluZzYpOworICAgIFN0
cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU3PiBhZGFwdGVyNyhzdHJpbmc3KTsKKyAgICBTdHJp
bmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlOD4gYWRhcHRlcjgoc3RyaW5nOCk7CisgICAgU3RyaW5n
VHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTk+IGFkYXB0ZXI5KHN0cmluZzkpOworCisgICAgVUNoYXIq
IGJ1ZmZlcjsKKyAgICBib29sIG92ZXJmbG93ID0gZmFsc2U7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRl
cjIubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFw
dGVyMy5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFk
YXB0ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwg
YWRhcHRlcjUubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3Ro
LCBhZGFwdGVyNi5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5n
dGgsIGFkYXB0ZXI3Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxl
bmd0aCwgYWRhcHRlcjgubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3co
bGVuZ3RoLCBhZGFwdGVyOS5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBs
ID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7Cisg
ICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFVDaGFyKiByZXN1
bHQgPSBidWZmZXI7CisgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCAr
PSBhZGFwdGVyMS5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CisgICAg
cmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOworICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0
KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjMubGVuZ3RoKCk7CisgICAgYWRhcHRlcjQud3JpdGVU
byhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKKyAgICBhZGFwdGVy
NS53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXI1Lmxlbmd0aCgpOworICAg
IGFkYXB0ZXI2LndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjYubGVuZ3Ro
KCk7CisgICAgYWRhcHRlcjcud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVy
Ny5sZW5ndGgoKTsKKyAgICBhZGFwdGVyOC53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9
IGFkYXB0ZXI4Lmxlbmd0aCgpOworICAgIGFkYXB0ZXI5LndyaXRlVG8ocmVzdWx0KTsKKworICAg
IHJldHVybiByZXN1bHRJbXBsOworfQorCisKIC8vIENvbnZlbmllbmNlIG9ubHkuCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMT4KIFN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0
cmluZzEpCkBAIC00ODYsNiArNTM5LDE1IEBAIFN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUx
IHN0cmluZzEsIFMKICAgICByZXR1cm4gcmVzdWx0SW1wbDsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBl
MywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBT
dHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTcsIHR5cGVuYW1lIFN0cmluZ1R5cGU4LCB0
eXBlbmFtZSBTdHJpbmdUeXBlOT4KK1N0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0
IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmlu
Z1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgsIFN0cmluZ1R5cGU5IHN0cmluZzkp
Cit7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmlu
ZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJpbmc2LCBz
dHJpbmc3LCBzdHJpbmc4LCBzdHJpbmc5KTsKKyAgICBpZiAoIXJlc3VsdEltcGwpCisgICAgICAg
IENSQVNIKCk7CisgICAgcmV0dXJuIHJlc3VsdEltcGw7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCiB1c2luZyBXVEY6Om1ha2VTdHJpbmc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDMxICs0
NTQsNiBAQCBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFyKiBjCiAgICAgcmV0
dXJuIGluZGV4OwogfQogCi1pbmxpbmUgdm9pZCBhcHBlbmQoVmVjdG9yPFVDaGFyPiYgdmVjdG9y
LCBjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICB2ZWN0b3IuYXBwZW5kKHN0cmluZy5jaGFy
YWN0ZXJzKCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0KLWlubGluZSB2b2lkIGFwcGVuZE51bWJl
cihWZWN0b3I8VUNoYXI+JiB2ZWN0b3IsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKQotewotICAgIGlu
dCBudW1iZXJMZW5ndGggPSBudW1iZXIgPiA5OSA/IDMgOiAobnVtYmVyID4gOSA/IDIgOiAxKTsK
LSAgICBzaXplX3QgdmVjdG9yU2l6ZSA9IHZlY3Rvci5zaXplKCk7Ci0gICAgdmVjdG9yLmdyb3co
dmVjdG9yU2l6ZSArIG51bWJlckxlbmd0aCk7Ci0KLSAgICBzd2l0Y2ggKG51bWJlckxlbmd0aCkg
ewotICAgIGNhc2UgMzoKLSAgICAgICAgdmVjdG9yW3ZlY3RvclNpemUgKyAyXSA9IG51bWJlciAl
IDEwICsgJzAnOwotICAgICAgICBudW1iZXIgLz0gMTA7Ci0KLSAgICBjYXNlIDI6Ci0gICAgICAg
IHZlY3Rvclt2ZWN0b3JTaXplICsgMV0gPSBudW1iZXIgJSAxMCArICcwJzsKLSAgICAgICAgbnVt
YmVyIC89IDEwOwotCi0gICAgY2FzZSAxOgotICAgICAgICB2ZWN0b3JbdmVjdG9yU2l6ZV0gPSBu
dW1iZXIgJSAxMCArICcwJzsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hh
cmFjdGVyKFVDaGFyKT4gaW5saW5lIGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyhjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC01MDgsOCArNDgzLDYgQEAgdGVtcGxhdGUgPD4gc3Ry
dWN0IFZlY3RvclRyYWl0czxTdHJpbmc+IAogCiB1c2luZyBXVEY6OkNTdHJpbmc7CiB1c2luZyBX
VEY6OlN0cmluZzsKLXVzaW5nIFdURjo6YXBwZW5kOwotdXNpbmcgV1RGOjphcHBlbmROdW1iZXI7
CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNBcmVBbGxBU0NJSTsKIHVzaW5nIFdURjo6Y2hhcmFjdGVy
c0FyZUFsbExhdGluMTsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gODA3MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw3OCBAQAorMjAxMS0wMy0xMCAgTmlrb2xhcyBaaW1tZXJt
YW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGIEhleE51bWJlciBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwOTkKKworICAgICAg
ICBJbnRyb2R1Y2UgYSBjbGFzcyB0aGF0IGlzIGNhcGFibGUgb2YgY29udmVydGluZyBmcm9tIHVu
c2lnbmVkIGNoYXIvdW5zaWduZWQgdG8gYSBTdHJpbmcKKyAgICAgICAgb3IgYXBwZW5kIG9uZS90
d28gb3IgbW9yZSBjaGFyYWN0ZXJzIHRvIGEgVmVjdG9yPGNoYXI+L1ZlY3RvcjxVQ2hhcj4sIGlu
IG9yZGVyIHRvIHJlcGxhY2UKKyAgICAgICAgcmVwZWF0aW5nIGFueSAtPiBoZXggY29udmVyc2lv
bnMgYW5kIFN0cmluZzo6Zm9ybWF0KCIleCIpIHVzYWdlcyBhbGwgb3ZlciBXZWJDb3JlLgorCisg
ICAgICAgIERvZXNuJ3QgYWZmZWN0IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5oOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvQ1NTT01V
dGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2lu
dCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdW90
ZUNTU1N0cmluZyk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKyAgICAgICAgKiBkb20v
RGF0YXNldERPTVN0cmluZ01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QXR0cmli
dXRlTmFtZVRvUHJvcGVydHlOYW1lKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpzY3JpcHRDb250ZW50KToKKyAgICAg
ICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1
cEFjY3VtdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFN0cmluZ1RvVmVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6Y29uY2F0ZW5hdGVNYXJrdXAp
OgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFF1b3RlZFVSTEF0
dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBl
bmROYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVu
ZENvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZERv
Y3VtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5k
UHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxh
dG9yOjphcHBlbmRPcGVuVGFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9y
OjphcHBlbmRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6
OmFwcGVuZENEQVRBU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kRW5kTWFya3VwKToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9y
Lmg6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UpOgorICAgICAgICAqIGVkaXRpbmcvbWFy
a3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFw
V2l0aFN0eWxlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6dGFrZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OmFwcGVuZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OmFwcGVuZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dXJsVG9NYXJrdXApOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFyeSk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxp
Z2h0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWU6OnNldFRvb2xUaXApOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50U291cmNlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1N0cmlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGVGb3JGaWxlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vS1VSTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpLVVJMOjpwcmV0dHlVUkwpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
RXNjYXBlZENoYXIpOgorICAgICAgICAqIHBsYXRmb3JtL1VVSUQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnNlcmlhbGl6ZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRTdHJlYW06Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyk6
CisKIDIwMTEtMDMtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgTm90IHJldmlld2VkOiByb2xsaW5nIG91dCByODA0NzggYW5kIGl0cyBmb2xsb3cg
dXBzIGZvciBicmVha2luZwpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0hleE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0hleE51bWJlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X0hleE51bWJlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGV4TnVtYmVyLmg+CisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAJKHJldmlzaW9uIDgwNzExKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTT01VdGlscy5oIgog
Ci0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsNyArNTMsMTAgQEAgdm9pZCBzZXJpYWxp
emVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBWZWN0bwogCiB2b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFz
Q29kZVBvaW50KFVDaGFyMzIgYywgVmVjdG9yPFVDaGFyPiYgYXBwZW5kVG8pCiB7Ci0gICAgYXBw
ZW5kKGFwcGVuZFRvLCBTdHJpbmc6OmZvcm1hdCgiXFwleCAiLCBjKSk7CisgICAgU3RyaW5nIGhl
eFN0cmluZyA9IEhleE51bWJlcjo6dW5zaWduZWRUb1N0cmluZyhjKTsKKyAgICBhcHBlbmRUby5h
cHBlbmQoJ1xcJyk7CisgICAgYXBwZW5kVG8uYXBwZW5kKGhleFN0cmluZy5jaGFyYWN0ZXJzKCks
IGhleFN0cmluZy5sZW5ndGgoKSk7CisgICAgYXBwZW5kVG8uYXBwZW5kKCcgJyk7CiB9CiAKIHZv
aWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFN0cmluZyYg
YXBwZW5kVG8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gODA3MTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzMsNiArNzMsNyBAQAogI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAjaW5j
bHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KKyNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAKICNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC02Mzk4LDExICs2Mzk5LDE2IEBAIFN0cmluZyBxdW90
ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmkKICAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsr
XSA9IGNoOwogICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKICAgICAgICAgfSBlbHNl
IGlmIChjaCA8IDB4MjAgfHwgY2ggPT0gMHg3RikgeyAvLyBDb250cm9sIGNoYXJhY3RlcnMuCi0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlh
YmNkZWYiOworICAgICAgICAgICAgVmVjdG9yPGNoYXIsIDI+IGRlc3RpbmF0aW9uOworICAgICAg
ICAgICAgSGV4TnVtYmVyOjphcHBlbmRDaGFyVG9WZWN0b3I8Y2hhciwgMj4oY2gsIGRlc3RpbmF0
aW9uLCBIZXhOdW1iZXI6Okxvd2VyQ2FzZSB8IEhleE51bWJlcjo6Q29tcHJlc3NlZCk7CisgICAg
ICAgICAgICBBU1NFUlQoZGVzdGluYXRpb24uc2l6ZSgpIDw9IDIpOwogICAgICAgICAgICAgYnVm
ZmVyW2luZGV4KytdID0gJ1xcJzsKLSAgICAgICAgICAgIGlmIChjaCA+PSAweDEwKQotICAgICAg
ICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1tjaCA+PiA0XTsKLSAgICAgICAg
ICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1tjaCAmIDB4Rl07CisgICAgICAgICAgICBp
ZiAoZGVzdGluYXRpb24uc2l6ZSgpID09IDEpCisgICAgICAgICAgICAgICAgYnVmZmVyW2luZGV4
KytdID0gZGVzdGluYXRpb25bMF07CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBidWZmZXJbaW5kZXgrK10gPSBkZXN0aW5hdGlvblswXTsKKyAgICAgICAgICAgICAgICBidWZm
ZXJbaW5kZXgrK10gPSBkZXN0aW5hdGlvblsxXTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGFmdGVyRXNjYXBlID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFNw
YWNlIGNoYXJhY3RlciBtYXkgYmUgcmVxdWlyZWQgdG8gc2VwYXJhdGUgYmFja3NsYXNoLWVzY2Fw
ZSBzZXF1ZW5jZSBhbmQgbm9ybWFsIGNoYXJhY3RlcnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzks
OCBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oPgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogI2luY2x1ZGUgIkRhc2hi
b2FyZFJlZ2lvbi5oIgpAQCAtNjMzLDU4ICs2MzUsNTggQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUEVSQ0VOVEFH
RToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIiUiOwor
ICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwg
IiUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19FTVM6Ci0gICAgICAg
ICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJlbSI7CisgICAgICAgICAg
ICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiZW0iKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19FWFM6Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJleCI7CisgICAgICAgICAgICB0ZXh0ID0g
bWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiZXgiKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19SRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSkgKyAicmVtIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3Ry
aW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJyZW0iKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19QWDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pICsgInB4IjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSksICJweCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTX0NNOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSkgKyAiY20iOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSwgImNtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
TU06Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJtbSI7
CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0p
LCAibW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19JTjoKLSAgICAg
ICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImluIjsKKyAgICAgICAg
ICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJpbiIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BUOgotICAgICAgICAgICAgdGV4
dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHQiOworICAgICAgICAgICAgdGV4dCA9
IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInB0Iik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUEM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSArICJwYyI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmlu
Zyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAicGMiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19ERUc6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSArICJkZWciOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSwgImRlZyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pICsgInJhZCI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pLCAicmFkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
U1NfR1JBRDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsg
ImdyYWQiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFs
dWUubnVtKSwgImdyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19N
UzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1zIjsK
KyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSks
ICJtcyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1M6Ci0gICAgICAg
ICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJzIjsKKyAgICAgICAgICAg
IHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJzIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSFo6Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJoeiI7CisgICAgICAgICAgICB0ZXh0ID0gbWFr
ZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiaHoiKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmco
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImtoeiIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSksICJ0dXJuIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfRElNRU5TSU9OOgogICAgICAgICAgICAgLy8gRklYTUUKQEAgLTY5MywyMiAr
Njk1LDEzIEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAg
ICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19VUkk6Ci0gICAgICAgICAgICB0ZXh0
ID0gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykgKyAiKSI7Cisg
ICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZygidXJsKCIsIHF1b3RlQ1NTVVJMSWZOZWVkZWQo
bV92YWx1ZS5zdHJpbmcpLCAnKScpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX0lERU5UOgogICAgICAgICAgICAgdGV4dCA9IHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1
ZS5pZGVudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfQVRUUjogewot
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGF0dHJQYXJlbiwg
KCJhdHRyKCIpKTsKLQotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAg
ICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg2ICsgbV92YWx1ZS5zdHJpbmctPmxl
bmd0aCgpKTsKLQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgYXR0clBhcmVuKTsKLSAgICAg
ICAgICAgIGFwcGVuZChyZXN1bHQsIG1fdmFsdWUuc3RyaW5nKTsKLSAgICAgICAgICAgIHJlc3Vs
dC51bmNoZWNrZWRBcHBlbmQoJyknKTsKLQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRv
cHQocmVzdWx0KTsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKCJhdHRyKCIsIFN0cmlu
ZyhtX3ZhbHVlLnN0cmluZyksICcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENTU19DT1VOVEVSX05BTUU6CkBAIC03MTcsODYgKzcxMCw1OCBAQCBTdHJp
bmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAgICAgICAgICB0ZXh0ICs9
ICIpIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19DT1VOVEVSOgotICAg
ICAgICAgICAgdGV4dCA9ICJjb3VudGVyKCI7Ci0gICAgICAgICAgICB0ZXh0ICs9IFN0cmluZzo6
bnVtYmVyKG1fdmFsdWUubnVtKTsKLSAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAg
ICAgdGV4dCA9IG1ha2VTdHJpbmcoImNvdW50ZXIoIiwgU3RyaW5nOjpudW1iZXIobV92YWx1ZS5u
dW0pLCAnKScpOwogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBsaXN0LXN0eWxlIGFuZCBzZXBh
cmF0b3IKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19SRUNUOiB7Ci0gICAg
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcmVjdFBhcmVuLCAoInJl
Y3QoIikpOwotCiAgICAgICAgICAgICBSZWN0KiByZWN0VmFsID0gZ2V0UmVjdFZhbHVlKCk7Ci0g
ICAgICAgICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KDMyKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJlY3RQ
YXJlbik7Ci0KLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJlY3RWYWwtPnRvcCgpLT5jc3NU
ZXh0KCkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotCi0gICAgICAgICAgICBh
cHBlbmQocmVzdWx0LCByZWN0VmFsLT5yaWdodCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICcpOwotCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZWN0VmFs
LT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsK
LQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkp
OwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwotCi0gICAgICAgICAgICB0ZXh0ID0g
U3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoInJl
Y3QoIiwgcmVjdFZhbC0+dG9wKCktPmNzc1RleHQoKSwgJyAnLCByZWN0VmFsLT5yaWdodCgpLT5j
c3NUZXh0KCksICcgJywgcmVjdFZhbC0+Ym90dG9tKCktPmNzc1RleHQoKSwgJyAnLCByZWN0VmFs
LT5sZWZ0KCktPmNzc1RleHQoKSwgJyknKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgogICAgICAgICBjYXNlIENTU19QQVJTRVJfSEVY
Q09MT1I6IHsKLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBj
b21tYVNwYWNlLCAoIiwgIikpOwotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIHJnYlBhcmVuLCAoInJnYigiKSk7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgcmdiYVBhcmVuLCAoInJnYmEoIikpOwotCiAgICAgICAgICAg
ICBSR0JBMzIgcmdiQ29sb3IgPSBtX3ZhbHVlLnJnYmNvbG9yOwogICAgICAgICAgICAgaWYgKG1f
dHlwZSA9PSBDU1NfUEFSU0VSX0hFWENPTE9SKQogICAgICAgICAgICAgICAgIENvbG9yOjpwYXJz
ZUhleENvbG9yKG1fdmFsdWUuc3RyaW5nLCByZ2JDb2xvcik7CisKICAgICAgICAgICAgIENvbG9y
IGNvbG9yKHJnYkNvbG9yKTsKIAotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0g
ICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7CisgICAgICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgICAgICBidWlsZGVyLnJlc2VydmVDYXBh
Y2l0eSgzMik7CiAgICAgICAgICAgICBpZiAoY29sb3IuaGFzQWxwaGEoKSkKLSAgICAgICAgICAg
ICAgICBhcHBlbmQocmVzdWx0LCByZ2JhUGFyZW4pOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJyZ2JhKCIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFwcGVu
ZChyZXN1bHQsIHJnYlBhcmVuKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgicmdi
KCIpOwogCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihjb2xvci5yZWQoKSkpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29t
bWFTcGFjZSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKFN0cmluZzo6
bnVtYmVyKGNvbG9yLnJlZCgpKSwgIiwgIikpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZyhTdHJpbmc6Om51bWJlcihjb2xvci5ncmVlbigpKSwgIiwgIikpOworICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIoY29sb3IuYmx1ZSgpKSk7CiAKLSAg
ICAgICAgICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGNvbG9yLmdyZWVuKCkpKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGNvbW1hU3BhY2Up
OwotCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjb2xvci5ibHVlKCkpKTsKLSAgICAgICAgICAgIGlmIChjb2xvci5oYXNBbHBoYSgp
KSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29tbWFTcGFjZSk7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIoY29sb3IuYWxwaGEoKSAvIDI1
Ni4wZikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbG9yLmhhc0FscGhhKCkp
CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCBTdHJpbmc6
Om51bWJlcihjb2xvci5hbHBoYSgpIC8gMjU2LjBmKSkpOwogCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICAgICAgICAgIHRleHQgPSBidWls
ZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU19QQUlSOgotICAgICAgICAgICAgdGV4dCA9IG1fdmFsdWUucGFpci0+Zmlyc3QoKS0+
Y3NzVGV4dCgpOwotICAgICAgICAgICAgdGV4dCArPSAiICI7Ci0gICAgICAgICAgICB0ZXh0ICs9
IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgIHRleHQgPSBt
YWtlU3RyaW5nKG1fdmFsdWUucGFpci0+Zmlyc3QoKS0+Y3NzVGV4dCgpLCAnICcsIG1fdmFsdWUu
cGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046
CisgICAgICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046IHsKKyAgICAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgICAgIGZvciAoRGFzaGJvYXJkUmVnaW9uKiByZWdp
b24gPSBnZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOyByZWdpb247IHJlZ2lvbiA9IHJlZ2lvbi0+
bV9uZXh0LmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICB0ZXh0
ICs9ICJkYXNoYm9hcmQtcmVnaW9uKCI7Ci0gICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24t
Pm1fbGFiZWw7CisgICAgICAgICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJkYXNoYm9hcmQtcmVnaW9uKCIsIHJlZ2lvbi0+bV9sYWJl
bCkpOwogICAgICAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAgICAgICAg
ICAgICAgICAgIHRleHQgKz0gIiBjaXJjbGUiOworICAgICAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiIGNpcmNsZSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9p
c1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiIHJlY3RhbmdsZSI7Ci0g
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
IHJlY3RhbmdsZSIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICB0ZXh0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbi0+dG9wKCktPm1f
dHlwZSA9PSBDU1NfSURFTlQgJiYgcmVnaW9uLT50b3AoKS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZUludmFsaWQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+cmlnaHQoKS0+
bV90eXBlID09IENTU19JREVOVCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZWdpb24t
PmJvdHRvbSgpLT5tX3R5cGUgPT0gQ1NTX0lERU5UKTsKQEAgLTgwNSwxNSArNzcwLDE3IEBAIFN0
cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlZ2lvbi0+Ym90dG9tKCktPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnZhbGlk
KTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bGVmdCgpLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCAr
PSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRl
eHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAg
ICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpICsgIiAiOwotICAgICAgICAg
ICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKG1ha2VTdHJpbmcocmVnaW9uLT50b3AoKS0+Y3NzVGV4dCgpLCAnICcpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhyZWdpb24tPnJpZ2h0
KCktPmNzc1RleHQoKSwgJyAnKSk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpLCAnICcpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKSk7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICB0
ZXh0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6IHsKICAgICAgICAgICAg
IGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1fdmFsdWUuaWRlbnQpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAkocmV2aXNpb24gODA3MTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NTEsMjMgKzUyLDIzIEBAIHN0YXRpYyBib29sIGlzVmFsaWRBdHRyaWJ1dGVOYW1lKGNvbnN0IFMK
IAogc3RhdGljIFN0cmluZyBjb252ZXJ0QXR0cmlidXRlTmFtZVRvUHJvcGVydHlOYW1lKGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKLSAgICBWZWN0b3I8VUNoYXI+IG5ld1N0cmluZ0J1ZmZlcjsKKyAg
ICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAKICAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVycyA9IG5hbWUuY2hhcmFjdGVycygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5hbWUubGVu
Z3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gNTsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAg
ICAgIGlmIChjaGFyYWN0ZXJzW2ldICE9ICctJykKLSAgICAgICAgICAgIG5ld1N0cmluZ0J1ZmZl
ci5hcHBlbmQoY2hhcmFjdGVyc1tpXSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChjaGFyYWN0ZXJzW2ldKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoKGkgKyAx
IDwgbGVuZ3RoKSAmJiBpc0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpICsgMV0pKSB7Ci0gICAgICAg
ICAgICAgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZCh0b0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tp
ICsgMV0pKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b0FTQ0lJVXBw
ZXIoY2hhcmFjdGVyc1tpICsgMV0pKTsKICAgICAgICAgICAgICAgICArK2k7CiAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBuZXdTdHJpbmdCdWZmZXIuYXBwZW5kKGNoYXJhY3Rl
cnNbaV0pOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGNoYXJhY3RlcnNb
aV0pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQobmV3U3Ry
aW5nQnVmZmVyKTsKKyAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCiBz
dGF0aWMgYm9vbCBwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRlTmFtZShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0z
MTMsNyArMzE0LDcgQEAgYm9vbCBTY3JpcHRFbGVtZW50Ojppc1NjcmlwdEZvckV2ZW50U3VwcAog
CiBTdHJpbmcgU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgpIGNvbnN0CiB7Ci0gICAgVmVj
dG9yPFVDaGFyPiB2YWw7CisgICAgU3RyaW5nQnVpbGRlciBjb250ZW50OwogICAgIFRleHQqIGZp
cnN0VGV4dE5vZGUgPSAwOwogICAgIGJvb2wgZm91bmRNdWx0aXBsZVRleHROb2RlcyA9IGZhbHNl
OwogCkBAIC0zMjMsMTAgKzMyNCwxMCBAQCBTdHJpbmcgU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29u
dGVudCgpIGNvCiAKICAgICAgICAgVGV4dCogdCA9IHN0YXRpY19jYXN0PFRleHQqPihuKTsKICAg
ICAgICAgaWYgKGZvdW5kTXVsdGlwbGVUZXh0Tm9kZXMpCi0gICAgICAgICAgICBhcHBlbmQodmFs
LCB0LT5kYXRhKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQodC0+ZGF0YSgpKTsKICAg
ICAgICAgZWxzZSBpZiAoZmlyc3RUZXh0Tm9kZSkgewotICAgICAgICAgICAgYXBwZW5kKHZhbCwg
Zmlyc3RUZXh0Tm9kZS0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGFwcGVuZCh2YWwsIHQtPmRhdGEo
KSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChmaXJzdFRleHROb2RlLT5kYXRhKCkpOwor
ICAgICAgICAgICAgY29udGVudC5hcHBlbmQodC0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvdW5k
TXVsdGlwbGVUZXh0Tm9kZXMgPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGZp
cnN0VGV4dE5vZGUgPSB0OwpAQCAtMzM1LDcgKzMzNiw3IEBAIFN0cmluZyBTY3JpcHRFbGVtZW50
OjpzY3JpcHRDb250ZW50KCkgY28KICAgICBpZiAoZmlyc3RUZXh0Tm9kZSAmJiAhZm91bmRNdWx0
aXBsZVRleHROb2RlcykKICAgICAgICAgcmV0dXJuIGZpcnN0VGV4dE5vZGUtPmRhdGEoKTsKIAot
ICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHZhbCk7CisgICAgcmV0dXJuIGNvbnRlbnQudG9TdHJp
bmcoKTsKIH0KIAogU2NyaXB0RWxlbWVudCogdG9TY3JpcHRFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCShy
ZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIlRleHQuaCIK
ICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFt
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTYsNyArNTgsNyBAQCBTdHJpbmcgY29u
dmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hCiAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkg
JiYgbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpCiAgICAgICAg
IHJldHVybiBpbjsKIAotICAgIFZlY3RvcjxVQ2hhcj4gczsKKyAgICBTdHJpbmdCdWlsZGVyIHM7
CiAKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICB1bnNpZ25lZCBjb25zdW1lZCA9IDA7CkBAIC03
MywzMCArNzUsMjUgQEAgU3RyaW5nIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYQog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFkZCA9IGNvdW50ICUgMzsKICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGFkZCkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmQocywgY29udmVydGVkU3BhY2VTdHJpbmcoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kKHMsIGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcy5hcHBlbmQobWFrZVN0cmluZyhjb252ZXJ0ZWRTcGFjZVN0cmluZygpLCAnICcsIGNvbnZl
cnRlZFNwYWNlU3RyaW5nKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCA9IDM7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSAx
OgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCB8fCBpICsgMSA9PSBpbi5sZW5n
dGgoKSkgLy8gYXQgc3RhcnQgb3IgZW5kIG9mIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChzLCBjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLmFwcGVuZChjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVu
ZCgnICcpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgc3RhcnQgb2Ygc3RyaW5nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKHMsIGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy5hcHBlbmQobWFrZVN0cmluZyhjb252ZXJ0ZWRTcGFjZVN0cmluZygpLCAn
ICcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSArIDIgPT0gaW4ubGVu
Z3RoKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgZW5kIG9mIHN0cmlu
ZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChzLCBjb252ZXJ0ZWRTcGFjZVN0
cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQocywgY29udmVydGVk
U3BhY2VTdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChzLCBjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZCgnICcpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKGNvbnZl
cnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5k
KGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQobWFrZVN0cmluZyhjb252ZXJ0
ZWRTcGFjZVN0cmluZygpLCAnICcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb3VudCAtPSBhZGQ7CkBAIC0xMDYs
NyArMTAzLDcgQEAgU3RyaW5nIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYQogICAg
ICAgICBpICs9IGNvbnN1bWVkOwogICAgIH0KIAotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHMp
OworICAgIHJldHVybiBzLnRvU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCShy
ZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKKy8vIEZJWE1FOiBUaGUgd2hvbGUg
ZmlsZSBzaG91bGQgc3dpdGNoIHRvIHVzZSBTdHJpbmdCdWlsZGVyL1N0cmluZ0NvbmNhdGVuYXRl
Lgordm9pZCBhcHBlbmRTdHJpbmdUb1ZlY3RvcihWZWN0b3I8VUNoYXI+JiBvdXQsIGNvbnN0IFN0
cmluZyYgc3RyaW5nKQoreworICAgIG91dC5hcHBlbmQoc3RyaW5nLmNoYXJhY3RlcnMoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKK30KKwogdm9pZCBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRp
ZXMoVmVjdG9yPFVDaGFyPiYgb3V0LCBjb25zdCBVQ2hhciogY29udGVudCwgc2l6ZV90IGxlbmd0
aCwgRW50aXR5TWFzayBlbnRpdHlNYXNrKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCBhbXBSZWZlcmVuY2UsICgiJmFtcDsiKSk7CkBAIC02NCw3ICs3MCw3IEBAIHZv
aWQgYXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0aWVzKFYKICAgICAgICAgZm9yIChzaXpl
X3QgbSA9IDA7IG0gPCBXVEZfQVJSQVlfTEVOR1RIKGVudGl0eU1hcHMpOyArK20pIHsKICAgICAg
ICAgICAgIGlmIChjb250ZW50W2ldID09IGVudGl0eU1hcHNbbV0uZW50aXR5ICYmIGVudGl0eU1h
cHNbbV0ubWFzayAmIGVudGl0eU1hc2spIHsKICAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKGNv
bnRlbnQgKyBwb3NpdGlvbkFmdGVyTGFzdEVudGl0eSwgaSAtIHBvc2l0aW9uQWZ0ZXJMYXN0RW50
aXR5KTsKLSAgICAgICAgICAgICAgICBhcHBlbmQob3V0LCBlbnRpdHlNYXBzW21dLnJlZmVyZW5j
ZSk7CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0LCBlbnRpdHlNYXBz
W21dLnJlZmVyZW5jZSk7CiAgICAgICAgICAgICAgICAgcG9zaXRpb25BZnRlckxhc3RFbnRpdHkg
PSBpICsgMTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE0OSw3
ICsxNTUsNyBAQCBzaXplX3QgTWFya3VwQWNjdW11bGF0b3I6OnRvdGFsTGVuZ3RoKGNvCiB2b2lk
IE1hcmt1cEFjY3VtdWxhdG9yOjpjb25jYXRlbmF0ZU1hcmt1cChWZWN0b3I8VUNoYXI+JiBvdXQp
CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N1Y2NlZWRpbmdNYXJrdXAuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGFwcGVuZChvdXQsIG1fc3VjY2VlZGluZ01hcmt1cFtpXSk7CisgICAg
ICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKG91dCwgbV9zdWNjZWVkaW5nTWFya3VwW2ldKTsKIH0K
IAogdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQXR0cmlidXRlVmFsdWUoVmVjdG9yPFVD
aGFyPiYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgYm9vbCBkb2N1bWVudElzSFRN
TCkKQEAgLTE3MSw3ICsxNzcsNyBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRRdW90
ZWRVUkxBCiAgICAgICAgICAgICAgICAgcXVvdGVDaGFyID0gJ1wnJzsKICAgICAgICAgfQogICAg
ICAgICByZXN1bHQuYXBwZW5kKHF1b3RlQ2hhcik7Ci0gICAgICAgIGFwcGVuZChyZXN1bHQsIHN0
cmlwcGVkVVJMU3RyaW5nKTsKKyAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVzdWx0LCBz
dHJpcHBlZFVSTFN0cmluZyk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVvdGVDaGFyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0MSwxMCArMjQ3LDEwIEBAIHZvaWQgTWFya3VwQWNj
dW11bGF0b3I6OmFwcGVuZE5hbWVzcGFjZSgKICAgICBpZiAoZm91bmROUyAhPSBuYW1lc3BhY2VV
UkkuaW1wbCgpKSB7CiAgICAgICAgIG5hbWVzcGFjZXMuc2V0KHByZSwgbmFtZXNwYWNlVVJJLmlt
cGwoKSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgYXBwZW5kKHJlc3Vs
dCwgeG1sbnNBdG9tLnN0cmluZygpKTsKKyAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVz
dWx0LCB4bWxuc0F0b20uc3RyaW5nKCkpOwogICAgICAgICBpZiAoIXByZWZpeC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKLSAgICAgICAgICAgIGFwcGVuZChy
ZXN1bHQsIHByZWZpeCk7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdUb1ZlY3RvcihyZXN1bHQs
IHByZWZpeCk7CiAgICAgICAgIH0KIAogICAgICAgICByZXN1bHQuYXBwZW5kKCc9Jyk7CkBAIC0y
NzQsOSArMjgwLDkgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChWZWN0bwog
dm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ29tbWVudChWZWN0b3I8VUNoYXI+JiBvdXQs
IGNvbnN0IFN0cmluZyYgY29tbWVudCkKIHsKICAgICAvLyBGSVhNRTogQ29tbWVudCBjb250ZW50
IGlzIG5vdCBlc2NhcGVkLCBidXQgWE1MU2VyaWFsaXplciAoYW5kIHBvc3NpYmx5IG90aGVyIGNh
bGxlcnMpIHNob3VsZCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgaW5jbHVkZXMgIi0tPiIuCi0g
ICAgYXBwZW5kKG91dCwgIjwhLS0iKTsKLSAgICBhcHBlbmQob3V0LCBjb21tZW50KTsKLSAgICBh
cHBlbmQob3V0LCAiLS0+Iik7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0LCAiPCEtLSIp
OworICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKG91dCwgY29tbWVudCk7CisgICAgYXBwZW5kU3Ry
aW5nVG9WZWN0b3Iob3V0LCAiLS0+Iik7CiB9CiAKIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZERvY3VtZW50VHlwZShWZWN0b3I8VUNoYXI+JiByZXN1bHQsIGNvbnN0IERvY3VtZW50VHlw
ZSogbikKQEAgLTI4NCwzOCArMjkwLDM4IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVu
ZERvY3VtZW50VHkKICAgICBpZiAobi0+bmFtZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXBwZW5kKHJlc3VsdCwgIjwhRE9DVFlQRSAiKTsKLSAgICBhcHBlbmQocmVzdWx0
LCBuLT5uYW1lKCkpOworICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKHJlc3VsdCwgIjwhRE9DVFlQ
RSAiKTsKKyAgICBhcHBlbmRTdHJpbmdUb1ZlY3RvcihyZXN1bHQsIG4tPm5hbWUoKSk7CiAgICAg
aWYgKCFuLT5wdWJsaWNJZCgpLmlzRW1wdHkoKSkgewotICAgICAgICBhcHBlbmQocmVzdWx0LCAi
IFBVQkxJQyBcIiIpOwotICAgICAgICBhcHBlbmQocmVzdWx0LCBuLT5wdWJsaWNJZCgpKTsKLSAg
ICAgICAgYXBwZW5kKHJlc3VsdCwgIlwiIik7CisgICAgICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9y
KHJlc3VsdCwgIiBQVUJMSUMgXCIiKTsKKyAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVz
dWx0LCBuLT5wdWJsaWNJZCgpKTsKKyAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVzdWx0
LCAiXCIiKTsKICAgICAgICAgaWYgKCFuLT5zeXN0ZW1JZCgpLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgYXBwZW5kKHJlc3VsdCwgIiBcIiIpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
bi0+c3lzdGVtSWQoKSk7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCAiXCIiKTsKKyAgICAg
ICAgICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKHJlc3VsdCwgIiBcIiIpOworICAgICAgICAgICAg
YXBwZW5kU3RyaW5nVG9WZWN0b3IocmVzdWx0LCBuLT5zeXN0ZW1JZCgpKTsKKyAgICAgICAgICAg
IGFwcGVuZFN0cmluZ1RvVmVjdG9yKHJlc3VsdCwgIlwiIik7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKCFuLT5zeXN0ZW1JZCgpLmlzRW1wdHkoKSkgewotICAgICAgICBhcHBlbmQocmVzdWx0
LCAiIFNZU1RFTSBcIiIpOwotICAgICAgICBhcHBlbmQocmVzdWx0LCBuLT5zeXN0ZW1JZCgpKTsK
LSAgICAgICAgYXBwZW5kKHJlc3VsdCwgIlwiIik7CisgICAgICAgIGFwcGVuZFN0cmluZ1RvVmVj
dG9yKHJlc3VsdCwgIiBTWVNURU0gXCIiKTsKKyAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Io
cmVzdWx0LCBuLT5zeXN0ZW1JZCgpKTsKKyAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVz
dWx0LCAiXCIiKTsKICAgICB9CiAgICAgaWYgKCFuLT5pbnRlcm5hbFN1YnNldCgpLmlzRW1wdHko
KSkgewotICAgICAgICBhcHBlbmQocmVzdWx0LCAiIFsiKTsKLSAgICAgICAgYXBwZW5kKHJlc3Vs
dCwgbi0+aW50ZXJuYWxTdWJzZXQoKSk7Ci0gICAgICAgIGFwcGVuZChyZXN1bHQsICJdIik7Cisg
ICAgICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKHJlc3VsdCwgIiBbIik7CisgICAgICAgIGFwcGVu
ZFN0cmluZ1RvVmVjdG9yKHJlc3VsdCwgbi0+aW50ZXJuYWxTdWJzZXQoKSk7CisgICAgICAgIGFw
cGVuZFN0cmluZ1RvVmVjdG9yKHJlc3VsdCwgIl0iKTsKICAgICB9Ci0gICAgYXBwZW5kKHJlc3Vs
dCwgIj4iKTsKKyAgICBhcHBlbmRTdHJpbmdUb1ZlY3RvcihyZXN1bHQsICI+Iik7CiB9CiAKIHZv
aWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbihWZWN0b3I8
VUNoYXI+JiBvdXQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7
CiAgICAgLy8gRklYTUU6IFBJIGRhdGEgaXMgbm90IGVzY2FwZWQsIGJ1dCBYTUxTZXJpYWxpemVy
IChhbmQgcG9zc2libHkgb3RoZXIgY2FsbGVycykgdGhpcyBzaG91bGQgcmFpc2UgYW4gZXhjZXB0
aW9uIGlmIGl0IGluY2x1ZGVzICI/PiIuCi0gICAgYXBwZW5kKG91dCwgIjw/Iik7Ci0gICAgYXBw
ZW5kKG91dCwgdGFyZ2V0KTsKLSAgICBhcHBlbmQob3V0LCAiICIpOwotICAgIGFwcGVuZChvdXQs
IGRhdGEpOwotICAgIGFwcGVuZChvdXQsICI/PiIpOworICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9y
KG91dCwgIjw/Iik7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0LCB0YXJnZXQpOworICAg
IGFwcGVuZFN0cmluZ1RvVmVjdG9yKG91dCwgIiAiKTsKKyAgICBhcHBlbmRTdHJpbmdUb1ZlY3Rv
cihvdXQsIGRhdGEpOworICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKG91dCwgIj8+Iik7CiB9CiAK
IHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1lbnQoVmVjdG9yPFVDaGFyPiYgb3V0
LCBFbGVtZW50KiBlbGVtZW50LCBOYW1lc3BhY2VzKiBuYW1lc3BhY2VzKQpAQCAtMzMzLDcgKzMz
OSw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1lbnQoVmUKIHZvaWQgTWFy
a3VwQWNjdW11bGF0b3I6OmFwcGVuZE9wZW5UYWcoVmVjdG9yPFVDaGFyPiYgb3V0LCBFbGVtZW50
KiBlbGVtZW50LCBOYW1lc3BhY2VzKiBuYW1lc3BhY2VzKQogewogICAgIG91dC5hcHBlbmQoJzwn
KTsKLSAgICBhcHBlbmQob3V0LCBlbGVtZW50LT5ub2RlTmFtZVByZXNlcnZpbmdDYXNlKCkpOwor
ICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKG91dCwgZWxlbWVudC0+bm9kZU5hbWVQcmVzZXJ2aW5n
Q2FzZSgpKTsKICAgICBpZiAoIWVsZW1lbnQtPmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkg
JiYgbmFtZXNwYWNlcyAmJiBzaG91bGRBZGROYW1lc3BhY2VFbGVtZW50KGVsZW1lbnQpKQogICAg
ICAgICBhcHBlbmROYW1lc3BhY2Uob3V0LCBlbGVtZW50LT5wcmVmaXgoKSwgZWxlbWVudC0+bmFt
ZXNwYWNlVVJJKCksICpuYW1lc3BhY2VzKTsgICAgCiB9CkBAIC0zNTUsOSArMzYxLDkgQEAgdm9p
ZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQXR0cmlidXRlKAogICAgIG91dC5hcHBlbmQoJyAn
KTsKIAogICAgIGlmIChkb2N1bWVudElzSFRNTCkKLSAgICAgICAgYXBwZW5kKG91dCwgYXR0cmli
dXRlLm5hbWUoKS5sb2NhbE5hbWUoKSk7CisgICAgICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKG91
dCwgYXR0cmlidXRlLm5hbWUoKS5sb2NhbE5hbWUoKSk7CiAgICAgZWxzZQotICAgICAgICBhcHBl
bmQob3V0LCBhdHRyaWJ1dGUubmFtZSgpLnRvU3RyaW5nKCkpOworICAgICAgICBhcHBlbmRTdHJp
bmdUb1ZlY3RvcihvdXQsIGF0dHJpYnV0ZS5uYW1lKCkudG9TdHJpbmcoKSk7CiAKICAgICBvdXQu
YXBwZW5kKCc9Jyk7CiAKQEAgLTM4MSw5ICszODcsOSBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9y
OjphcHBlbmRBdHRyaWJ1dGUoCiB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDREFUQVNl
Y3Rpb24oVmVjdG9yPFVDaGFyPiYgb3V0LCBjb25zdCBTdHJpbmcmIHNlY3Rpb24pCiB7CiAgICAg
Ly8gRklYTUU6IENEQVRBIGNvbnRlbnQgaXMgbm90IGVzY2FwZWQsIGJ1dCBYTUxTZXJpYWxpemVy
IChhbmQgcG9zc2libHkgb3RoZXIgY2FsbGVycykgc2hvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbiBp
ZiBpdCBpbmNsdWRlcyAiXV0+Ii4KLSAgICBhcHBlbmQob3V0LCAiPCFbQ0RBVEFbIik7Ci0gICAg
YXBwZW5kKG91dCwgc2VjdGlvbik7Ci0gICAgYXBwZW5kKG91dCwgIl1dPiIpOworICAgIGFwcGVu
ZFN0cmluZ1RvVmVjdG9yKG91dCwgIjwhW0NEQVRBWyIpOworICAgIGFwcGVuZFN0cmluZ1RvVmVj
dG9yKG91dCwgc2VjdGlvbik7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0LCAiXV0+Iik7
CiB9CiAKIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKFZlY3RvcjxV
Q2hhcj4mIHJlc3VsdCwgY29uc3QgTm9kZSogbm9kZSwgTmFtZXNwYWNlcyogbmFtZXNwYWNlcykK
QEAgLTQ1OCw3ICs0NjQsNyBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRFbmRNYXJr
dXAoCiAKICAgICByZXN1bHQuYXBwZW5kKCc8Jyk7CiAgICAgcmVzdWx0LmFwcGVuZCgnLycpOwot
ICAgIGFwcGVuZChyZXN1bHQsIHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnQqPihub2RlKS0+bm9k
ZU5hbWVQcmVzZXJ2aW5nQ2FzZSgpKTsKKyAgICBhcHBlbmRTdHJpbmdUb1ZlY3RvcihyZXN1bHQs
IHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnQqPihub2RlKS0+bm9kZU5hbWVQcmVzZXJ2aW5nQ2Fz
ZSgpKTsKICAgICByZXN1bHQuYXBwZW5kKCc+Jyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmgJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMsNiArMTEzLDcgQEAgcHJpdmF0ZToKIAogLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNob3VsZCBi
ZSBpbnRlZ3JhdGVkIHdpdGggTWFya3VwQWNjdW11bGF0b3IuCiB2b2lkIGFwcGVuZENoYXJhY3Rl
cnNSZXBsYWNpbmdFbnRpdGllcyhWZWN0b3I8VUNoYXI+JiBvdXQsIGNvbnN0IFVDaGFyKiBjb250
ZW50LCBzaXplX3QgbGVuZ3RoLCBFbnRpdHlNYXNrIGVudGl0eU1hc2spOwordm9pZCBhcHBlbmRT
dHJpbmdUb1ZlY3RvcihWZWN0b3I8VUNoYXI+JiBvdXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKTsK
IAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkocmV2aXNp
b24gODA3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIGludCBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhj
b25zdCBOb2RlKiBub2QKIFN0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RhcnRJc1N0YXJ0T2ZQYXJhZ3JhcGgsIGJvb2wgZW5k
SXNFbmRPZlBhcmFncmFwaCkKIHsKICAgICBWZWN0b3I8VUNoYXI+IHJlYmFsYW5jZWRTdHJpbmc7
Ci0gICAgYXBwZW5kKHJlYmFsYW5jZWRTdHJpbmcsIHN0cmluZyk7CisgICAgcmViYWxhbmNlZFN0
cmluZy5hcHBlbmQoc3RyaW5nLmNoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIAogICAg
IGJvb2wgcHJldmlvdXNDaGFyYWN0ZXJXYXNTcGFjZSA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcmViYWxhbmNlZFN0cmluZy5zaXplKCk7IGkrKykgewpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lk
IFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFwV2l0aFN0CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIHN0eWxlU3Bhbk9wZW4sICgiPHNwYW4gY2xhc3M9XCIiIEFwcGxl
U3R5bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCBzdHlsZVNwYW5DbG9zZSwgKCI8L3NwYW4+IikpOwogICAgIFZlY3RvcjxV
Q2hhcj4gb3BlblRhZzsKLSAgICBhcHBlbmQob3BlblRhZywgaXNCbG9jayA/IGRpdlN0eWxlIDog
c3R5bGVTcGFuT3Blbik7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3BlblRhZywgaXNCbG9j
ayA/IGRpdlN0eWxlIDogc3R5bGVTcGFuT3Blbik7CiAgICAgYXBwZW5kQXR0cmlidXRlVmFsdWUo
b3BlblRhZywgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOwog
ICAgIG9wZW5UYWcuYXBwZW5kKCdcIicpOwogICAgIG9wZW5UYWcuYXBwZW5kKCc+Jyk7CkBAIC0x
ODAsNyArMTgwLDcgQEAgU3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdQog
ICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRvdGFsTGVuZ3RoKG1fcmV2ZXJzZWRQ
cmVjZWRpbmdNYXJrdXApICsgbGVuZ3RoKCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IG1fcmV2
ZXJzZWRQcmVjZWRpbmdNYXJrdXAuc2l6ZSgpOyBpID4gMDsgLS1pKQotICAgICAgICBhcHBlbmQo
cmVzdWx0LCBtX3JldmVyc2VkUHJlY2VkaW5nTWFya3VwW2kgLSAxXSk7CisgICAgICAgIGFwcGVu
ZFN0cmluZ1RvVmVjdG9yKHJlc3VsdCwgbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cFtpIC0gMV0p
OwogCiAgICAgY29uY2F0ZW5hdGVNYXJrdXAocmVzdWx0KTsKIApAQCAtMTk5LDcgKzE5OSw3IEBA
IHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQKICAgICBTdHJpbmcgY29u
dGVudCA9IHVzZVJlbmRlcmVkVGV4dCA/IHJlbmRlcmVkVGV4dCh0ZXh0LCBtX3JhbmdlKSA6IHN0
cmluZ1ZhbHVlRm9yUmFuZ2UodGV4dCwgbV9yYW5nZSk7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZm
ZXI7CiAgICAgYXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0aWVzKGJ1ZmZlciwgY29udGVu
dC5jaGFyYWN0ZXJzKCksIGNvbnRlbnQubGVuZ3RoKCksIEVudGl0eU1hc2tJblBDREFUQSk7Ci0g
ICAgYXBwZW5kKG91dCwgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChTdHJpbmc6
OmFkb3B0KGJ1ZmZlciksIHRleHQpKTsKKyAgICBhcHBlbmRTdHJpbmdUb1ZlY3RvcihvdXQsIGNv
bnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYXQoU3RyaW5nOjphZG9wdChidWZmZXIpLCB0
ZXh0KSk7CiB9CiAgICAgCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnJlbmRlcmVk
VGV4dChjb25zdCBOb2RlKiBub2RlLCBjb25zdCBSYW5nZSogcmFuZ2UpCkBAIC0zMDMsNyArMzAz
LDcgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbQogICAgICAgICAg
ICAgcmVtb3ZlRXh0ZXJpb3JTdHlsZXMoc3R5bGUuZ2V0KCkpOwogICAgICAgICBpZiAoc3R5bGUt
Pmxlbmd0aCgpID4gMCkgewogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIHN0eWxlUHJlZml4LCAoIiBzdHlsZT1cIiIpKTsKLSAgICAgICAgICAgIGFwcGVuZChv
dXQsIHN0eWxlUHJlZml4KTsKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKG91dCwg
c3R5bGVQcmVmaXgpOwogICAgICAgICAgICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3V0LCBzdHls
ZS0+Y3NzVGV4dCgpLCBkb2N1bWVudElzSFRNTCk7CiAgICAgICAgICAgICBvdXQuYXBwZW5kKCdc
IicpOwogICAgICAgICB9CkBAIC05MDUsMTEgKzkwNSwxMSBAQCBTdHJpbmcgY3JlYXRlRnVsbE1h
cmt1cChjb25zdCBSYW5nZSogcmFuCiBTdHJpbmcgdXJsVG9NYXJrdXAoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFZlY3RvcjxVQ2hhcj4gbWFya3VwOwotICAg
IGFwcGVuZChtYXJrdXAsICI8YSBocmVmPVwiIik7Ci0gICAgYXBwZW5kKG1hcmt1cCwgdXJsLnN0
cmluZygpKTsKLSAgICBhcHBlbmQobWFya3VwLCAiXCI+Iik7CisgICAgYXBwZW5kU3RyaW5nVG9W
ZWN0b3IobWFya3VwLCAiPGEgaHJlZj1cIiIpOworICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKG1h
cmt1cCwgdXJsLnN0cmluZygpKTsKKyAgICBhcHBlbmRTdHJpbmdUb1ZlY3RvcihtYXJrdXAsICJc
Ij4iKTsKICAgICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMobWFya3VwLCB0aXRs
ZS5jaGFyYWN0ZXJzKCksIHRpdGxlLmxlbmd0aCgpLCBFbnRpdHlNYXNrSW5QQ0RBVEEpOwotICAg
IGFwcGVuZChtYXJrdXAsICI8L2E+Iik7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IobWFya3Vw
LCAiPC9hPiIpOwogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KG1hcmt1cCk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAj
aW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKIAogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYv
TGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVmZmVyLmg+CkBAIC00NTYsMTcgKzQ1NywxMyBAQCB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmZyYW1lRGV0YWNoCiBzdGF0aWMgU3RyaW5nIGNyZWF0ZVJlYWRhYmxlU3Ry
aW5nRnJvbUJpbmFyeShjb25zdCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBBU1NFUlQobGVuZ3RoID4gMCk7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgaGV4RGln
aXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGxl
bmd0aCAqIDMgLSAxOwotICAgIFN0cmluZ0J1ZmZlciBidWZmZXIoYnVmZmVyU2l6ZSk7Ci0gICAg
c2l6ZV90IGluZGV4ID0gMDsKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcjsKKyAgICBidWZmZXIu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggKiAzIC0gMSk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAg
ICBidWZmZXJbaW5kZXgrK10gPSAnOic7Ci0gICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERp
Z2l0c1t2YWx1ZVtpXSA+PiA0XTsKLSAgICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRz
W3ZhbHVlW2ldICYgMHhGXTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJzonKTsKKyAgICAg
ICAgSGV4TnVtYmVyOjphcHBlbmRDaGFyVG9WZWN0b3I8VUNoYXI+KHZhbHVlW2ldLCBidWZmZXIs
IEhleE51bWJlcjo6VXBwZXJDYXNlKTsKICAgICB9Ci0gICAgQVNTRVJUKGluZGV4ID09IGJ1ZmZl
clNpemUpOwogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw4IEBACiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFy
YW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MzAsMTkgKzEzMSwxNiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3Nz
CiAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlckZpZWxkcyA9IHJlcXVlc3Qu
aHR0cEhlYWRlckZpZWxkcygpOwogCiAgICAgaWYgKHJlcXVlc3RIZWFkZXJGaWVsZHMuc2l6ZSgp
ID4gMCkgewotICAgICAgICBWZWN0b3I8VUNoYXI+IGhlYWRlckJ1ZmZlcjsKKyAgICAgICAgU3Ry
aW5nQnVpbGRlciBoZWFkZXJCdWlsZGVyOwogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IHJlcXVlc3RIZWFkZXJGaWVsZHMuYmVnaW4oKTsKLSAgICAgICAgYXBwZW5k
KGhlYWRlckJ1ZmZlciwgaXQtPmZpcnN0KTsKKyAgICAgICAgaGVhZGVyQnVpbGRlci5hcHBlbmQo
aXQtPmZpcnN0KTsKICAgICAgICAgKytpdDsKIAogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSByZXF1ZXN0SGVhZGVyRmllbGRzLmVuZCgpOwotICAgICAgICBmb3Ig
KDsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBoZWFkZXJCdWZmZXIuYXBwZW5kKCcs
Jyk7Ci0gICAgICAgICAgICBoZWFkZXJCdWZmZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBh
cHBlbmQoaGVhZGVyQnVmZmVyLCBpdC0+Zmlyc3QpOwotICAgICAgICB9CisgICAgICAgIGZvciAo
OyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBoZWFkZXJCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCIsICIsIGl0LT5maXJzdC5zdHJpbmcoKSkpOwogCi0gICAgICAgIHByZWZsaWdodFJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMi
LCBTdHJpbmc6OmFkb3B0KGhlYWRlckJ1ZmZlcikpOworICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0
LnNldEhUVFBIZWFkZXJGaWVsZCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzIiwgaGVh
ZGVyQnVpbGRlci50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNl
dFByaW9yaXR5KHJlcXVlc3QucHJpb3JpdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
CiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgpAQCAtMzk5LDEzICs0MDAsMTMgQEAgdm9p
ZCBDaHJvbWU6OnNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAgICAgICAgICAg
ICBGaWxlTGlzdCogZmlsZXMgPSBpbnB1dC0+ZmlsZXMoKTsKICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbGlzdFNpemUgPSBmaWxlcy0+bGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChsaXN0U2l6ZSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxVQ2hh
cj4gbmFtZXM7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIG5hbWVzOwog
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG5hbWVzLCBmaWxlcy0+
aXRlbShpKS0+ZmlsZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMu
YXBwZW5kKGZpbGVzLT5pdGVtKGkpLT5maWxlTmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaSAhPSBsaXN0U2l6ZSAtIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWVzLmFwcGVuZCgnXG4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRvb2xUaXAgPSBTdHJpbmc6OmFkb3B0KG5hbWVzKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRvb2xUaXAgPSBuYW1lcy50b1N0cmluZygpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZmlsZW5hbWUgYWx3YXlzIGRpc3BsYXkgYXMgTFRSLgogICAg
ICAgICAgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9IExUUjsKICAgICAgICAgICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHJldmlzaW9u
IDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC00OSw2ICs0OCw3IEBA
CiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTE5MiwxNCArMTkyLDE2IEBAIHZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVSZXNwb25zZShj
b24KIAogdm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCkKIHsKLSAgICBhcHBlbmQobV9yZWNlaXZlQnVmLCBtX2RlY29kZXItPmRlY29k
ZShkYXRhLCBsZW5ndGgpKTsKKyAgICBTdHJpbmcgc3RyaW5nID0gbV9kZWNvZGVyLT5kZWNvZGUo
ZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3JlY2VpdmVCdWYuYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJz
KCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgcGFyc2VFdmVudFN0cmVhbSgpOwogfQogCiB2b2lk
IEV2ZW50U291cmNlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkKIHsK
ICAgICBpZiAobV9yZWNlaXZlQnVmLnNpemUoKSA+IDAgfHwgbV9kYXRhLnNpemUoKSA+IDApIHsK
LSAgICAgICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZiwgIlxuXG4iKTsKKyAgICAgICAgbV9yZWNlaXZl
QnVmLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgbV9yZWNlaXZlQnVmLmFwcGVuZCgnXG4nKTsKICAg
ICAgICAgcGFyc2VFdmVudFN0cmVhbSgpOwogICAgIH0KICAgICBtX3N0YXRlID0gQ09OTkVDVElO
RzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiA4
MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIK
ICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zODgs
MTggKzM5MCwxNCBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuICJmaWxlOi8vIjsKICAgICB9CiAKLSAgICBWZWN0b3I8VUNoYXI+IHJlc3Vs
dDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Byb3RvY29sLmxlbmd0aCgp
ICsgbV9ob3N0Lmxlbmd0aCgpICsgMTApOwotICAgIGFwcGVuZChyZXN1bHQsIG1fcHJvdG9jb2wp
OwotICAgIGFwcGVuZChyZXN1bHQsICI6Ly8iKTsKLSAgICBhcHBlbmQocmVzdWx0LCBtX2hvc3Qp
OwotCi0gICAgaWYgKG1fcG9ydCkgewotICAgICAgICBhcHBlbmQocmVzdWx0LCAiOiIpOwotICAg
ICAgICBhcHBlbmQocmVzdWx0LCBTdHJpbmc6Om51bWJlcihtX3BvcnQpKTsKLSAgICB9CisgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShtX3Byb3Rv
Y29sLmxlbmd0aCgpICsgbV9ob3N0Lmxlbmd0aCgpICsgMTApOworICAgIHJlc3VsdC5hcHBlbmQo
bWFrZVN0cmluZyhtX3Byb3RvY29sLCAiOi8vIiwgbV9ob3N0KSk7CisKKyAgICBpZiAobV9wb3J0
KQorICAgICAgICByZXN1bHQuYXBwZW5kKG1ha2VTdHJpbmcoIjoiLCBTdHJpbmc6Om51bWJlciht
X3BvcnQpKSk7CiAKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAogUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gODA3
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKIAorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBUaGUgZm9sbG93aW5nIGxvd2VyLUFTQ0lJIGNoYXJhY3RlcnMgbmVlZCBl
c2NhcGluZyB0byBiZSB1c2VkIGluIGEgZmlsZW5hbWUKQEAgLTc1LDggKzc3LDYgQEAgc3RhdGlj
IGlubGluZSBib29sIHNob3VsZEVzY2FwZVVDaGFyKFVDaAogICAgIHJldHVybiBjID4gMTI3ID8g
ZmFsc2UgOiBuZWVkc0VzY2FwaW5nW2NdOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciBoZXhEaWdp
dHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOwotCiBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUo
Y29uc3QgU3RyaW5nJiBpbnB1dFN0cikKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0
ci5sZW5ndGgoKTsKQEAgLTkwLDggKzkwLDcgQEAgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNv
bnN0IFN0cmluZyYgaQogICAgICAgICBVQ2hhciBjID0gKnN0cisrOwogICAgICAgICBpZiAoc2hv
dWxkRXNjYXBlVUNoYXIoYykpIHsKICAgICAgICAgICAgICpwKysgPSAnJSc7Ci0gICAgICAgICAg
ICAqcCsrID0gaGV4RGlnaXRzWyhjID4+IDQpICYgMHhGXTsKLSAgICAgICAgICAgICpwKysgPSBo
ZXhEaWdpdHNbYyAmIDB4Rl07CisgICAgICAgICAgICBIZXhOdW1iZXI6OmFwcGVuZENoYXJUb1Zl
Y3RvcjxVQ2hhciwgNTEyPihjLCBidWZmZXIsIEhleE51bWJlcjo6VXBwZXJDYXNlKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAqcCsrID0gYzsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgsMTIgQEAKICNpbmNsdWRlICJL
VVJMLmgiCiAKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKICNpZiBVU0UoSUNVX1VOSUNPREUpCkBAIC04OSw4ICs5Miw2IEBAIGVudW0g
VVJMQ2hhcmFjdGVyQ2xhc3NlcyB7CiAgICAgQmFkQ2hhciA9IDEgPDwgNgogfTsKIAotc3RhdGlj
IGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLQogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyQ2xhc3NUYWJsZVsyNTZdID0gewogICAgIC8q
IDAgbnVsICovIFBhdGhTZWdtZW50RW5kQ2hhciwgICAgLyogMSBzb2ggKi8gQmFkQ2hhciwKICAg
ICAvKiAyIHN0eCAqLyBCYWRDaGFyLCAgICAvKiAzIGV0eCAqLyBCYWRDaGFyLApAQCAtODY4LDQ3
ICs4NjksMzIgQEAgU3RyaW5nIEtVUkw6OnByZXR0eVVSTCgpIGNvbnN0CiAgICAgaWYgKCFtX2lz
VmFsaWQpCiAgICAgICAgIHJldHVybiBtX3N0cmluZzsKIAotICAgIFZlY3RvcjxVQ2hhcj4gcmVz
dWx0OwotCi0gICAgYXBwZW5kKHJlc3VsdCwgcHJvdG9jb2woKSk7Ci0gICAgcmVzdWx0LmFwcGVu
ZCgnOicpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBhdXRob3JpdHk7CisgICAgU3RyaW5nQnVpbGRl
ciByZXN1bHQ7CisgICAgcmVzdWx0LmFwcGVuZChtYWtlU3RyaW5nKHByb3RvY29sKCksICc6Jykp
OwogCisgICAgU3RyaW5nQnVpbGRlciBhdXRob3JpdHk7CiAgICAgaWYgKG1faG9zdEVuZCAhPSBt
X3Bhc3N3b3JkRW5kKSB7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgIT0gbV91c2VyU3RhcnQpIHsK
LSAgICAgICAgICAgIGFwcGVuZChhdXRob3JpdHksIHVzZXIoKSk7Ci0gICAgICAgICAgICBhdXRo
b3JpdHkuYXBwZW5kKCdAJyk7Ci0gICAgICAgIH0KLSAgICAgICAgYXBwZW5kKGF1dGhvcml0eSwg
aG9zdCgpKTsKLSAgICAgICAgaWYgKGhhc1BvcnQoKSkgewotICAgICAgICAgICAgYXV0aG9yaXR5
LmFwcGVuZCgnOicpOwotICAgICAgICAgICAgYXBwZW5kKGF1dGhvcml0eSwgU3RyaW5nOjpudW1i
ZXIocG9ydCgpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBtX3VzZXJT
dGFydCkKKyAgICAgICAgICAgIGF1dGhvcml0eS5hcHBlbmQobWFrZVN0cmluZyh1c2VyKCksICdA
JykpOworICAgICAgICBhdXRob3JpdHkuYXBwZW5kKGhvc3QoKSk7CisgICAgICAgIGlmIChoYXNQ
b3J0KCkpCisgICAgICAgICAgICBhdXRob3JpdHkuYXBwZW5kKG1ha2VTdHJpbmcoJzonLCBTdHJp
bmc6Om51bWJlcihwb3J0KCkpKSk7CiAgICAgfQogCi0gICAgaWYgKCFhdXRob3JpdHkuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJy8nKTsKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnLycpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGF1dGhvcml0eSk7Ci0gICAgfSBlbHNlIGlm
IChwcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnLycpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kKCcvJyk7Ci0gICAgfQorICAgIGlmICghYXV0aG9yaXR5LmlzRW1w
dHkoKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtYWtlU3RyaW5nKCIvLyIsIGF1dGhvcml0eS50
b1N0cmluZygpKSk7CisgICAgZWxzZSBpZiAocHJvdG9jb2xJcygiZmlsZSIpKQorICAgICAgICBy
ZXN1bHQuYXBwZW5kKCIvLyIpOwogCi0gICAgYXBwZW5kKHJlc3VsdCwgcGF0aCgpKTsKKyAgICBy
ZXN1bHQuYXBwZW5kKHBhdGgoKSk7CiAKLSAgICBpZiAobV9wYXRoRW5kICE9IG1fcXVlcnlFbmQp
IHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnPycpOwotICAgICAgICBhcHBlbmQocmVzdWx0LCBx
dWVyeSgpKTsKLSAgICB9CisgICAgaWYgKG1fcGF0aEVuZCAhPSBtX3F1ZXJ5RW5kKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKG1ha2VTdHJpbmcoJz8nLCBxdWVyeSgpKSk7CiAKLSAgICBpZiAobV9m
cmFnbWVudEVuZCAhPSBtX3F1ZXJ5RW5kKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJyMnKTsK
LSAgICAgICAgYXBwZW5kKHJlc3VsdCwgZnJhZ21lbnRJZGVudGlmaWVyKCkpOwotICAgIH0KKyAg
ICBpZiAobV9mcmFnbWVudEVuZCAhPSBtX3F1ZXJ5RW5kKQorICAgICAgICByZXN1bHQuYXBwZW5k
KG1ha2VTdHJpbmcoJyMnLCBmcmFnbWVudElkZW50aWZpZXIoKSkpOwogCi0gICAgcmV0dXJuIFN0
cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHIpCkBAIC05
NjksOSArOTU1LDEyIEBAIFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3QK
IC8vIENhdXRpb246IFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYm91bmRzIGNoZWNrLgogc3RhdGlj
IHZvaWQgYXBwZW5kRXNjYXBlZENoYXIoY2hhciomIGJ1ZmZlciwgdW5zaWduZWQgY2hhciBjKQog
eworICAgIFZlY3RvcjxjaGFyLCAyPiBkZXN0aW5hdGlvbjsKKyAgICBIZXhOdW1iZXI6OmFwcGVu
ZENoYXJUb1ZlY3RvcjxjaGFyLCAyPihjLCBkZXN0aW5hdGlvbiwgSGV4TnVtYmVyOjpVcHBlckNh
c2UpOworICAgIEFTU0VSVChkZXN0aW5hdGlvbi5zaXplKCkgPT0gMik7CiAgICAgKmJ1ZmZlcisr
ID0gJyUnOwotICAgICpidWZmZXIrKyA9IGhleERpZ2l0c1tjID4+IDRdOwotICAgICpidWZmZXIr
KyA9IGhleERpZ2l0c1tjICYgMHhGXTsKKyAgICAqYnVmZmVyKysgPSBkZXN0aW5hdGlvblswXTsK
KyAgICAqYnVmZmVyKysgPSBkZXN0aW5hdGlvblsxXTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5k
RXNjYXBpbmdCYWRDaGFycyhjaGFyKiYgYnVmZmVyLCBjb25zdCBjaGFyKiBzdHJTdGFydCwgc2l6
ZV90IGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCShyZXZpc2lvbiA4MDcx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVVVJRC5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAKICNpZiBQTEFURk9STShRVCkK
ICNpbmNsdWRlIDxRVXVpZD4KQEAgLTEwMCwxNyArMTAxLDE4IEBAIFN0cmluZyBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkKIAogICAgIC8vIEZvcm1hdCBhcyBWZXJzaW9uIDQgVVVJRC4KICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3Jt
YXQoIiUwOHgiLCByYW5kb21EYXRhWzBdKSk7CisgICAgYnVpbGRlci5hcHBlbmQoSGV4TnVtYmVy
Ojp1bnNpZ25lZFRvU3RyaW5nKHJhbmRvbURhdGFbMF0sIDgpKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgiLSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDR4IiwgcmFuZG9t
RGF0YVsxXSA+PiAxNikpOworICAgIGJ1aWxkZXIuYXBwZW5kKEhleE51bWJlcjo6dW5zaWduZWRU
b1N0cmluZyhyYW5kb21EYXRhWzFdID4+IDE2LCA0KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIi00
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiUwM3giLCByYW5kb21EYXRh
WzFdICYgMHgwMDAwMGZmZikpOworICAgIGJ1aWxkZXIuYXBwZW5kKEhleE51bWJlcjo6dW5zaWdu
ZWRUb1N0cmluZyhyYW5kb21EYXRhWzFdICYgMHgwMDAwMGZmZiwgMykpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCItIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiV4IiwgKHJh
bmRvbURhdGFbMl0gPj4gMzApIHwgMHg4KSk7IC8vIENvbmRlbnNlIHRoaXMgYnl0ZSB0byA4LCA5
LCBhLCBhbmQgYi4KLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTAzeCIsIChy
YW5kb21EYXRhWzJdID4+IDE2KSAmIDB4MDAwMDBmZmYpKTsKKyAgICBidWlsZGVyLmFwcGVuZChI
ZXhOdW1iZXI6OnVuc2lnbmVkVG9TdHJpbmcoKHJhbmRvbURhdGFbMl0gPj4gMzApIHwgMHg4LCAx
KSk7CisgICAgYnVpbGRlci5hcHBlbmQoSGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKChyYW5k
b21EYXRhWzJdID4+IDE2KSAmIDB4MDAwMDBmZmYsIDMpKTsKICAgICBidWlsZGVyLmFwcGVuZCgi
LSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDR4IiwgcmFuZG9tRGF0
YVsyXSAmIDB4MDAwMGZmZmYpKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgi
JTA4eCIsIHJhbmRvbURhdGFbM10pKTsKKyAgICBidWlsZGVyLmFwcGVuZChIZXhOdW1iZXI6OnVu
c2lnbmVkVG9TdHJpbmcocmFuZG9tRGF0YVsyXSAmIDB4MDAwMGZmZmYsIDQpKTsKKyAgICBidWls
ZGVyLmFwcGVuZChIZXhOdW1iZXI6OnVuc2lnbmVkVG9TdHJpbmcocmFuZG9tRGF0YVszXSwgOCkp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCJcbiIpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTAgKzI3LDExIEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKIAogI2luY2x1ZGUgIkhhc2hUb29scy5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAtMTgwLDQ5ICsxODEsMjMgQEAgQ29s
b3I6OkNvbG9yKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQgYXBwZW5kSGV4TnVtYmVyKFVDaGFyKiBkZXN0aW5hdGlvbiwgdWludDhfdCBudW1iZXIpCi17
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5YWJjZGVm
IjsKLQotICAgIGRlc3RpbmF0aW9uWzBdID0gaGV4RGlnaXRzW251bWJlciA+PiA0XTsKLSAgICBk
ZXN0aW5hdGlvblsxXSA9IGhleERpZ2l0c1tudW1iZXIgJiAweEZdOwotfQotCiBTdHJpbmcgQ29s
b3I6OnNlcmlhbGl6ZWQoKSBjb25zdAogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RyaW5nLCBjb21tYVNwYWNlLCAoIiwgIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCByZ2JhUGFyZW4sICgicmdiYSgiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHplcm9Qb2ludFplcm8sICgiMC4wIikpOwotCi0gICAgaWYgKCFoYXNB
bHBoYSgpKSB7Ci0gICAgICAgIFVDaGFyKiBjaGFyYWN0ZXJzOwotICAgICAgICBTdHJpbmcgcmVz
dWx0ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKDcsIGNoYXJhY3RlcnMpOwotICAgICAg
ICBjaGFyYWN0ZXJzWzBdID0gJyMnOwotICAgICAgICBhcHBlbmRIZXhOdW1iZXIoY2hhcmFjdGVy
cyArIDEsIHJlZCgpKTsKLSAgICAgICAgYXBwZW5kSGV4TnVtYmVyKGNoYXJhY3RlcnMgKyAzLCBn
cmVlbigpKTsKLSAgICAgICAgYXBwZW5kSGV4TnVtYmVyKGNoYXJhY3RlcnMgKyA1LCBibHVlKCkp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIFZlY3RvcjxVQ2hhcj4gcmVz
dWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDI4KTsKKyAgICBpZiAoIWhh
c0FscGhhKCkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywgSGV4TnVtYmVyOjpjaGFy
VG9TdHJpbmcocmVkKCkpLCBIZXhOdW1iZXI6OmNoYXJUb1N0cmluZyhncmVlbigpKSwgSGV4TnVt
YmVyOjpjaGFyVG9TdHJpbmcoYmx1ZSgpKSk7CiAKLSAgICBhcHBlbmQocmVzdWx0LCByZ2JhUGFy
ZW4pOwotICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHJlZCgpKTsKLSAgICBhcHBlbmQocmVzdWx0
LCBjb21tYVNwYWNlKTsKLSAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBncmVlbigpKTsKLSAgICBh
cHBlbmQocmVzdWx0LCBjb21tYVNwYWNlKTsKLSAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBibHVl
KCkpOwotICAgIGFwcGVuZChyZXN1bHQsIGNvbW1hU3BhY2UpOworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eSgyOCk7CisgICAgYnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygicmdiYSgiLCBTdHJpbmc6Om51bWJlcihyZWQoKSksICIsICIsIFN0
cmluZzo6bnVtYmVyKGdyZWVuKCkpLCAiLCAiLCBTdHJpbmc6Om51bWJlcihibHVlKCkpLCAiLCAi
KSk7CiAKICAgICAvLyBNYXRjaCBHZWNrbyAoIjAuMCIgZm9yIHplcm8sIDUgZGVjaW1hbHMgZm9y
IGFueXRoaW5nIGVsc2UpCiAgICAgaWYgKCFhbHBoYSgpKQotICAgICAgICBhcHBlbmQocmVzdWx0
LCB6ZXJvUG9pbnRaZXJvKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiMC4w
IikpOwogICAgIGVsc2UKLSAgICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpmb3JtYXQoIiUu
NWYiLCBhbHBoYSgpIC8gMjU1LjBmKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6
Zm9ybWF0KCIlLjVmIiwgYWxwaGEoKSAvIDI1NS4wZikpOwogCi0gICAgcmVzdWx0LmFwcGVuZCgn
KScpOwotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgYnVpbGRlci5hcHBl
bmQoJyknKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCiBTdHJpbmcgQ29s
b3I6Om5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAJKHJldmlzaW9u
IDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlIDxsaW1p
dHM+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21O
dW1iZXIuaD4KIApAQCAtMTkyLDggKzE5Myw2IEBAIHZvaWQgRm9ybURhdGFCdWlsZGVyOjphZGRL
ZXlWYWx1ZVBhaXJBc0YKIAogdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9y
bURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOwot
CiAgICAgLy8gU2FtZSBzYWZlIGNoYXJhY3RlcnMgYXMgTmV0c2NhcGUgZm9yIGNvbXBhdGliaWxp
dHkuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgc2FmZUNoYXJhY3RlcnNbXSA9ICItLl8qIjsKIApA
QCAtMjEwLDggKzIwOSw3IEBAIHZvaWQgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zv
cm0KICAgICAgICAgICAgIGFwcGVuZChidWZmZXIsICIlMEQlMEEiKTsKICAgICAgICAgZWxzZSBp
ZiAoYyAhPSAnXHInKSB7CiAgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCAnJScpOwotICAgICAg
ICAgICAgYXBwZW5kKGJ1ZmZlciwgaGV4RGlnaXRzW2MgPj4gNF0pOwotICAgICAgICAgICAgYXBw
ZW5kKGJ1ZmZlciwgaGV4RGlnaXRzW2MgJiAweEZdKTsKKyAgICAgICAgICAgIEhleE51bWJlcjo6
YXBwZW5kQ2hhclRvVmVjdG9yPGNoYXI+KGMsIGJ1ZmZlciwgSGV4TnVtYmVyOjpVcHBlckNhc2Up
OwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRTdHJlYW0uY3BwCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMs
NyBAQCBUZXh0U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0CiAKIFRleHRTdHJl
YW0mIFRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAg
YXBwZW5kKG1fdGV4dCwgc3RyaW5nKTsKKyAgICBtX3RleHQuYXBwZW5kKHN0cmluZy5jaGFyYWN0
ZXJzKCksIHN0cmluZy5sZW5ndGgoKSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCShyZXZpc2lv
biA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9s
bGVyLmgiCisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQ
YXJhbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgpAQCAtMjA5LDExICsyMTAsMTEgQEAgU3RyaW5nIHF1b3RlQW5kRXNj
YXBlTm9uUHJpbnRhYmxlcyhjb25zdAogICAgICAgICAgICAgaWYgKGMgPj0gMHgyMCAmJiBjIDwg
MHg3RikKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMpOwogICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgdSA9IGM7Ci0gICAgICAgICAgICAgICAgU3Ry
aW5nIGhleCA9IFN0cmluZzo6Zm9ybWF0KCJcXHh7JVh9IiwgdSk7Ci0gICAgICAgICAgICAgICAg
dW5zaWduZWQgbGVuID0gaGV4Lmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW47ICsraSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChoZXhbaV0pOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xcJyk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgneCcpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ3snKTsKKyAgICAgICAgICAgICAgICBIZXhOdW1iZXI6OmFwcGVuZFVuc2lnbmVkVG9WZWN0
b3I8VUNoYXI+KGMsIHJlc3VsdCwgLTEsIEhleE51bWJlcjo6VXBwZXJDYXNlKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85326</attachid>
            <date>2011-03-10 07:43:31 -0800</date>
            <delta_ts>2011-03-10 09:27:25 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>HexNumber.patch</filename>
            <type>text/plain</type>
            <size>136808</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA3MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTEtMDMtMTAgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFdURiBIZXhOdW1iZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MDk5CisKKyAgICAgICAgSW50cm9kdWNlIGEgY2xhc3MgdGhhdCBpcyBj
YXBhYmxlIG9mIGNvbnZlcnRpbmcgZnJvbSB1bnNpZ25lZCBjaGFyL3Vuc2lnbmVkIHRvIGEgU3Ry
aW5nCisgICAgICAgIG9yIGFwcGVuZCBvbmUvdHdvIG9yIG1vcmUgY2hhcmFjdGVycyB0byBhIFZl
Y3RvcjxjaGFyPi9WZWN0b3I8VUNoYXI+LCBpbiBvcmRlciB0byByZXBsYWNlCisgICAgICAgIHJl
cGVhdGluZyBhbnkgLT4gaGV4IGNvbnZlcnNpb25zIGFuZCBTdHJpbmc6OmZvcm1hdCgiJXgiKSB1
c2FnZXMgYWxsIG92ZXIgV2ViQ29yZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDog
RXhwb3J0IFN0cmluZ0J1aWxkZXI6OnJlc2VydmVDYXBhY2l0eS4KKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgSGV4TnVtYmVyLmggdG8gYnVp
bGQuCisgICAgICAgICogd3RmL0hleE51bWJlci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6SGV4
TnVtYmVyOjpjaGFyVG9TdHJpbmcpOiBOZXcgcHVibGljIEFQSSwgdG8gY29udmVydCBhIHVuc2ln
bmVkIGNoYXIgdG8gYSBoZXggc3RyaW5nLgorICAgICAgICAoV1RGOjpIZXhOdW1iZXI6OmFwcGVu
ZENoYXJUb1ZlY3Rvcik6IERpdHRvLCBidXQgYXBwZW5kcyB0byBhIFZlY3Rvci4KKyAgICAgICAg
KFdURjo6SGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKTogU2FtZSBmb3IgdW5zaWduZWQgbnVt
YmVycy4KKyAgICAgICAgKFdURjo6SGV4TnVtYmVyOjphcHBlbmRVbnNpZ25lZFRvVmVjdG9yKTog
RGl0dG8uCisgICAgICAgIChXVEY6OkhleE51bWJlcjo6dXNlQ29tcHJlc3NlZE1vZGUpOiBJbnRl
cm5hbCBoZWxwZXIuCisgICAgICAgIChXVEY6OkhleE51bWJlcjo6aGV4RGlnaXRzRm9yTW9kZSk6
IERpdHRvLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg6IEFkZCB2YXJp
YW50IGZvciBtYWtlU3RyaW5nLCB0YWtpbmcgOSBhcmd1bWVudHMuCisgICAgICAgIChXVEY6OnRy
eU1ha2VTdHJpbmcpOgorICAgICAgICAoV1RGOjptYWtlU3RyaW5nKToKKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDogUmVtb3ZlIGFwcGVuZChWZWN0b3I8VUNoYXI+KSBmcmVlIGZ1bmN0
aW9ucywgd2FzIG9ubHkgdXNlZCBpbiBvbmUgcGxhY2UuCisKIDIwMTEtMDMtMDkgIERhbmllbCBC
YXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIEF0dGVtcHQgdG8gZml4IHRoZSBXaW5D
RSBidWlsZCBhZnRlciBjaGFuZ2VzZXQgODA2ODQgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzgwNjg0PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OCw2ICszODgsNyBAQCBfX1pOM1dURjEyY3Jl
YXRlVGhyZWFkRVBGUHZTMF9FUzBfUEtjCiBfX1pOM1dURjEyZGV0YWNoVGhyZWFkRWoKIF9fWk4z
V1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJhbmRvbU51bWJlckV2CitfX1pOM1dURjEz
U3RyaW5nQnVpbGRlcjE1cmVzZXJ2ZUNhcGFjaXR5RWoKIF9fWk4zV1RGMTNTdHJpbmdCdWlsZGVy
MTFyZWlmeVN0cmluZ0V2CiBfX1pOM1dURjEzU3RyaW5nQnVpbGRlcjExc2hyaW5rVG9GaXRFdgog
X19aTjNXVEYxM1N0cmluZ0J1aWxkZXI2YXBwZW5kRVBLY2oKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTAsNiArMjEwLDcgQEAKIAkJNjVERkM5MzMwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NURG
QzkyRDA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmNwcCAqLzsgfTsKIAkJNjVFMUEzREYx
MjJCODk0NTAwQjI2MDk3IC8qIE5vbkNvcHlpbmdTb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUxQTJGNDEyMkI4ODBEMDBCMjYwOTcgLyogTm9u
Q29weWluZ1NvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2NUZERTQ5QzBCREQxRDRBMDBFODAxMTEgLyogQXNzZXJ0aW9ucy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUyMTdCODA4RTdFRUND
MDAyM0U1RjYgLyogQXNzZXJ0aW9ucy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdT
ID0gIi1Xbm8tbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIjsgfTsgfTsKKwkJNzE4NkE2RUMxMzEw
MEJBNTAwNDQ3OUUxIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzE4NkE2RTgxMzEwMEI1NzAwNDQ3OUUxIC8qIEhleE51bWJlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc2RkI5
RjBGMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NkZCOUYwRTEyRTg1MTg2MDA1MUEyRUIgLyogU0hBMS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc2RkI5RjEx
MTJFODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc2RkI5RjEwMTJFODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCAq
LzsgfTsKIAkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3
OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODUwLDYgKzg1MSw3IEBACiAJCTY1RUE3MzYyMEJB
RTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbW9uSWRlbnRpZmllcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NUVBNzM2MzBCQUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRp
ZmllcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbklkZW50aWZp
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNEZEMzUzMDU2OTdFNkQwMDNE
QkVEOSAvKiBCb29sZWFuT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJvb2xlYW5PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB9OworCQk3MTg2QTZFODEzMTAwQjU3MDA0NDc5RTEgLyogSGV4TnVt
YmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhleE51bWJlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkZCOUYwRTEyRTg1MTg2MDA1MUEyRUIgLyogU0hB
MS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTSEExLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc2RkI5RjEwMTJFODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNIQTEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3RTJDNkM5ODBEMzFDNkI2MDAyRDQ0RTIgLyogU2NvcGVDaGFp
bk1hcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVDaGFpbk1hcmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjcsNiArMTU2OSw3IEBACiAJCQkJ
NjVERkM5MkQwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5jcHAgKi8sCiAJCQkJNjVERkM5
MkUwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5oICovLAogCQkJCTY1REZDOTJGMDhFQTE3
M0EwMEY3MzAwQiAvKiBIYXNoVHJhaXRzLmggKi8sCisJCQkJNzE4NkE2RTgxMzEwMEI1NzAwNDQ3
OUUxIC8qIEhleE51bWJlci5oICovLAogCQkJCTY1N0VCNzQ1MEI3MDhGNTQwMDYzNDYxQiAvKiBM
aXN0SGFzaFNldC5oICovLAogCQkJCTE0OEExNjI2MDk1RDE2QkIwMDY2NkQwRCAvKiBMaXN0UmVm
UHRyLmggKi8sCiAJCQkJRTFFRTc5MjcwRDZDOTY0NTAwRkVBM0JBIC8qIExvY2tlci5oICovLApA
QCAtMjIwNSw2ICsyMjA4LDcgQEAKIAkJCQlCQzE4QzQwRDBFMTZGNUNEMDBCMzQ0NjAgLyogSGFz
aFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwRTBFMTZGNUNEMDBCMzQ0NjAgLyog
SGFzaFRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwQ0RFNzExMkRFOTdCMTAwMTNDRkM1
IC8qIEhlYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxODZBNkVDMTMxMDBCQTUwMDQ0NzlFMSAv
KiBIZXhOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxMDBFMTZGNUNEMDBC
MzQ0NjAgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3
OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGV4TnVtYmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvSGV4TnVtYmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEhleE51bWJlcl9oCisjZGVmaW5lIEhl
eE51bWJlcl9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworY2xhc3MgSGV4TnVtYmVyIHsKK3B1YmxpYzoKKyAgICBlbnVtIENv
bnZlcnNpb25Nb2RlIHsKKyAgICAgICAgTG93ZXJDYXNlID0gMSA8PCAwLAorICAgICAgICBVcHBl
ckNhc2UgPSAxIDw8IDEsCisgICAgICAgIENvbXByZXNzZWQgPSAxIDw8IDIgLy8gZWcuICMwMDAg
KHVzZWQgaW4gdGhlIENTU1BhcnNlcikKKyAgICB9OworCisgICAgc3RhdGljIFN0cmluZyBjaGFy
VG9TdHJpbmcodW5zaWduZWQgY2hhciBudW1iZXIsIHVuc2lnbmVkIG1vZGUgPSBMb3dlckNhc2Up
CisgICAgeworICAgICAgICBjb25zdCBjaGFyKiBoZXhEaWdpdHMgPSBoZXhEaWdpdHNGb3JNb2Rl
KG1vZGUpOworICAgICAgICBpZiAodXNlQ29tcHJlc3NlZE1vZGUobW9kZSwgbnVtYmVyKSkKKyAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoJmhleERpZ2l0c1tudW1iZXIgJiAweEZdLCAxKTsKKyAg
ICAgICAgVmVjdG9yPFVDaGFyLCAyPiBidWZmZXI7CisgICAgICAgIGJ1ZmZlci5yZXNpemUoMik7
CisgICAgICAgIGJ1ZmZlclswXSA9IGhleERpZ2l0c1tudW1iZXIgPj4gNF07CisgICAgICAgIGJ1
ZmZlclsxXSA9IGhleERpZ2l0c1tudW1iZXIgJiAweEZdOworICAgICAgICByZXR1cm4gU3RyaW5n
OjphZG9wdChidWZmZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4KKyAgICBzdGF0aWMgdm9pZCBhcHBlbmRDaGFyVG9WZWN0b3IodW5z
aWduZWQgY2hhciBudW1iZXIsIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBtb2RlID0gTG93ZXJDYXNlKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciog
aGV4RGlnaXRzID0gaGV4RGlnaXRzRm9yTW9kZShtb2RlKTsKKyAgICAgICAgaWYgKHVzZUNvbXBy
ZXNzZWRNb2RlKG1vZGUsIG51bWJlcikpIHsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVu
ZChoZXhEaWdpdHNbbnVtYmVyICYgMHhGXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgZGVzdGluYXRpb24uYXBwZW5kKGhleERpZ2l0c1tudW1iZXIgPj4gNF0pOwor
ICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoaGV4RGlnaXRzW251bWJlciAmIDB4Rl0pOworICAg
IH0KKworICAgIC8vIFRoaXMgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSBTdHJpbmc6OmZvcm1hdCgi
JTAzeCIsICIlMDhYIiwgIiV4IiwgIiVYIiksIGJ5IHNwZWNpZnlpbmcgZWl0aGVyIExvd2VyQ2Fz
ZS9VcHBlckNhc2UKKyAgICAvLyBhbmQgYnkgc2V0dGluZyBzdG9wQWZ0ZXJEaWdpdHMgdG8gdGhl
IGRlc2lyZWQgbnVtYmVyIG9mIGRpZ2l0cy4KKyAgICBzdGF0aWMgU3RyaW5nIHVuc2lnbmVkVG9T
dHJpbmcodW5zaWduZWQgbnVtYmVyLCBpbnQgc3RvcEFmdGVyRGlnaXRzID0gLTEsIHVuc2lnbmVk
IG1vZGUgPSBMb3dlckNhc2UpCisgICAgeworICAgICAgICBBU1NFUlQoIShtb2RlICYgQ29tcHJl
c3NlZCkpOyAvLyBDb21wcmVzc2VkIG1vZGUgb25seSBhdmFpbGFibGUgZm9yIGFwcGVuZFRvVmVj
dG9yKCkvY2hhclRvU3RyaW5nKCkuCisgICAgICAgIGNvbnN0IGNoYXIqIGhleERpZ2l0cyA9IGhl
eERpZ2l0c0Zvck1vZGUobW9kZSk7CisgICAgICAgIFZlY3RvcjxVQ2hhciwgOD4gcmVzdWx0Owor
ICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHJlc3VsdC5wcmVw
ZW5kKGhleERpZ2l0c1tudW1iZXIgJSAxNl0pOworICAgICAgICAgICAgbnVtYmVyID4+PSA0Owor
ICAgICAgICAgICAgKytpOworICAgICAgICB9IHdoaWxlIChzdG9wQWZ0ZXJEaWdpdHMgPT0gLTEg
PyBudW1iZXIgPiAwIDogaSA8IHN0b3BBZnRlckRpZ2l0cyk7CisKKyAgICAgICAgaWYgKHN0b3BB
ZnRlckRpZ2l0cyAhPSAtMSkKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHJl
c3VsdC5zaXplKCkpID09IHN0b3BBZnRlckRpZ2l0cyk7CisgICAgCisgICAgICAgIHJldHVybiBT
dHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHN0YXRpYyB2b2lkIGFwcGVuZFVuc2lnbmVkVG9W
ZWN0b3IodW5zaWduZWQgbnVtYmVyLCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiBkZXN0aW5h
dGlvbiwgaW50IHN0b3BBZnRlckRpZ2l0cyA9IC0xLCB1bnNpZ25lZCBtb2RlID0gTG93ZXJDYXNl
KQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSBlYXNpbHkgb3B0aW1pemVkLCBpZiB3
ZSBzZWUgdGhlIG5lZWQgZm9yIGl0LgorICAgICAgICBTdHJpbmcgaGV4U3RyaW5nID0gdW5zaWdu
ZWRUb1N0cmluZyhudW1iZXIsIHN0b3BBZnRlckRpZ2l0cywgbW9kZSk7CisgICAgICAgIGRlc3Rp
bmF0aW9uLmFwcGVuZChoZXhTdHJpbmcuY2hhcmFjdGVycygpLCBoZXhTdHJpbmcubGVuZ3RoKCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCB1c2VDb21wcmVzc2VkTW9kZSh1
bnNpZ25lZCBtb2RlLCB1bnNpZ25lZCBjaGFyIG51bWJlcikKKyAgICB7CisgICAgICAgIHJldHVy
biBtb2RlICYgQ29tcHJlc3NlZCAmJiBudW1iZXIgPCAweDEwOworICAgIH0KKworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBoZXhEaWdpdHNGb3JNb2RlKHVuc2lnbmVkIG1vZGUpCisgICAgeworICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciBzX2xvd2VySGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5
YWJjZGVmIjsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgc191cHBlckhleERpZ2l0c1sxN10g
PSAiMDEyMzQ1Njc4OUFCQ0RFRiI7CisgICAgICAgIHJldHVybiBtb2RlICYgTG93ZXJDYXNlID8g
c19sb3dlckhleERpZ2l0cyA6IHNfdXBwZXJIZXhEaWdpdHM7CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6SGV4TnVtYmVyOworCisjZW5kaWYgLy8gSGV4TnVt
YmVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNiAr
NDE2LDU5IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHIKICAgICBy
ZXR1cm4gcmVzdWx0SW1wbDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5
cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5n
VHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5h
bWUgU3RyaW5nVHlwZTcsIHR5cGVuYW1lIFN0cmluZ1R5cGU4LCB0eXBlbmFtZSBTdHJpbmdUeXBl
OT4KK1Bhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJp
bmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBl
NCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJp
bmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBzdHJpbmc4LCBTdHJpbmdUeXBlOSBzdHJpbmc5
KQoreworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcx
KTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7
CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTM+IGFkYXB0ZXIzKHN0cmluZzMpOwor
ICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU0PiBhZGFwdGVyNChzdHJpbmc0KTsKKyAg
ICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNT4gYWRhcHRlcjUoc3RyaW5nNSk7CisgICAg
U3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTY+IGFkYXB0ZXI2KHN0cmluZzYpOworICAgIFN0
cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU3PiBhZGFwdGVyNyhzdHJpbmc3KTsKKyAgICBTdHJp
bmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlOD4gYWRhcHRlcjgoc3RyaW5nOCk7CisgICAgU3RyaW5n
VHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTk+IGFkYXB0ZXI5KHN0cmluZzkpOworCisgICAgVUNoYXIq
IGJ1ZmZlcjsKKyAgICBib29sIG92ZXJmbG93ID0gZmFsc2U7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRl
cjIubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFw
dGVyMy5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFk
YXB0ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwg
YWRhcHRlcjUubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3Ro
LCBhZGFwdGVyNi5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5n
dGgsIGFkYXB0ZXI3Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxl
bmd0aCwgYWRhcHRlcjgubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3co
bGVuZ3RoLCBhZGFwdGVyOS5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBs
ID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7Cisg
ICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFVDaGFyKiByZXN1
bHQgPSBidWZmZXI7CisgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCAr
PSBhZGFwdGVyMS5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CisgICAg
cmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOworICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0
KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjMubGVuZ3RoKCk7CisgICAgYWRhcHRlcjQud3JpdGVU
byhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKKyAgICBhZGFwdGVy
NS53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXI1Lmxlbmd0aCgpOworICAg
IGFkYXB0ZXI2LndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjYubGVuZ3Ro
KCk7CisgICAgYWRhcHRlcjcud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVy
Ny5sZW5ndGgoKTsKKyAgICBhZGFwdGVyOC53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9
IGFkYXB0ZXI4Lmxlbmd0aCgpOworICAgIGFkYXB0ZXI5LndyaXRlVG8ocmVzdWx0KTsKKworICAg
IHJldHVybiByZXN1bHRJbXBsOworfQorCisKIC8vIENvbnZlbmllbmNlIG9ubHkuCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMT4KIFN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0
cmluZzEpCkBAIC00ODYsNiArNTM5LDE1IEBAIFN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUx
IHN0cmluZzEsIFMKICAgICByZXR1cm4gcmVzdWx0SW1wbDsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBl
MywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBT
dHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTcsIHR5cGVuYW1lIFN0cmluZ1R5cGU4LCB0
eXBlbmFtZSBTdHJpbmdUeXBlOT4KK1N0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0
IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmlu
Z1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgsIFN0cmluZ1R5cGU5IHN0cmluZzkp
Cit7CisgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmlu
ZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJpbmc2LCBz
dHJpbmc3LCBzdHJpbmc4LCBzdHJpbmc5KTsKKyAgICBpZiAoIXJlc3VsdEltcGwpCisgICAgICAg
IENSQVNIKCk7CisgICAgcmV0dXJuIHJlc3VsdEltcGw7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCiB1c2luZyBXVEY6Om1ha2VTdHJpbmc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDMxICs0
NTQsNiBAQCBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFyKiBjCiAgICAgcmV0
dXJuIGluZGV4OwogfQogCi1pbmxpbmUgdm9pZCBhcHBlbmQoVmVjdG9yPFVDaGFyPiYgdmVjdG9y
LCBjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICB2ZWN0b3IuYXBwZW5kKHN0cmluZy5jaGFy
YWN0ZXJzKCksIHN0cmluZy5sZW5ndGgoKSk7Ci19Ci0KLWlubGluZSB2b2lkIGFwcGVuZE51bWJl
cihWZWN0b3I8VUNoYXI+JiB2ZWN0b3IsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKQotewotICAgIGlu
dCBudW1iZXJMZW5ndGggPSBudW1iZXIgPiA5OSA/IDMgOiAobnVtYmVyID4gOSA/IDIgOiAxKTsK
LSAgICBzaXplX3QgdmVjdG9yU2l6ZSA9IHZlY3Rvci5zaXplKCk7Ci0gICAgdmVjdG9yLmdyb3co
dmVjdG9yU2l6ZSArIG51bWJlckxlbmd0aCk7Ci0KLSAgICBzd2l0Y2ggKG51bWJlckxlbmd0aCkg
ewotICAgIGNhc2UgMzoKLSAgICAgICAgdmVjdG9yW3ZlY3RvclNpemUgKyAyXSA9IG51bWJlciAl
IDEwICsgJzAnOwotICAgICAgICBudW1iZXIgLz0gMTA7Ci0KLSAgICBjYXNlIDI6Ci0gICAgICAg
IHZlY3Rvclt2ZWN0b3JTaXplICsgMV0gPSBudW1iZXIgJSAxMCArICcwJzsKLSAgICAgICAgbnVt
YmVyIC89IDEwOwotCi0gICAgY2FzZSAxOgotICAgICAgICB2ZWN0b3JbdmVjdG9yU2l6ZV0gPSBu
dW1iZXIgJSAxMCArICcwJzsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hh
cmFjdGVyKFVDaGFyKT4gaW5saW5lIGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyhjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC01MDgsOCArNDgzLDYgQEAgdGVtcGxhdGUgPD4gc3Ry
dWN0IFZlY3RvclRyYWl0czxTdHJpbmc+IAogCiB1c2luZyBXVEY6OkNTdHJpbmc7CiB1c2luZyBX
VEY6OlN0cmluZzsKLXVzaW5nIFdURjo6YXBwZW5kOwotdXNpbmcgV1RGOjphcHBlbmROdW1iZXI7
CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNBcmVBbGxBU0NJSTsKIHVzaW5nIFdURjo6Y2hhcmFjdGVy
c0FyZUFsbExhdGluMTsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gODA3MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw3OCBAQAorMjAxMS0wMy0xMCAgTmlrb2xhcyBaaW1tZXJt
YW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGIEhleE51bWJlciBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwOTkKKworICAgICAg
ICBJbnRyb2R1Y2UgYSBjbGFzcyB0aGF0IGlzIGNhcGFibGUgb2YgY29udmVydGluZyBmcm9tIHVu
c2lnbmVkIGNoYXIvdW5zaWduZWQgdG8gYSBTdHJpbmcKKyAgICAgICAgb3IgYXBwZW5kIG9uZS90
d28gb3IgbW9yZSBjaGFyYWN0ZXJzIHRvIGEgVmVjdG9yPGNoYXI+L1ZlY3RvcjxVQ2hhcj4sIGlu
IG9yZGVyIHRvIHJlcGxhY2UKKyAgICAgICAgcmVwZWF0aW5nIGFueSAtPiBoZXggY29udmVyc2lv
bnMgYW5kIFN0cmluZzo6Zm9ybWF0KCIleCIpIHVzYWdlcyBhbGwgb3ZlciBXZWJDb3JlLgorCisg
ICAgICAgIERvZXNuJ3QgYWZmZWN0IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5oOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvQ1NTT01V
dGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2lu
dCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdW90
ZUNTU1N0cmluZyk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKyAgICAgICAgKiBkb20v
RGF0YXNldERPTVN0cmluZ01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QXR0cmli
dXRlTmFtZVRvUHJvcGVydHlOYW1lKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpzY3JpcHRDb250ZW50KToKKyAgICAg
ICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1
cEFjY3VtdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFN0cmluZ1RvVmVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6Y29uY2F0ZW5hdGVNYXJrdXAp
OgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFF1b3RlZFVSTEF0
dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjphcHBl
bmROYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVu
ZENvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZERv
Y3VtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5k
UHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxh
dG9yOjphcHBlbmRPcGVuVGFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9y
OjphcHBlbmRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11bGF0b3I6
OmFwcGVuZENEQVRBU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kRW5kTWFya3VwKToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9y
Lmg6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UpOgorICAgICAgICAqIGVkaXRpbmcvbWFy
a3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFw
V2l0aFN0eWxlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6dGFrZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OmFwcGVuZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OmFwcGVuZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dXJsVG9NYXJrdXApOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFyeSk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxp
Z2h0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWU6OnNldFRvb2xUaXApOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50U291cmNlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjp0b1N0cmlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGVGb3JGaWxlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vS1VSTC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpLVVJMOjpwcmV0dHlVUkwpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
RXNjYXBlZENoYXIpOgorICAgICAgICAqIHBsYXRmb3JtL1VVSUQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnNlcmlhbGl6ZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRTdHJlYW06Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyk6
CisKIDIwMTEtMDMtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgTm90IHJldmlld2VkOiByb2xsaW5nIG91dCByODA0NzggYW5kIGl0cyBmb2xsb3cg
dXBzIGZvciBicmVha2luZwpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0hleE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0hleE51bWJlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X0hleE51bWJlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGV4TnVtYmVyLmg+CisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNyArMzM0LDYgQEAK
IAkJMTg4NjA0QjMwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4ODYwNEIxMEYyRTY1NEEwMDBCNjQ0
MyAvKiBET01UaW1lci5jcHAgKi87IH07CiAJCTE4ODYwNEI0MEYyRTY1NEEwMDBCNjQ0MyAvKiBE
T01UaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTg4NjA0QjIwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmggKi87IH07CiAJCTE4RjgzMUI4
MEZENDhDNzgwMEQ4QzU2QiAvKiBXb3JrZXJMb2FkZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThGODMxQjcwRkQ0OEM3ODAwRDhDNTZCIC8q
IFdvcmtlckxvYWRlclByb3h5LmggKi87IH07Ci0JCTE5MjEzMjc0MTFDMEU2QkIwMDQ1NjIzOCAv
KiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOTIxMzI3MTExQzBFNkJCMDA0NTYyMzggLyogU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwICovOyB9OwogCQkxOTIxMzI3NTExQzBFNkJCMDA0NTYy
MzggLyogU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE5MjEzMjcyMTFDMEU2QkIwMDQ1NjIzOCAvKiBTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5oICovOyB9OwogCQkxOUJGRjY0QjExQzBGMkFDMDBCOEMw
NEQgLyogRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE5QkZGNjQ2MTFDMEYyQUMwMEI4QzA0RCAvKiBE
T01TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oICovOyB9OwogCQkxOUJGRjY0QzExQzBGMkFD
MDBCOEMwNEQgLyogRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOUJGRjY0NzExQzBGMkFDMDBCOEMw
NEQgLyogRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQubW0gKi87IH07CkBAIC0xNDQzLDcg
KzE0NDIsNiBAQAogCQk2M0Y1RDRGNzBFOEM0QjcxMDBDMEJEMDQgLyogRWxlbWVudFJhcmVEYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzdCN0FE
RTBFODc2N0I4MDBFMzIxOTQgLyogRWxlbWVudFJhcmVEYXRhLmggKi87IH07CiAJCTY1MEY1M0RD
MDlEMTVEREEwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTBGNTNEQjA5RDE1RERBMDBDOUIwQzggLyogQ1NTR3Jh
bW1hci5oICovOyB9OwogCQk2NTBGNTNERDA5RDE1RERGMDBDOUIwQzggLyogQ1NTR3JhbW1hci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODE0
NDA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTR3JhbW1hci5jcHAgKi87IH07Ci0JCTY1MEZCRjJBMEQ5
QUYwNDcwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUwRkJGMjcwRDlBRjA0NjAwOEZDMjkyIC8qIFNW
R0hLZXJuRWxlbWVudC5jcHAgKi87IH07CiAJCTY1MEZCRjJCMEQ5QUYwNDcwMDhGQzI5MiAvKiBT
VkdIS2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1MEZCRjI4MEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuaCAqLzsg
fTsKIAkJNjUxNUVDOTEwRDk3MjNGRjAwNjNENDlBIC8qIEpTU1ZHQWx0R2x5cGhFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTVFQzhG
MEQ5NzIzRkYwMDYzRDQ5QSAvKiBKU1NWR0FsdEdseXBoRWxlbWVudC5jcHAgKi87IH07CiAJCTY1
MTVFQzkyMEQ5NzIzRkYwMDYzRDQ5QSAvKiBKU1NWR0FsdEdseXBoRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxNUVDOTAwRDk3MjNGRjAw
NjNENDlBIC8qIEpTU1ZHQWx0R2x5cGhFbGVtZW50LmggKi87IH07CkBAIC0xNDU5LDcgKzE0NTcs
NiBAQAogCQk2NTUwQjZBNDA5OURGMDI3MDA5MEQ3ODEgLyogRWRpdGluZ1RleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTBCNjlBMDk5REYwMjcw
MDkwRDc4MSAvKiBFZGl0aW5nVGV4dC5oICovOyB9OwogCQk2NTUwQjZBNTA5OURGMDI3MDA5MEQ3
ODEgLyogVGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTUwQjY5QjA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5jcHAgKi87IH07CiAJCTY1NTBC
NkE2MDk5REYwMjcwMDkwRDc4MSAvKiBUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUwQjY5QzA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1NjUzRjJE
MEQ5NzI3RDIwMENBOTcyMyAvKiBTVkdBbHRHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTNGMkEwRDk3MjdEMjAwQ0E5NzIz
IC8qIFNWR0FsdEdseXBoRWxlbWVudC5jcHAgKi87IH07CiAJCTY1NjUzRjJFMEQ5NzI3RDIwMENB
OTcyMyAvKiBTVkdBbHRHbHlwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjUzRjJCMEQ5NzI3RDIwMENBOTcyMyAvKiBTVkdBbHRHbHlw
aEVsZW1lbnQuaCAqLzsgfTsKIAkJNjU2NTgwRjQwOUQxMkIyMDAwMEU2MUQ3IC8qIENTU1Byb3Bl
cnR5TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1NjU4MEVGMDlEMTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJNjU2NTgxNTEwOUQxMzA0MzAwMEU2MUQ3
IC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRz
LmggKi87IH07CkBAIC0xNTUxLDYgKzE1NDgsNyBAQAogCQk2RUJGMEU3NzEyQTk4Njg4MDBEQjE3
MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFQkYwRTc1MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVG
bG9hdC5oICovOyB9OwogCQk2RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuY3BwICovOyB9OwogCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmggKi87IH07CisJCTcxNzY0MjgwMTMxM0MxN0EwMDVDQzk1MSAvKiBTVkdBbGxJbk9uZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTc2NDI3RjEz
MTNDMTdBMDA1Q0M5NTEgLyogU1ZHQWxsSW5PbmUuY3BwICovOyB9OwogCQk3MjYyNkUwMjBFRjAy
MkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFz
dFBhdGguY3BwICovOyB9OwogCQk3NTBEMDI5MzExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5w
dXRTcGVlY2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzUwRDAyOTExMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmNwcCAqLzsg
fTsKIAkJNzUwRDAyOTQxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTBEMDI5MjExRDBF
N0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guaCAqLzsgfTsKQEAgLTE2ODMsMjQgKzE2
ODEsMTggQEAKIAkJODJFM0Q4REUxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNl
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MkUzRDhEQzEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCAqLzsg
fTsKIAkJODJFM0Q4REYxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNlRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJFM0Q4REQx
MjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNlRGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg0MTlEMkE3MTIwRDkyRDAwMDE0
MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODQxOUQyQTQxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRl
U3RyZWFtLmggKi87IH07Ci0JCTg0MTlEMkE4MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0
ZVN0cmVhbUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODQxOUQyQTUxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtQnVp
bGRlci5jcHAgKi87IH07CiAJCTg0MTlEMkE5MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0
ZVN0cmVhbUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg0MTlEMkE2MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxk
ZXIuaCAqLzsgfTsKLQkJODQxOUQyQUMxMjBEOTJGQzAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3Ry
ZWFtU291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg0MTlEMkFBMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5j
cHAgKi87IH07CiAJCTg0MTlEMkFEMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVh
bVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODQxOUQyQUIxMjBEOTJGQzAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlLmggKi87
IH07Ci0JCTg0MTlEMkI5MTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDE5RDJC
NzEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwICovOyB9OwogCQk4
NDE5RDJCQTEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MTlEMkI4MTIwRTBDNzYw
MDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRlci5oICovOyB9OwogCQk4NDIyNDE4MzEwN0U3
N0Y0MDA3NjZBODcgLyogSlNTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MjI0MTgxMTA3RTc3RjQwMDc2NkE4
NyAvKiBKU1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwICovOyB9OwogCQk4NDIyNDE4NDEwN0U3
N0Y0MDA3NjZBODcgLyogSlNTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDIyNDE4MjEwN0U3N0Y0MDA3NjZBODcg
LyogSlNTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggKi87IH07CiAJCTg0MjI0MThDMTA3RTc4NkYw
MDc2NkE4NyAvKiBET01TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDIyNDE4OTEwN0U3ODZGMDA3NjZBODcgLyog
RE9NU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oICovOyB9OwogCQk4NDIyNDE4RDEwN0U3ODZGMDA3
NjZBODcgLyogRE9NU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MjI0MThBMTA3RTc4NkYwMDc2NkE4NyAvKiBE
T01TVkdGRU1vcnBob2xvZ3lFbGVtZW50Lm1tICovOyB9OwogCQk4NDIyNDE4RTEwN0U3ODZGMDA3
NjZBODcgLyogRE9NU1ZHRkVNb3JwaG9sb2d5RWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDIyNDE4QjEwN0U3ODZGMDA3NjZB
ODcgLyogRE9NU1ZHRkVNb3JwaG9sb2d5RWxlbWVudEludGVybmFsLmggKi87IH07Ci0JCTg0MjI0
MTkzMTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MjI0MTkwMTA3RTc4QTcw
MDc2NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCAqLzsgfTsKIAkJODQyMjQxOTQx
MDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MjI0MTkxMTA3RTc4QTcwMDc2NkE4
NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggKi87IH07Ci0JCTg0MzAwQkQzMTIwQzlBNzEw
MDIxOTU0QSAvKiBTVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDMwMEJEMTEyMEM5QTcxMDAyMTk1NEEgLyogU1ZH
UGF0aFBhcnNlckZhY3RvcnkuY3BwICovOyB9OwogCQk4NDMwMEJENDEyMEM5QTcxMDAyMTk1NEEg
LyogU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQyMTIwQzlBNzEwMDIxOTU0QSAvKiBTVkdQYXRoUGFyc2Vy
RmFjdG9yeS5oICovOyB9OwogCQk4NDMwMEJENjEyMEM5QUFDMDAyMTk1NEEgLyogU1ZHUGF0aFN0
cmluZ1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQzMDBCRDUxMjBDOUFBQzAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuaCAqLzsg
fTsKIAkJODQzMDBCRDgxMjBDOUFENDAwMjE5NTRBIC8qIFNWR1BhdGhTb3VyY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQ3MTIwQzlBRDQw
MDIxOTU0QSAvKiBTVkdQYXRoU291cmNlLmggKi87IH07Ci0JCTg0MzAwQkRBMTIwQzlBRUQwMDIx
OTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQ5MTIwQzlBRUQwMDIxOTU0QSAvKiBTVkdQYXRo
U3RyaW5nU291cmNlLmNwcCAqLzsgfTsKIAkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZp
bHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ1
RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oICovOyB9OwogCQk4NDVFNzJGQjBGRDI2
MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg0NUU3MkY5MEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIu
Y3BwICovOyB9OwogCQk4NDVFNzJGQzBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDVFNzJGQTBGRDI2
MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmggKi87IH07CkBAIC0xNzMxLDEyICsxNzIzLDkgQEAK
IAkJODQ3MzBEOTExMjQ4RjBCMzAwRDNBOUM5IC8qIExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDczMEQ3NDEyNDhGMEIzMDBEM0E5
QzkgLyogTGlnaHRTb3VyY2UuaCAqLzsgfTsKIAkJODQ3MzBEOTIxMjQ4RjBCMzAwRDNBOUM5IC8q
IFBvaW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg0NzMwRDc1MTI0OEYwQjMwMEQzQTlDOSAvKiBQb2ludExpZ2h0U291cmNlLmgg
Ki87IH07CiAJCTg0NzMwRDkzMTI0OEYwQjMwMEQzQTlDOSAvKiBTcG90TGlnaHRTb3VyY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NzMwRDc2MTI0
OEYwQjMwMEQzQTlDOSAvKiBTcG90TGlnaHRTb3VyY2UuaCAqLzsgfTsKLQkJODQ3NkM5RTUxMURG
NkEwQjAwNTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDc2QzlFMzExREY2QTBCMDA1NTVCMDIg
LyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCAqLzsgfTsKIAkJODQ3NkM5RTYxMURGNkEwQjAw
NTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0QnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ3NkM5RTQxMURGNkEwQjAwNTU1QjAyIC8qIFNWR1Bh
dGhTZWdMaXN0QnVpbGRlci5oICovOyB9OwotCQk4NDc2QzlFQTExREY2QTI5MDA1NTVCMDIgLyog
U1ZHUGF0aEJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODQ3NkM5RTcxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhCdWlsZGVyLmNwcCAq
LzsgfTsKIAkJODQ3NkM5RUIxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhCdWlsZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDc2QzlFODExREY2
QTI5MDA1NTVCMDIgLyogU1ZHUGF0aEJ1aWxkZXIuaCAqLzsgfTsKIAkJODQ3NkM5RUMxMURGNkEy
OTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODQ3NkM5RTkxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhD
b25zdW1lci5oICovOyB9OwotCQk4NDc2QzlFRjExREY2QTU4MDA1NTVCMDIgLyogU1ZHUGF0aFBh
cnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NDc2QzlFRDExREY2QTU4MDA1NTVCMDIgLyogU1ZHUGF0aFBhcnNlci5jcHAgKi87IH07CiAJCTg0
NzZDOUYwMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQYXRoUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDc2QzlFRTExREY2QTU4MDA1NTVCMDIg
LyogU1ZHUGF0aFBhcnNlci5oICovOyB9OwogCQk4NDgwMTk1NDEwOEJBRkIzMDBDQjJCMUYgLyog
RkVHYXVzc2lhbkJsdXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODQ4MDE5NTIxMDhCQUZCMzAwQ0IyQjFGIC8qIEZFR2F1c3NpYW5CbHVyLmNwcCAq
LzsgfTsKIAkJODQ4MDE5NTUxMDhCQUZCMzAwQ0IyQjFGIC8qIEZFR2F1c3NpYW5CbHVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDgwMTk1MzEwOEJB
RkIzMDBDQjJCMUYgLyogRkVHYXVzc2lhbkJsdXIuaCAqLzsgfTsKQEAgLTE3NTEsMTggKzE3NDAs
MTQgQEAKIAkJODQ4NTIyODQxMTkwMTZBNzAwNkVEQzdGIC8qIERPTVNWR0hLZXJuRWxlbWVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0ODUyMjgw
MTE5MDE2QTcwMDZFREM3RiAvKiBET01TVkdIS2VybkVsZW1lbnQubW0gKi87IH07CiAJCTg0ODUy
Mjg1MTE5MDE2QTcwMDZFREM3RiAvKiBET01TVkdWS2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0ODUyMjgxMTE5MDE2QTcwMDZFREM3
RiAvKiBET01TVkdWS2VybkVsZW1lbnQuaCAqLzsgfTsKIAkJODQ4NTIyODYxMTkwMTZBNzAwNkVE
QzdGIC8qIERPTVNWR1ZLZXJuRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg0ODUyMjgyMTE5MDE2QTcwMDZFREM3RiAvKiBET01TVkdWS2Vy
bkVsZW1lbnQubW0gKi87IH07Ci0JCTg0ODUyMjhBMTE5MDE3M0MwMDZFREM3RiAvKiBTVkdWS2Vy
bkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQ4NTIyODcxMTkwMTczQzAwNkVEQzdGIC8qIFNWR1ZLZXJuRWxlbWVudC5jcHAgKi87IH07
CiAJCTg0ODUyMjhCMTE5MDE3M0MwMDZFREM3RiAvKiBTVkdWS2VybkVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0ODUyMjg4MTE5MDE3M0Mw
MDZFREM3RiAvKiBTVkdWS2VybkVsZW1lbnQuaCAqLzsgfTsKIAkJODQ5Rjc3NzYwRUZFQzYyMDAw
OTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODQ5Rjc3NzUwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0
eWxlQXBwbGllci5oICovOyB9OwogCQk4NEE4MUYzRDBGQzdERkYwMDA5NTUzMDAgLyogU291cmNl
QWxwaGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODRBODFGM0IwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmNwcCAqLzsgfTsKIAkJODRB
ODFGM0UwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEE4MUYzQzBGQzdERkYwMDA5NTUzMDAgLyog
U291cmNlQWxwaGEuaCAqLzsgfTsKIAkJODRBODFGNDEwRkM3RTAyNzAwOTU1MzAwIC8qIFNvdXJj
ZUdyYXBoaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODRBODFGM0YwRkM3RTAyNzAwOTU1MzAwIC8qIFNvdXJjZUdyYXBoaWMuY3BwICovOyB9Owog
CQk4NEE4MUY0MjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRBODFGNDAwRkM3RTAyNzAwOTU1
MzAwIC8qIFNvdXJjZUdyYXBoaWMuaCAqLzsgfTsKLQkJODRCNkI5NzcxMjBGMTNFNTAwQjhFRkFG
IC8qIFNWR1BhdGhTZWdMaXN0U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg0QjZCOTc1MTIwRjEzRTUwMEI4RUZBRiAvKiBTVkdQYXRoU2Vn
TGlzdFNvdXJjZS5jcHAgKi87IH07CiAJCTg0QjZCOTc4MTIwRjEzRTUwMEI4RUZBRiAvKiBTVkdQ
YXRoU2VnTGlzdFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODRCNkI5NzYxMjBGMTNFNTAwQjhFRkFGIC8qIFNWR1BhdGhTZWdMaXN0U291cmNl
LmggKi87IH07Ci0JCTg0QzVCMkZBMTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg0QzVCMkY4MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2FsU3RhdGVC
dWlsZGVyLmNwcCAqLzsgfTsKIAkJODRDNUIyRkIxMjE2REM4MTAwODhCNTNBIC8qIFNWR1BhdGhU
cmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg0QzVCMkY5MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyLmggKi87IH07Ci0JCTg0QzY3ODRDMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQ
YXRoQmxlbmRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NEM2Nzg0QTEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuY3BwICovOyB9
OwogCQk4NEM2Nzg0RDEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QzY3ODRCMTIxNDgxNDcw
MEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5oICovOyB9OwogCQk4NEQwQzQwNDExMTVGMUQ0MDAx
OEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg0RDBDNDAzMTExNUYxRDQwMDE4QUEzNCAvKiBBZmZpbmVUcmFu
c2Zvcm0uY3BwICovOyB9OwogCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJh
bnNmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NEQwQzQwNTExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQwNTcsMTUwICs0MDQyLDgw
IEBACiAJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFB
NEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJQjIwMTExMDcw
QUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpT
U1ZHQUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNT
VkdBRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsKLQkJ
QjIyMjc5NjIwRDAwQkYyMjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3Q0IwRDAwQkYxRjAwNzFC
NzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwICovOyB9OwogCQlCMjIyNzk2MzBEMDBCRjIyMDA3MUI3
ODIgLyogQ29sb3JEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc3Q0MwRDAwQkYxRjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuaCAq
LzsgfTsKIAkJQjIyMjc5NjQwRDAwQkYyMjAwNzFCNzgyIC8qIEdyYWRpZW50QXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3Q0Qw
RDAwQkYxRjAwNzFCNzgyIC8qIEdyYWRpZW50QXR0cmlidXRlcy5oICovOyB9OwogCQlCMjIyNzk2
NTBEMDBCRjIyMDA3MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdDRTBEMDBCRjFGMDA3
MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggKi87IH07CiAJCUIyMjI3OTcxMEQw
MEJGMjIwMDcxQjc4MiAvKiBQYXR0ZXJuQXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3REIwRDAwQkYxRjAwNzFCNzgyIC8qIFBh
dHRlcm5BdHRyaWJ1dGVzLmggKi87IH07CiAJCUIyMjI3OTcyMEQwMEJGMjIwMDcxQjc4MiAvKiBS
YWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3N0RDMEQwMEJGMUYwMDcxQjc4MiAvKiBSYWRpYWxHcmFkaWVu
dEF0dHJpYnV0ZXMuaCAqLzsgfTsKLQkJQjIyMjc5NzMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMjI3N0REMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBRWxlbWVudC5jcHAgKi87IH07CiAJCUIy
MjI3OTc0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3REUwRDAwQkYxRjAwNzFCNzgyIC8q
IFNWR0FFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3OTc2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdB
bmdsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzdFMDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5nbGUuY3BwICovOyB9OwogCQlCMjIyNzk3
NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0UxMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmds
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUIy
MjI3OTc5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0UzMEQwMEJG
MUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5
N0EwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0U0MEQwMEJGMUYwMDcx
Qjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3OThGMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdGOTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyNzk5MDBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHQW5pbWF0ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3N0ZBMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxlbWVudC5o
ICovOyB9OwotCQlCMjIyNzk5MjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIyMjc3RkMwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCAq
LzsgfTsKIAkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIy
NzdGRDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCAqLzsgfTsK
LQkJQjIyMjc5OTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3
N0ZFMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAgKi87
IH07CiAJCUIyMjI3OTk1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
Mjc3RkYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmggKi87
IH07Ci0JCUIyMjI3OTk3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODAx
MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIy
Mjc5OTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODAyMEQwMEJGMUYwMDcx
Qjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmggKi87IH07Ci0JCUIyMjI3OTlCMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdDaXJjbGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODA1MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdDaXJj
bGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5OUMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Np
cmNsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyMjI3ODA2MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdDaXJjbGVFbGVtZW50LmggKi87IH07
Ci0JCUIyMjI3OTlFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDbGlwUGF0aEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4MDgwRDAw
QkYxRjAwNzFCNzgyIC8qIFNWR0NsaXBQYXRoRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3OTlG
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDbGlwUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODA5MEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdDbGlwUGF0aEVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjc5QTEwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0NvbG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3ODBCMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdDb2xvci5jcHAgKi87IH07CiAJ
CUIyMjI3OUEyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDb2xvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4MEMwRDAwQkYxRjAwNzFCNzgyIC8q
IFNWR0NvbG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJQjIyMjc5QTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3ODBFMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3OUE1MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4MEYwRDAwQkYxRjAwNzFCNzgyIC8qIFNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmggKi87IH07Ci0JCUIyMjI3OUE3MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdDdXJzb3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODExMEQwMEJGMUYwMDcxQjc4MiAvKiBT
VkdDdXJzb3JFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5QTgwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0N1cnNvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3ODEyMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdDdXJzb3JFbGVtZW50Lmgg
Ki87IH07Ci0JCUIyMjI3OUFEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdEZWZzRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzgxNzBE
MDBCRjFGMDA3MUI3ODIgLyogU1ZHRGVmc0VsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyNzlBRTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRGVmc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODE4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdE
ZWZzRWxlbWVudC5oICovOyB9OwotCQlCMjIyNzlCMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRGVz
Y0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIyMjc4MUEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0Rlc2NFbGVtZW50LmNwcCAqLzsgfTsK
IAkJQjIyMjc5QjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Rlc2NFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzgxQjBEMDBCRjFGMDA3
MUI3ODIgLyogU1ZHRGVzY0VsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjc5QjMwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyMjI3ODFEMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdEb2N1bWVudC5jcHAg
Ki87IH07CiAJCUIyMjI3OUI0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdEb2N1bWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4MUUwRDAwQkYx
RjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50LmggKi87IH07Ci0JCUIyMjI3OUI2MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyMjI3ODIwMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdFbGVtZW50LmNwcCAq
LzsgfTsKIAkJQjIyMjc5QjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODIxMEQwMEJGMUYw
MDcxQjc4MiAvKiBTVkdFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJQjIyMjc5QjkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsZW1lbnRJ
bnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjIyNzgyMzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRWxlbWVudEluc3RhbmNlLmNwcCAqLzsg
fTsKIAkJQjIyMjc5QkEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsZW1lbnRJbnN0YW5jZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4MjQwRDAw
QkYxRjAwNzFCNzgyIC8qIFNWR0VsZW1lbnRJbnN0YW5jZS5oICovOyB9OwotCQlCMjIyNzlCQzBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzgyNjBEMDBCRjFGMDA3MUI3
ODIgLyogU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5jcHAgKi87IH07CiAJCUIyMjI3OUJEMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdFbGVtZW50SW5zdGFuY2VMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzgyNzBEMDBCRjFGMDA3MUI3ODIgLyog
U1ZHRWxlbWVudEluc3RhbmNlTGlzdC5oICovOyB9OwotCQlCMjIyNzlCRjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRWxsaXBzZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4MjkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0VsbGlwc2VF
bGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5QzAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsbGlw
c2VFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjIyNzgyQTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRWxsaXBzZUVsZW1lbnQuaCAqLzsgfTsK
IAkJQjIyMjc5QzIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0V4Y2VwdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4MkMwRDAwQkYxRjAwNzFC
NzgyIC8qIFNWR0V4Y2VwdGlvbi5oICovOyB9OwotCQlCMjIyNzlDNDBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzgyRTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAgKi87IH07CiAJCUIyMjI3OUM1MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzgyRjBEMDBCRjFGMDA3MUI3ODIg
LyogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oICovOyB9OwotCQlCMjIyNzlDNzBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4MzEwRDAwQkYxRjAwNzFCNzgyIC8qIFNW
R0ZFQmxlbmRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5QzgwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0ZFQmxlbmRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjIyNzgzMjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQu
aCAqLzsgfTsKLQkJQjIyMjc5Q0EwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMjI3ODM0MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAg
Ki87IH07CiAJCUIyMjI3OUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
Mjc4MzUwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmggKi87IH07
Ci0JCUIyMjI3OUNEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzgzNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQu
Y3BwICovOyB9OwogCQlCMjIyNzlDRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3ODM4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5oICovOyB9OwotCQlCMjIyNzlEMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3ODNBMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwICovOyB9OwogCQlCMjIyNzlEMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzgzQjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggKi87IH07
Ci0JCUIyMjI3OUQzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
Mjc4M0QwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAg
Ki87IH07CiAJCUIyMjI3OUQ0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMjI3ODNFMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
aCAqLzsgfTsKLQkJQjIyMjc5RDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjIyNzg0MDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5RDcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc4NDEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudC5oICovOyB9OwotCQlCMjIyNzlEOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVEaXN0
YW50TGlnaHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3ODQzMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdGRURpc3RhbnRMaWdodEVs
ZW1lbnQuY3BwICovOyB9OwogCQlCMjIyNzlEQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVEaXN0
YW50TGlnaHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzg0NDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRkVEaXN0YW50TGlnaHRFbGVt
ZW50LmggKi87IH07Ci0JCUIyMjI3OURDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUZsb29kRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzg0NjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRkVGbG9vZEVsZW1lbnQuY3BwICovOyB9Owog
CQlCMjIyNzlERDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGbG9vZEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODQ3MEQwMEJGMUYw
MDcxQjc4MiAvKiBTVkdGRUZsb29kRWxlbWVudC5oICovOyB9OwotCQlCMjIyNzlERjBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHRkVGdW5jQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4NDkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0ZF
RnVuY0FFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5RTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0ZFRnVuY0FFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzg0QTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRkVGdW5jQUVsZW1lbnQuaCAq
LzsgfTsKLQkJQjIyMjc5RTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRnVuY0JFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODRD
MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdGRUZ1bmNCRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3
OUUzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUZ1bmNCRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4NEQwRDAwQkYxRjAwNzFCNzgy
IC8qIFNWR0ZFRnVuY0JFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3OUU1MEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdGRUZ1bmNHRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg0RjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHRkVGdW5jR0Vs
ZW1lbnQuY3BwICovOyB9OwogCQlCMjIyNzlFNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGdW5j
R0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMjI3ODUwMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdGRUZ1bmNHRWxlbWVudC5oICovOyB9Owot
CQlCMjIyNzlFODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGdW5jUkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4NTIwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR0ZFRnVuY1JFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5RTkwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0ZFRnVuY1JFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg1MzBEMDBCRjIwMDA3MUI3ODIgLyogU1ZH
RkVGdW5jUkVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjc5RUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg1NTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5RUMwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjIyMjc4NTYwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5oICovOyB9OwotCQlCMjIyNzlFRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjIyMjc4NTgwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0ZFSW1hZ2VFbGVtZW50LmNwcCAq
LzsgfTsKIAkJQjIyMjc5RUYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFSW1hZ2VFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg1OTBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHRkVJbWFnZUVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjc5RjEw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTGlnaHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODVCMEQwMEJGMjAwMDcxQjc4MiAv
KiBTVkdGRUxpZ2h0RWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3OUYyMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdGRUxpZ2h0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjIyMjc4NUMwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0ZFTGlnaHRFbGVt
ZW50LmggKi87IH07Ci0JCUIyMjI3OUYzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzg1RDBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHRkVNZXJnZUVsZW1lbnQuY3BwICovOyB9Owog
CQlCMjIyNzlGNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVNZXJnZUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODVFMEQwMEJGMjAw
MDcxQjc4MiAvKiBTVkdGRU1lcmdlRWxlbWVudC5oICovOyB9OwotCQlCMjIyNzlGNjBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODYwMEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyNzlGNzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg2MTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3OUY5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdG
RU9mZnNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc4NjMwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0ZFT2Zmc2V0RWxlbWVudC5j
cHAgKi87IH07CiAJCUIyMjI3OUZBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRU9mZnNldEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3
ODY0MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdGRU9mZnNldEVsZW1lbnQuaCAqLzsgfTsKLQkJQjIy
Mjc5RkMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4NjYwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyNzlG
RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4NjcwRDAwQkYyMDAwNzFC
NzgyIC8qIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjc5RkYwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4NjkwRDAwQkYyMDAwNzFC
NzgyIC8qIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0Ew
MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4NkEwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaCAqLzsgfTsKLQkJQjIy
MjdBMDIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg2QzBEMDBCRjIw
MDA3MUI3ODIgLyogU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBMDMw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFU3BvdExpZ2h0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4NkQwRDAwQkYyMDAwNzFCNzgy
IC8qIFNWR0ZFU3BvdExpZ2h0RWxlbWVudC5oICovOyB9OwotCQlCMjIyN0EwNTBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVUaWxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg2RjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHRkVUaWxl
RWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTA2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVRp
bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjIyNzg3MDBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHRkVUaWxlRWxlbWVudC5oICovOyB9Owot
CQlCMjIyN0EwODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg3MjBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgKi87IH07CiAJCUIy
MjI3QTA5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg3MzBEMDBCRjIw
MDA3MUI3ODIgLyogU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0EwQjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHRmlsdGVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg3NTBEMDBCRjIwMDA3MUI3ODIgLyog
U1ZHRmlsdGVyRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTBDMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGaWx0ZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjIyNzg3NjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHRmlsdGVyRWxlbWVudC5o
ICovOyB9OwotCQlCMjIyN0EwRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyMjI3ODc4MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwICovOyB9OwogCQlCMjIyN0EwRjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg3OTBEMDBCRjIwMDA3MUI3
ODIgLyogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmggKi87IH07Ci0JCUIy
MjI3QTExMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaXRUb1ZpZXdCb3guY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4N0IwRDAwQkYyMDAwNzFC
NzgyIC8qIFNWR0ZpdFRvVmlld0JveC5jcHAgKi87IH07CiAJCUIyMjI3QTEyMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdGaXRUb1ZpZXdCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3ODdDMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdGaXRUb1ZpZXdC
b3guaCAqLzsgfTsKLQkJQjIyMjdBMTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzg3RTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VFbGVtZW50LmNwcCAqLzsgfTsK
IAkJQjIyMjdBMTUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4N0YwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0ExNzBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODgxMEQwMEJGMjAwMDcxQjc4
MiAvKiBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0ExODBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg4MjBEMDBCRjIwMDA3MUI3ODIg
LyogU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3QTFBMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGb250RmFjZU5hbWVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODg0MEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdGb250RmFjZU5hbWVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBMUIwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODg1MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdGb250
RmFjZU5hbWVFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3QTFEMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdGb250RmFjZVNyY0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjIyMjc4ODcwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlU3Jj
RWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTFFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb250
RmFjZVNyY0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3ODg4MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdGb250RmFjZVNyY0VsZW1lbnQu
aCAqLzsgfTsKLQkJQjIyMjdBMjAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlVXJpRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzg4QTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCAqLzsg
fTsKIAkJQjIyMjdBMjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlVXJpRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4OEIw
RDAwQkYyMDAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlVXJpRWxlbWVudC5oICovOyB9OwotCQlCMjIy
N0EyMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4OEQwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdB
MjQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg4RTBEMDBCRjIwMDA3
MUI3ODIgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBMjYwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0dFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODkwMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdHRWxl
bWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTI3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdHRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4
OTEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0dFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3QTI5MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4OTMwRDAwQkYyMDAwNzFCNzgyIC8q
IFNWR0dyYWRpZW50RWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTJBMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3ODk0MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdHcmFkaWVudEVs
ZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBMkMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ltYWdlRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzg5NjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHSW1hZ2VFbGVtZW50LmNwcCAqLzsgfTsKIAkJ
QjIyMjdBMkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4OTcwRDAwQkYyMDAwNzFC
NzgyIC8qIFNWR0ltYWdlRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0EyRjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHTGFuZ1NwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyMjI3ODk5MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMYW5nU3BhY2UuY3Bw
ICovOyB9OwogCQlCMjIyN0EzMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzg5QTBEMDBC
RjIwMDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmggKi87IH07Ci0JCUIyMjI3QTMyMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdMZW5ndGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjIyMjc4OUMwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xlbmd0aC5jcHAg
Ki87IH07CiAJCUIyMjI3QTMzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGguaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3ODlEMEQwMEJGMjAw
MDcxQjc4MiAvKiBTVkdMZW5ndGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQlCMjIyN0EzNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGVuZ3RoTGlz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIy
Nzg5RjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGVuZ3RoTGlzdC5jcHAgKi87IH07CiAJCUIyMjI3
QTM2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhBMDBEMDBCRjIwMDA3MUI3ODIgLyog
U1ZHTGVuZ3RoTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCUIyMjI3QTM4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIyMjc4QTIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAg
Ki87IH07CiAJCUIyMjI3QTM5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3OEEzMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCAqLzsg
fTsKLQkJQjIyMjdBM0IwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpbmVFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEE1MEQwMEJG
MjAwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTNDMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QTYwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xpbmVF
bGVtZW50LmggKi87IH07Ci0JCUIyMjI3QTQwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMb2NhdGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
Mjc4QUEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5jcHAgKi87IH07CiAJCUIyMjI3
QTQxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMb2NhdGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEFCMEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdMb2NhdGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlCMjIyN0E0MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFya2VyRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhBRDBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHTWFya2VyRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTQ0
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNYXJrZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhBRTBEMDBCRjIwMDA3MUI3ODIgLyog
U1ZHTWFya2VyRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0E0NjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHTWFza0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc4QjAwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50LmNwcCAq
LzsgfTsKIAkJQjIyMjdBNDcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhCMTBEMDBC
RjIwMDA3MUI3ODIgLyogU1ZHTWFza0VsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBNEEwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhCNDBEMDBCRjIwMDA3MUI3ODIgLyogU1ZH
TWV0YWRhdGFFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBNEIwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR01ldGFkYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4QjUwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVu
dC5oICovOyB9OwotCQlCMjIyN0E0RDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3
OEI3MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIy
N0E0RTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhCODBEMDBCRjIwMDA3MUI3ODIg
LyogU1ZHTVBhdGhFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3QTUwMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3OEJBMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmNwcCAq
LzsgfTsKIAkJQjIyMjdBNTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEJCMEQwMEJG
MjAwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQjIyMjdBNTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Bh
aW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3OEJEMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYWludC5jcHAgKi87IH07CiAJCUIyMjI3QTU0
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QkUwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhaW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQjIy
MjdBNTYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhcnNlclV0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhDMDBEMDBCRjIwMDA3
MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJQjIyMjdBNTcwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BhcnNlclV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QzEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1Bh
cnNlclV0aWxpdGllcy5oICovOyB9OwotCQlCMjIyN0E1ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
UGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjIyMjc4QzIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhFbGVtZW50LmNwcCAqLzsg
fTsKIAkJQjIyMjdBNTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhDMzBEMDBCRjIw
MDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQuaCAqLzsgfTsKIAkJQjIyMjdBNUIwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1BhdGhTZWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyMjI3OEM1MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnLmggKi87
IH07CiAJCUIyMjI3QTVFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnQXJjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhDODBEMDBCRjIw
MDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0FyYy5oICovOyB9OwpAQCAtNDIxMiw4NCArNDEyNyw0NiBA
QAogCQlCMjIyN0E3NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpbmV0by5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4REYwRDAwQkYy
MDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaW5ldG8uaCAqLzsgfTsKIAkJQjIyMjdBNzgwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhFMjBEMDBCRjIwMDA3MUI3ODIg
LyogU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuaCAqLzsgfTsKIAkJQjIyMjdBN0QwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4RTcwRDAwQkYyMDAwNzFCNzgyIC8q
IFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbC5oICovOyB9OwotCQlCMjIyN0E4MDBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4RUEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdM
aXN0LmNwcCAqLzsgfTsKIAkJQjIyMjdBODEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIy
NzhFQjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaCAqLzsgfTsKIAkJQjIyMjdB
ODQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEVFMEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdQYXRoU2VnTW92ZXRvLmggKi87IH07Ci0JCUIyMjI3QTg3MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdQYXR0ZXJuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzhGMTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1l
bnQuY3BwICovOyB9OwogCQlCMjIyN0E4ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3OEYyMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5oICovOyB9OwotCQlC
MjIyN0E4QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEY1MEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdQb2ludExpc3QuY3BwICovOyB9OwogCQlCMjIyN0E4QzBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzhGNjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmggKi87IH07
Ci0JCUIyMjI3QThFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhGODBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0E4RjBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEY5MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2x5RWxl
bWVudC5oICovOyB9OwotCQlCMjIyN0E5MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWdvbkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIyMjc4RkEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmNwcCAqLzsgfTsK
IAkJQjIyMjdBOTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhGQjBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHUG9seWdvbkVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBOTMwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhGRDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZH
UG9seWxpbmVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBOTQwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1BvbHlsaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc4RkUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVu
dC5oICovOyB9OwotCQlCMjIyN0E5NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjIyNzkwMDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAg
Ki87IH07CiAJCUIyMjI3QTk3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIy
NzkwMTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUIyMjI3QTk5MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MDMwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTlBMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTA0MEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBOUQwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1JlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTA3MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdSZWN0RWxl
bWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTlFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSZWN0RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
Mjc5MDgwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1JlY3RFbGVtZW50LmggKi87IH07CiAJCUIyMjI3
QUEwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSZW5kZXJpbmdJbnRlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTBBMEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdSZW5kZXJpbmdJbnRlbnQuaCAqLzsgfTsKLQkJQjIyMjdBQTIwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1NjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MEMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1NjcmlwdEVs
ZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FBMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2NyaXB0
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIyMjc5MEQwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1NjcmlwdEVsZW1lbnQuaCAqLzsgfTsKLQkJ
QjIyMjdBQTUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1NldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MEYwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1NldEVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FBNjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc5MTAwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1NldEVsZW1lbnQuaCAq
LzsgfTsKLQkJQjIyMjdBQTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTEyMEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QUE5MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MTMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0
b3BFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3QUFCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHJp
bmdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMjI3OTE1MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmNwcCAqLzsgfTsKIAkJ
QjIyMjdBQUMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTE2MEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdTdHJpbmdMaXN0LmggKi87IH07Ci0JCUIyMjI3QUFFMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdTdHlsYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzkxODBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5bGFibGUuY3BwICovOyB9
OwogCQlCMjIyN0FBRjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGFibGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTE5MEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsYWJsZS5oICovOyB9OwotCQlCMjIyN0FCMTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHU3R5bGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzkxQjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVkRWxlbWVu
dC5jcHAgKi87IH07CiAJCUIyMjI3QUIyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZWRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIy
NzkxQzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVkRWxlbWVudC5oICovOyB9OwotCQlCMjIy
N0FCMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkxRDBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAgKi87IH07CiAJCUIy
MjI3QUI0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkxRTBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oICovOyB9OwotCQlCMjIy
N0FCNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MUYw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcCAqLzsg
fTsKIAkJQjIyMjdBQjYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzkyMDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQu
aCAqLzsgfTsKLQkJQjIyMjdBQjcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzky
MTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdB
QjgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MjIwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1N0eWxlRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0FCQTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHU1ZHRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzkyNDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5jcHAgKi87
IH07CiAJCUIyMjI3QUJCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkyNTBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0FCRDBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkyNzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3dpdGNo
RWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QUJFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTd2l0
Y2hFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjIyNzkyODBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5oICovOyB9Owot
CQlCMjIyN0FDMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3ltYm9sRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkyQTBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHU3ltYm9sRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QUMxMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdTeW1ib2xFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkyQjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3lt
Ym9sRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0FDNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVGVz
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
Mjc5MkUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1Rlc3RzLmNwcCAqLzsgfTsKIAkJQjIyMjdBQzUw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Rlc3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkyRjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVGVzdHMu
aCAqLzsgfTsKLQkJQjIyMjdBQzcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRDb250ZW50RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzkzMTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCAqLzsg
fTsKIAkJQjIyMjdBQzgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRDb250ZW50RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MzIw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RleHRDb250ZW50RWxlbWVudC5oICovOyB9OwotCQlCMjIy
N0FDQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVGV4dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MzQwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1RleHRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBQ0IwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1RleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjIyNzkzNTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVGV4dEVsZW1lbnQuaCAq
LzsgfTsKLQkJQjIyMjdBQ0QwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRQYXRoRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkz
NzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVGV4dFBhdGhFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIy
MjdBQ0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MzgwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1RleHRQYXRoRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0FEMDBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkzQTBEMDBCRjIxMDA3MUI3ODIgLyog
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QUQxMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkzQjBEMDBCRjIxMDA3MUI3ODIgLyog
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oICovOyB9OwotCQlCMjIyN0FEMzBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHVGl0bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTNEMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUaXRsZUVs
ZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FENDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVGl0bGVF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzkzRTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVGl0bGVFbGVtZW50LmggKi87IH07Ci0JCUIy
MjI3QUQ2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NDAwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1RyYW5zZm9ybS5jcHAgKi87IH07CiAJCUIyMjI3QUQ3MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3OTQxMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm0uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCMjIyN0FEOTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0MzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZH
VHJhbnNmb3JtYWJsZS5jcHAgKi87IH07CiAJCUIyMjI3QURBMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdUcmFuc2Zvcm1hYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzk0NDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtYWJsZS5oICov
OyB9OwotCQlCMjIyN0FEQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5
NDYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmNwcCAqLzsgfTsKIAkJ
QjIyMjdBREQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0NzBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaCAqLzsgfTsKLQkJQjIyMjdBREUwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NDgwRDAwQkYyMTAwNzFCNzgyIC8qIFNW
R1RyYW5zZm9ybUxpc3QuY3BwICovOyB9OwogCQlCMjIyN0FERjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc5NDkwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxpc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCMjIyN0FF
MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NEIwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1RSZWZFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBRTIwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1RSZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzk0QzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1lbnQuaCAqLzsg
fTsKLQkJQjIyMjdBRTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RTcGFuRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk0RTBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHVFNwYW5FbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBRTUwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR1RTcGFuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NEYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RT
cGFuRWxlbWVudC5oICovOyB9OwogCQlCMjIyN0FFNzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVW5p
dFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjIyNzk1MTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVW5pdFR5cGVzLmggKi87IH07Ci0JCUIyMjI3
QUU5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdVUklSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NTMwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1VSSVJlZmVyZW5jZS5jcHAgKi87IH07CiAJCUIyMjI3QUVBMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdVUklSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyMjI3OTU0MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdVUklSZWZlcmVuY2Uu
aCAqLzsgfTsKLQkJQjIyMjdBRUMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VzZUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NTYw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1VzZUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FFRDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHVXNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NTcwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1Vz
ZUVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBRUYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1ZpZXdF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMjI3OTU5MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdWaWV3RWxlbWVudC5jcHAgKi87IH07CiAJ
CUIyMjI3QUYwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdWaWV3RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5NUEwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1ZpZXdFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3QUYyMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdWaWV3U3BlYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjIyNzk1QzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVmlld1NwZWMuY3BwICov
OyB9OwogCQlCMjIyN0FGMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVmlld1NwZWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTVEMEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdWaWV3U3BlYy5oICovOyB9OwotCQlCMjIyN0FGNTBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjIyNzk1RjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5j
cHAgKi87IH07CiAJCUIyMjI3QUY2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdab29tQW5kUGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzk2MDBE
MDBCRjIxMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5oICovOyB9OwogCQlCMjIyN0IwNTBEMDBC
RkYxMDA3MUI3ODIgLyogU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3QjAwMEQwMEJGRjEw
MDcxQjc4MiAvKiBTVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwICovOyB9OwogCQlC
MjIyN0IwNjBEMDBCRkYxMDA3MUI3ODIgLyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3QjAxMEQwMEJGRjEwMDcxQjc4
MiAvKiBTVkdDU1NQYXJzZXIuY3BwICovOyB9OwpAQCAtNDMwMyw3ICs0MTgwLDYgQEAKIAkJQjIy
MzYyMkYwQzNBRjA3MTAwMDhDQTlCIC8qIERPTVNWR1RleHRQYXRoRWxlbWVudEludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIzNjIyQzBD
M0FGMDcxMDAwOENBOUIgLyogRE9NU1ZHVGV4dFBhdGhFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsK
IAkJQjIzNTQwRjIwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjM1NDBGMDBEMDA3ODJF
MDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNhdG9yLmNwcCAqLzsgfTsKIAkJQjIzNTQwRjMwRDAwNzgy
RTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjIzNTQwRjEwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1Ry
dW5jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCUIyMzdDOEE3MEQzNDREMTEwMDEzRjcwNyAvKiBTVkdGb250RGF0YS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjM3QzhBNTBEMzQ0RDExMDAx
M0Y3MDcgLyogU1ZHRm9udERhdGEuY3BwICovOyB9OwogCQlCMjM3QzhBODBEMzQ0RDExMDAxM0Y3
MDcgLyogU1ZHRm9udERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMzdDOEE2MEQzNDREMTEwMDEzRjcwNyAvKiBTVkdGb250RGF0YS5oICovOyB9
OwogCQlCMjQwNTU2NTBCNUJFNjQwMDAyQTI4QzAgLyogRE9NU1ZHRWxlbWVudEluc3RhbmNlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
NDA1NTYzMEI1QkU2NDAwMDJBMjhDMCAvKiBET01TVkdFbGVtZW50SW5zdGFuY2VJbnRlcm5hbC5o
ICovOyB9OwogCQlCMjQwNTU2NjBCNUJFNjQwMDAyQTI4QzAgLyogRE9NU1ZHRWxlbWVudEluc3Rh
bmNlTGlzdEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjQwNTU2NDBCNUJFNjQwMDAyQTI4QzAgLyogRE9NU1ZHRWxlbWVudEluc3RhbmNl
TGlzdEludGVybmFsLmggKi87IH07CkBAIC00MzEyLDcgKzQxODgsNiBAQAogCQlCMjU1OTlBMzBE
MDBEOEJBMDBCQjgyNUMgLyogU1ZHSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk5MEIwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0ltYWdl
LmNwcCAqLzsgfTsKIAkJQjI1NTk5QTQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ltYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTkwQzBEMDBE
OEI5MDBCQjgyNUMgLyogU1ZHSW1hZ2UuaCAqLzsgfTsKIAkJQjI1NTk5QTUwRDAwRDhCQTAwQkI4
MjVDIC8qIEVtcHR5Q2xpZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI1NTk5MEQwRDAwRDhCOTAwQkI4MjVDIC8qIEVtcHR5Q2xpZW50cy5oICov
OyB9OwotCQlCMjYyQjgwNDBEMUYzMkQwMDAxNThGMDkgLyogU1ZHRm9udC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjYyQjgwMzBEMUYzMkQwMDAx
NThGMDkgLyogU1ZHRm9udC5jcHAgKi87IH07CiAJCUIyNjZDRDREMEMzQUVDNjUwMEVCMDhEMiAv
KiBKU1NWR0V4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMjY2Q0Q0QjBDM0FFQzY1MDBFQjA4RDIgLyogSlNTVkdFeGNlcHRpb24uY3Bw
ICovOyB9OwogCQlCMjY2Q0Q0RTBDM0FFQzY1MDBFQjA4RDIgLyogSlNTVkdFeGNlcHRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNjZDRDRDMEMz
QUVDNjUwMEVCMDhEMiAvKiBKU1NWR0V4Y2VwdGlvbi5oICovOyB9OwogCQlCMjc1MzU1ODBCMDUz
ODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYg
LyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi87IH07CkBAIC00Mzc0LDkgKzQyNDksNyBA
QAogCQlCMjdCMjg1QzBDRUYwRDcyMDBEMzlENTQgLyogRE9NU1ZHRm9udEVsZW1lbnQuaCBpbiBD
b3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyN0IyODJEMENFRjBDMzUwMEQzOUQ1NCAvKiBET01TVkdGb250RWxlbWVudC5oICovOyB9Owog
CQlCMjdCMjg1RDBDRUYwRDcyMDBEMzlENTQgLyogRE9NU1ZHR2x5cGhFbGVtZW50LmggaW4gQ29w
eSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjdCMjgzMDBDRUYwQzM1MDBEMzlENTQgLyogRE9NU1ZHR2x5cGhFbGVtZW50LmggKi87IH07CiAJ
CUIyN0IyODVFMENFRjBENzIwMEQzOUQ1NCAvKiBET01TVkdNaXNzaW5nR2x5cGhFbGVtZW50Lmgg
aW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjdCMjgzMzBDRUYwQzM1MDBEMzlENTQgLyogRE9NU1ZHTWlzc2luZ0dseXBoRWxlbWVu
dC5oICovOyB9OwotCQlCMjhDNkEyNzBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1lbnRFeHRl
bnNpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyOEM2QTFFMEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwICov
OyB9OwogCQlCMjhDNkEyODBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1lbnRFeHRlbnNpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjhDNkEx
RjBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQjI4QzZBMjkwRDAwQzQ0ODAw
MzM0QUE0IC8qIFNWR0ltYWdlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyOEM2QTIwMEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdJbWFnZUxv
YWRlci5jcHAgKi87IH07CiAJCUIyOEM2QTJBMEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdJbWFnZUxv
YWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI4
QzZBMjEwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0ltYWdlTG9hZGVyLmggKi87IH07CiAJCUIyQTAx
NUE4MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBMDE1OTIwQUY2Q0Q1MzAwNkJDRTBF
IC8qIEdyYXBoaWNzQ29udGV4dC5jcHAgKi87IH07CiAJCUIyQTAxNUE5MEFGNkNENTMwMDZCQ0Uw
RSAvKiBHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyQTAxNTkzMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDM4
NCwxMSArNDI1Nyw4IEBACiAJCUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5
cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkEw
MTU5NTBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyQTEwQjkyMEIzODE4QkQwMDA5OUFB
NCAvKiBJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjJBMTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjJBMTBCOTQwQjM4
MThENzAwMDk5QUE0IC8qIEltYWdlQnVmZmVyQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBMTBCOTMwQjM4MThENzAwMDk5QUE0IC8qIEltYWdl
QnVmZmVyQ0cuY3BwICovOyB9OwotCQlCMkExRjJBQTBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHRm9u
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjJBMUYyQTEwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR0ZvbnRFbGVtZW50LmNwcCAqLzsgfTsK
IAkJQjJBMUYyQUIwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR0ZvbnRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkExRjJBMjBDRUYwQUJGMDA0
NDJGNkEgLyogU1ZHRm9udEVsZW1lbnQuaCAqLzsgfTsKLQkJQjJBMUYyQUQwQ0VGMEFCRjAwNDQy
RjZBIC8qIFNWR0dseXBoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMkExRjJBNDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHR2x5cGhFbGVt
ZW50LmNwcCAqLzsgfTsKIAkJQjJBMUYyQUUwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR0dseXBoRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJB
MUYyQTUwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR0dseXBoRWxlbWVudC5oICovOyB9OwotCQlCMkEx
RjJCMDBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkExRjJBNzBDRUYwQUJG
MDA0NDJGNkEgLyogU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5jcHAgKi87IH07CiAJCUIyQTFGMkIx
MENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkExRjJBODBDRUYwQUJGMDA0NDJG
NkEgLyogU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oICovOyB9OwogCQlCMkFFOUI5RDBDM0FGMjc0
MDBGMjNGN0YgLyogRE9NU1ZHVGV4dFBhdGhFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBRTlCOUMwQzNBRjI3NDAwRjIzRjdGIC8qIERP
TVNWR1RleHRQYXRoRWxlbWVudC5tbSAqLzsgfTsKIAkJQjJBRkZDN0MwRDAwQTVDMTAwMzAwNzRE
IC8qIEZvbnRDYWNoZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyQUZGQzc0MEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2FjaGVNYWMubW0gKi87
IH07CkBAIC00NDcwLDcgKzQzNDAsNiBAQAogCQlCMkNCOTI2NDBCNUJEQTAyMDA5QkFBNzggLyog
RE9NU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyQ0I5MjYwMEI1QkRBMDIwMDlCQUE3OCAvKiBET01TVkdFbGVt
ZW50SW5zdGFuY2VMaXN0Lm1tICovOyB9OwogCQlCMkUyN0M5RjBCMEYyQjA5MDBGMTdDN0IgLyog
RmxvYXRQb2ludDNELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyRTI3QzlEMEIwRjJCMDkwMEYxN0M3QiAvKiBGbG9hdFBvaW50M0QuY3BwICovOyB9
OwogCQlCMkUyN0NBMDBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNELmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkUyN0M5RTBCMEYyQjA5MDBG
MTdDN0IgLyogRmxvYXRQb2ludDNELmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJQjJFNEVDOTcwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkU0
RUM5NDBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmNwcCAqLzsgfTsKIAkJQjJFNEVD
OTgwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJFNEVDOTUwRDAwQzIyQjAwNDMyNjQzIC8qIFNW
R1pvb21FdmVudC5oICovOyB9OwogCQlCMkVEOTc3MTBCMUY1NUNFMDAyNTdEMEYgLyogR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjJFRDk3NzAwQjFGNTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCAq
LzsgfTsKIAkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NE
IC8qIEROUy5oICovOyB9OwpAQCAtODAzOCw2ICs3OTA3LDcgQEAKIAkJNkVCRjBFNzUxMkE5ODY4
ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTT0VTVGV4dHVyZUZsb2F0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVFOEE3NzExMEY4
MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzE3NjQyN0YxMzEzQzE3QTAwNUNDOTUxIC8qIFNWR0FsbElu
T25lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FsbEluT25l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYwMjJGRTAwQTA3
RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTBE
MDI5MTExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVySW5wdXRTcGVlY2guY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3NTBEMDI5MjExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVy
SW5wdXRTcGVlY2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW5w
dXRTcGVlY2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2OTU1LDYgKzE2ODI1
LDcgQEAKIAkJQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyIC8qIHN2ZyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzE3NjQyN0YxMzEzQzE3QTAwNUNDOTUx
IC8qIFNWR0FsbEluT25lLmNwcCAqLywKIAkJCQlFNDZFOTc4NjBEQUFENjFCMDA3MUU4OTQgLyog
YW5pbWF0aW9uICovLAogCQkJCUIyNTU5ODg2MEQwMEQ4QjgwMEJCODI1QyAvKiBncmFwaGljcyAq
LywKIAkJCQkwODFDREZCRDEyNkVDRkU4MDBEMjE1Q0EgLyogcHJvcGVydGllcyAqLywKQEAgLTIz
MDE1LDcgKzIyODg2LDYgQEAKIAkJCQlCMjc1MzU2NjBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDRjMzMjQwRjJCOTcxNTAwNEI2Nzk1IC8qIENvbG9y
Q0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCQTc2QzkxMUQyMEU0NzAwNEMyMDFDIC8qIENv
bG9yRGF0YS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyNzk2MjBEMDBCRjIyMDA3MUI3ODIg
LyogQ29sb3JEaXN0YW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RCMzEyNTFGMTJE
MDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1
NzcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1
MEI2QTEwOTlERjAyNzAwOTBENzgxIC8qIENvbW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
NDg3MywxNTAgKzI0NzQzLDE5IEBACiAJCQkJOTNFMjI3RTQwQUY1ODlBRDAwRDQ4MzI0IC8qIFN1
YnJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQjJEODE4MEY5OTIwRUUw
MDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYyQzEy
MTdDMTFBQjlFNzcwMDNDNDYyQyAvKiBTdXNwZW5kYWJsZVRpbWVyLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUIyMjI3OTczMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk2NTY1M0YyRDBEOTcyN0QyMDBDQTk3MjMgLyogU1ZHQWx0R2x5cGhFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3OTc2MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdBbmdsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyNzk3OTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyNzk4
RjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQjIyMjc5OTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3OTk0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyNzk5NzBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQlCMjIyNzk5QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQ2lyY2xlRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlCMjIyNzk5RTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQ2xpcFBhdGhF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3OUExMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdDb2xvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyNzlBNDBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjIyMjdCMDUwRDAwQkZGMTAwNzFCNzgyIC8qIFNWR0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0IwNjBEMDBCRkYxMDA3MUI3
ODIgLyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QjA4MEQwMEJG
RjEwMDcxQjc4MiAvKiBTVkdDU1NTdHlsZVNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUIyMjI3OUE3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDdXJzb3JFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUIyMjI3OUFEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdEZWZzRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyNzlCMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRGVz
Y0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjc5QjMwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyOEM2QTI3MEQwMEM0NDgw
MDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QjIyMjc5QjYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTgzM0M4NTIwQTJDRjUyODAwRDU3NjY0IC8qIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUIyMjI3OUI5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFbGVtZW50
SW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjc5QkMwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjc5
QkYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsbGlwc2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUIyMjI3OUM0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3OUM3MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRUJsZW5kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyNzlDQTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQjIyMjc5Q0QwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3OUQwMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTkyMTMyNzQx
MUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUIyMjI3OUQzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjc5RDYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlCMjIyNzlEOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3OURDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUZs
b29kRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyNzlERjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRkVGdW5jQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjc5RTIw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRnVuY0JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUIyMjI3OUU1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUZ1bmNHRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlCMjIyNzlFODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGdW5jUkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjc5RUIwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk4
NDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlC
MjIyNzlFRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQjIyMjc5RjEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFTGlnaHRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3OUYzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdG
RU1lcmdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyNzlGNjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTg0
MjI0MTkzMTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUIyMjI3OUY5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRU9mZnNldEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjc5RkMwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjc5RkYw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQjIyMjdBMDIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFU3BvdExpZ2h0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0EwNTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRkVUaWxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0EwODBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NDVFNzJGQjBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA4MUVCRjNBMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QTBCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaWx0
ZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QTBFMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQjIyMjdBMTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZpdFRvVmlld0JveC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlCMjYyQjgwNDBEMUYzMkQwMDAxNThGMDkgLyogU1ZHRm9udC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjM3QzhBNzBEMzQ0RDExMDAxM0Y3MDcgLyogU1ZHRm9u
dERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjJBMUYyQUEwQ0VGMEFCRjAwNDQyRjZBIC8q
IFNWR0ZvbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QTE0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGb250RmFjZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIy
MjdBMTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlCMjIyN0ExQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRm9udEZhY2VO
YW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0ExRDBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHRm9udEZhY2VTcmNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3
QTIwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQjIyMjdBMjMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QTI2MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdHRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMkExRjJBRDBDRUYwQUJGMDA0
NDJGNkEgLyogU1ZHR2x5cGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QTI5
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNjUwRkJGMkEwRDlBRjA0NzAwOEZDMjkyIC8qIFNWR0hLZXJuRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjU1OTlBMzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHSW1hZ2UuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBMkMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ltYWdl
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjhDNkEyOTBEMDBDNDQ4MDAzMzRBQTQg
LyogU1ZHSW1hZ2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBMkYwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0xhbmdTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0Ez
MjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIy
MjI3QTM1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMZW5ndGhMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUIyMjI3QTM4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBM0IwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0xpbmVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QTQwMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdMb2NhdGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBNDMwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR01hcmtlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QjIyMjdBNDYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUIyMjI3QTRBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjJBMUYyQjAwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR01p
c3NpbmdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBNEQwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODMz
QzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QjIyMjdBNTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQjIyMjdBNTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhaW50LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUIyMjI3QTU2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXJzZXJVdGlsaXRp
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODRDNjc4NEMxMjE0ODE0NzAwQTkyOTAyIC8qIFNW
R1BhdGhCbGVuZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTg0NzZDOUVBMTFERjZBMjkwMDU1
NUIwMiAvKiBTVkdQYXRoQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4NDE5RDJBODEy
MEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTg0MTlEMkFDMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0E1ODBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODQ3NkM5RUYxMURGNkE1ODAw
NTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODQzMDBCRDMx
MjBDOUE3MTAwMjE5NTRBIC8qIFNWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUIyMjI3QTgwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk4NDc2QzlFNTExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4RkYxMDIwMTI5NTBGNUEwMEYwMDI3
NiAvKiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk4NEI2Qjk3NzEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJODQxOUQyQjkxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJp
bmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTg0MzAwQkRBMTIwQzlBRUQwMDIxOTU0
QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTg0QzVCMkZB
MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUIyMjI3QTg3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0E4QjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QThFMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0E5MDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWdvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQjIyMjdBOTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlCMjIyN0E5NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVB
c3BlY3RSYXRpby5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0E5OTBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIy
MjI3QTlEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzIyNzQ3ODBFODM2NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkMyMjc0N0EwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0
eWxlRGVmcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0FBMjBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0FBNTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEFG
RDAwRjBEQUYzMzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQjIyMjdBQTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUIyMjI3QUFCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QUFFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdT
dHlsYWJsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0FCMTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHU3R5bGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0FCMzBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlCMjIyN0FCNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBQjcwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1N0eWxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0FCQTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIy
N0FCRDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlCMjIyN0FDMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3ltYm9sRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0FDNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVGVzdHMu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBQzcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Rl
eHRDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0FDQTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHVGV4dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdB
Q0QwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRQYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlCMjIyN0FEMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0FEMzBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHVGl0bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QUQ2MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIyMjdBRDkw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQjIyMjdBREMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUIyMjI3QURFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zv
cm1MaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QUUxMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdUUmVmRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0FFNDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHVFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3
QUU5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdVUklSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQjIyMjdBRUMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VzZUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQjIyMjdBRUYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1ZpZXdFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QUYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdW
aWV3U3BlYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4NDg1MjI4QTExOTAxNzNDMDA2RURDN0Yg
LyogU1ZHVktlcm5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3QUY1MEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdab29tQW5kUGFuLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyRTRF
Qzk3MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNjU4MkExNjMwOTk5OUQ2RDAwQkVFQjZEIC8qIFN5c3RlbVRpbWVNYWMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNFM0JFQzIwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUY1NUIzREQ1MTI1MUYxMkQwMDNFRjI2OSAvKiBUZWxlcGhvbmVJ
bnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTIyMiw2ICsyNDk2MSw3IEBACiAJCQkJ
OTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhT
U0ZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MTc2NDI4MDEzMTNDMTdBMDA1Q0M5NTEg
LyogU1ZHQWxsSW5PbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ5QkRBMEIxMzFGRDNFNTAw
M0M1NkYwIC8qIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUE1NzRGMjQxMzFEQjkzOTAwNDcxQjg4IC8qIFJlbmRlclF1b3RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVBNTc0RjI4MTMxREI5NkQwMDQ3MUI4OCAvKiBRdW90ZXNEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAkocmV2aXNpb24gODA3MTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NPTVV0aWxz
LmgiCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw3ICs1MywxMCBAQCB2b2lkIHNl
cmlhbGl6ZUNoYXJhY3RlcihVQ2hhcjMyIGMsIFZlY3RvCiAKIHZvaWQgc2VyaWFsaXplQ2hhcmFj
dGVyQXNDb2RlUG9pbnQoVUNoYXIzMiBjLCBWZWN0b3I8VUNoYXI+JiBhcHBlbmRUbykKIHsKLSAg
ICBhcHBlbmQoYXBwZW5kVG8sIFN0cmluZzo6Zm9ybWF0KCJcXCV4ICIsIGMpKTsKKyAgICBTdHJp
bmcgaGV4U3RyaW5nID0gSGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKGMpOworICAgIGFwcGVu
ZFRvLmFwcGVuZCgnXFwnKTsKKyAgICBhcHBlbmRUby5hcHBlbmQoaGV4U3RyaW5nLmNoYXJhY3Rl
cnMoKSwgaGV4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBhcHBlbmRUby5hcHBlbmQoJyAnKTsKIH0K
IAogdm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3Ry
aW5nJiBhcHBlbmRUbykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA4
MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgog
I2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+
CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAKQEAgLTYzOTgsMTEgKzYzOTksMTYgQEAg
U3RyaW5nIHF1b3RlQ1NTU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaQogICAgICAgICAgICAgYnVm
ZmVyW2luZGV4KytdID0gY2g7CiAgICAgICAgICAgICBhZnRlckVzY2FwZSA9IGZhbHNlOwogICAg
ICAgICB9IGVsc2UgaWYgKGNoIDwgMHgyMCB8fCBjaCA9PSAweDdGKSB7IC8vIENvbnRyb2wgY2hh
cmFjdGVycy4KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAi
MDEyMzQ1Njc4OWFiY2RlZiI7CisgICAgICAgICAgICBWZWN0b3I8Y2hhciwgMj4gZGVzdGluYXRp
b247CisgICAgICAgICAgICBIZXhOdW1iZXI6OmFwcGVuZENoYXJUb1ZlY3RvcjxjaGFyLCAyPihj
aCwgZGVzdGluYXRpb24sIEhleE51bWJlcjo6TG93ZXJDYXNlIHwgSGV4TnVtYmVyOjpDb21wcmVz
c2VkKTsKKyAgICAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvbi5zaXplKCkgPD0gMik7CiAgICAg
ICAgICAgICBidWZmZXJbaW5kZXgrK10gPSAnXFwnOwotICAgICAgICAgICAgaWYgKGNoID49IDB4
MTApCi0gICAgICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW2NoID4+IDRd
OwotICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW2NoICYgMHhGXTsKKyAg
ICAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgICAgICBi
dWZmZXJbaW5kZXgrK10gPSBkZXN0aW5hdGlvblswXTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGRlc3RpbmF0aW9uWzBdOworICAgICAgICAg
ICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGRlc3RpbmF0aW9uWzFdOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgLy8gU3BhY2UgY2hhcmFjdGVyIG1heSBiZSByZXF1aXJlZCB0byBzZXBhcmF0ZSBiYWNr
c2xhc2gtZXNjYXBlIHNlcXVlbmNlIGFuZCBub3JtYWwgY2hhcmFjdGVycy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAjaW5j
bHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgiCkBAIC02MzMsNTggKzYzNSw1OCBAQCBTdHJpbmcgQ1NT
UHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19QRVJDRU5UQUdFOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSkgKyAiJSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92
YWx1ZS5udW0pLCAiJSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0VN
UzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImVtIjsK
KyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSks
ICJlbSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0VYUzoKLSAgICAg
ICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImV4IjsKKyAgICAgICAg
ICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJleCIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JFTVM6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJyZW0iOworICAgICAgICAgICAgdGV4
dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInJlbSIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BYOgotICAgICAgICAgICAgdGV4dCA9IGZv
cm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHgiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VT
dHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInB4Iik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfQ006Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJjbSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pLCAiY20iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU19NTToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pICsgIm1tIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSksICJtbSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X0lOOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiaW4i
OworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVt
KSwgImluIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUFQ6Ci0gICAg
ICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwdCI7CisgICAgICAg
ICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAicHQiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QQzoKLSAgICAgICAgICAgIHRl
eHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInBjIjsKKyAgICAgICAgICAgIHRleHQg
PSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJwYyIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0RFRzoKLSAgICAgICAgICAgIHRleHQgPSBmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pICsgImRlZyI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0
cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiZGVnIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJl
cihtX3ZhbHVlLm51bSkgKyAicmFkIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZv
cm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU19HUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSkgKyAiZ3JhZCI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pLCAiZ3JhZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTX01TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSkgKyAibXMiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSwgIm1zIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
UzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInMiOwor
ICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwg
InMiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19IWjoKLSAgICAgICAg
ICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImh6IjsKKyAgICAgICAgICAg
IHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJoeiIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0tIWjoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImtoeiI7CisgICAgICAgICAgICB0ZXh0ID0g
bWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAia2h6Iik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVFVSTjoKLSAgICAgICAgICAgIHRleHQgPSBmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pICsgInR1cm4iOworICAgICAgICAgICAgdGV4dCA9IG1ha2VT
dHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInR1cm4iKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU19ESU1FTlNJT046CiAgICAgICAgICAgICAvLyBGSVhNRQpA
QCAtNjkzLDIyICs2OTUsMTMgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkg
Y29ucwogICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5z
dHJpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1VSSToKLSAgICAg
ICAgICAgIHRleHQgPSAidXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5n
KSArICIpIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKCJ1cmwoIiwgcXVvdGVDU1NV
UkxJZk5lZWRlZChtX3ZhbHVlLnN0cmluZyksICcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfSURFTlQ6CiAgICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5
TmFtZShtX3ZhbHVlLmlkZW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19BVFRSOiB7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywg
YXR0clBhcmVuLCAoImF0dHIoIikpOwotCi0gICAgICAgICAgICBWZWN0b3I8VUNoYXI+IHJlc3Vs
dDsKLSAgICAgICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDYgKyBtX3ZhbHVl
LnN0cmluZy0+bGVuZ3RoKCkpOwotCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBhdHRyUGFy
ZW4pOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgbV92YWx1ZS5zdHJpbmcpOwotICAgICAg
ICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZCgnKScpOwotCi0gICAgICAgICAgICB0ZXh0ID0g
U3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoImF0
dHIoIiwgU3RyaW5nKG1fdmFsdWUuc3RyaW5nKSwgJyknKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKQEAgLTcxNyw4NiArNzEw
LDU4IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAgICAg
ICAgIHRleHQgKz0gIikiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NP
VU5URVI6Ci0gICAgICAgICAgICB0ZXh0ID0gImNvdW50ZXIoIjsKLSAgICAgICAgICAgIHRleHQg
Kz0gU3RyaW5nOjpudW1iZXIobV92YWx1ZS5udW0pOwotICAgICAgICAgICAgdGV4dCArPSAiKSI7
CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZygiY291bnRlcigiLCBTdHJpbmc6Om51bWJl
cihtX3ZhbHVlLm51bSksICcpJyk7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGxpc3Qtc3R5
bGUgYW5kIHNlcGFyYXRvcgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JF
Q1Q6IHsKLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByZWN0
UGFyZW4sICgicmVjdCgiKSk7Ci0KICAgICAgICAgICAgIFJlY3QqIHJlY3RWYWwgPSBnZXRSZWN0
VmFsdWUoKTsKLSAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAgICAgICAg
cmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMzIpOwotICAgICAgICAgICAgYXBwZW5kKHJl
c3VsdCwgcmVjdFBhcmVuKTsKLQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+
dG9wKCktPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0KLSAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJlY3RWYWwtPnJpZ2h0KCktPmNzc1RleHQoKSk7Ci0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgICAgIGFwcGVuZChyZXN1
bHQsIHJlY3RWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICcpOwotCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZWN0VmFsLT5sZWZ0KCkt
PmNzc1RleHQoKSk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0KLSAgICAgICAg
ICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgICAgICAgICB0ZXh0ID0gbWFr
ZVN0cmluZygicmVjdCgiLCByZWN0VmFsLT50b3AoKS0+Y3NzVGV4dCgpLCAnICcsIHJlY3RWYWwt
PnJpZ2h0KCktPmNzc1RleHQoKSwgJyAnLCByZWN0VmFsLT5ib3R0b20oKS0+Y3NzVGV4dCgpLCAn
ICcsIHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpLCAnKScpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CiAgICAgICAgIGNhc2UgQ1NT
X1BBUlNFUl9IRVhDT0xPUjogewotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIGNvbW1hU3BhY2UsICgiLCAiKSk7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgcmdiUGFyZW4sICgicmdiKCIpKTsKLSAgICAgICAgICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByZ2JhUGFyZW4sICgicmdiYSgiKSk7Ci0K
ICAgICAgICAgICAgIFJHQkEzMiByZ2JDb2xvciA9IG1fdmFsdWUucmdiY29sb3I7CiAgICAgICAg
ICAgICBpZiAobV90eXBlID09IENTU19QQVJTRVJfSEVYQ09MT1IpCiAgICAgICAgICAgICAgICAg
Q29sb3I6OnBhcnNlSGV4Q29sb3IobV92YWx1ZS5zdHJpbmcsIHJnYkNvbG9yKTsKKwogICAgICAg
ICAgICAgQ29sb3IgY29sb3IocmdiQ29sb3IpOwogCi0gICAgICAgICAgICBWZWN0b3I8VUNoYXI+
IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDMyKTsK
KyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIu
cmVzZXJ2ZUNhcGFjaXR5KDMyKTsKICAgICAgICAgICAgIGlmIChjb2xvci5oYXNBbHBoYSgpKQot
ICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJnYmFQYXJlbik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoInJnYmEoIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYXBwZW5kKHJlc3VsdCwgcmdiUGFyZW4pOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJyZ2IoIik7CiAKLSAgICAgICAgICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGNvbG9yLnJlZCgpKSk7Ci0gICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCBjb21tYVNwYWNlKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcoU3RyaW5nOjpudW1iZXIoY29sb3IucmVkKCkpLCAiLCAiKSk7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKFN0cmluZzo6bnVtYmVyKGNvbG9yLmdyZWVuKCkpLCAiLCAi
KSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihjb2xvci5ibHVl
KCkpKTsKIAotICAgICAgICAgICAgYXBwZW5kTnVtYmVyKHJlc3VsdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oY29sb3IuZ3JlZW4oKSkpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
Y29tbWFTcGFjZSk7Ci0KLSAgICAgICAgICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KGNvbG9yLmJsdWUoKSkpOwotICAgICAgICAgICAgaWYgKGNvbG9y
Lmhhc0FscGhhKCkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBjb21tYVNwYWNl
KTsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBTdHJpbmc6Om51bWJlcihjb2xvci5h
bHBoYSgpIC8gMjU2LjBmKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29sb3Iu
aGFzQWxwaGEoKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIs
ICIsIFN0cmluZzo6bnVtYmVyKGNvbG9yLmFscGhhKCkgLyAyNTYuMGYpKSk7CiAKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLSAgICAgICAgICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0
KHJlc3VsdCk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOworICAgICAgICAgICAg
dGV4dCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5wYWly
LT5maXJzdCgpLT5jc3NUZXh0KCk7Ci0gICAgICAgICAgICB0ZXh0ICs9ICIgIjsKLSAgICAgICAg
ICAgIHRleHQgKz0gbV92YWx1ZS5wYWlyLT5zZWNvbmQoKS0+Y3NzVGV4dCgpOworICAgICAgICAg
ICAgdGV4dCA9IG1ha2VTdHJpbmcobV92YWx1ZS5wYWlyLT5maXJzdCgpLT5jc3NUZXh0KCksICcg
JywgbV92YWx1ZS5wYWlyLT5zZWNvbmQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIGJyZWFr
OwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICAgICAgY2FzZSBDU1NfREFTSEJP
QVJEX1JFR0lPTjoKKyAgICAgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjogeworICAgICAg
ICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRS
ZWdpb24qIHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9u
ID0gcmVnaW9uLT5tX25leHQuZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgICAgIHRleHQgKz0gImRhc2hib2FyZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0ZXh0
ICs9IHJlZ2lvbi0+bV9sYWJlbDsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0
eSgpKQorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoImRhc2hib2FyZC1yZWdpb24oIiwgcmVn
aW9uLT5tX2xhYmVsKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkK
LSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiIGNpcmNsZSI7CisgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIgY2lyY2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
cmVnaW9uLT5tX2lzUmVjdGFuZ2xlKQotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgcmVj
dGFuZ2xlIjsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCIgcmVjdGFuZ2xlIik7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHRleHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAocmVnaW9u
LT50b3AoKS0+bV90eXBlID09IENTU19JREVOVCAmJiByZWdpb24tPnRvcCgpLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlSW52YWxpZCkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9u
LT5yaWdodCgpLT5tX3R5cGUgPT0gQ1NTX0lERU5UKTsKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHJlZ2lvbi0+Ym90dG9tKCktPm1fdHlwZSA9PSBDU1NfSURFTlQpOwpAQCAtODA1LDE1ICs3
NzAsMTcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5ib3R0b20oKS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZUludmFsaWQpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5sZWZ0KCkt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAg
ICAgICB0ZXh0ICs9IHJlZ2lvbi0+dG9wKCktPmNzc1RleHQoKSArICIgIjsKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dCArPSByZWdpb24tPnJpZ2h0KCktPmNzc1RleHQoKSArICIgIjsKLSAgICAg
ICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPmJvdHRvbSgpLT5jc3NUZXh0KCkgKyAiICI7
Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKTsK
KyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhyZWdpb24tPnRvcCgpLT5jc3NUZXh0KCks
ICcgJykpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKHJl
Z2lvbi0+cmlnaHQoKS0+Y3NzVGV4dCgpLCAnICcpKTsKKyAgICAgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZyhyZWdpb24tPmJvdHRvbSgpLT5jc3NUZXh0KCksICcgJykp
OworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChyZWdpb24tPmxlZnQoKS0+Y3Nz
VGV4dCgpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGV4dCArPSAiKSI7
CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHRleHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9PUEVSQVRPUjogewog
ICAgICAgICAgICAgY2hhciBjID0gc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1ZS5pZGVudCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCShyZXZpc2lv
biA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC01MSwyMyArNTIsMjMgQEAgc3RhdGljIGJvb2wgaXNWYWxpZEF0dHJpYnV0ZU5h
bWUoY29uc3QgUwogCiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRBdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0
eU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIFZlY3RvcjxVQ2hhcj4gbmV3U3RyaW5n
QnVmZmVyOworICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKIAogICAgIGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzID0gbmFtZS5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbmFtZS5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSA1OyBpIDwgbGVuZ3RoOyAr
K2kpIHsKICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gIT0gJy0nKQotICAgICAgICAgICAgbmV3
U3RyaW5nQnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJzW2ldKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKGNoYXJhY3RlcnNbaV0pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IGlmICgoaSArIDEgPCBsZW5ndGgpICYmIGlzQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2kgKyAxXSkp
IHsKLSAgICAgICAgICAgICAgICBuZXdTdHJpbmdCdWZmZXIuYXBwZW5kKHRvQVNDSUlVcHBlcihj
aGFyYWN0ZXJzW2kgKyAxXSkpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHRvQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2kgKyAxXSkpOwogICAgICAgICAgICAgICAgICsraTsK
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBl
bmQoY2hhcmFjdGVyc1tpXSk7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Y2hhcmFjdGVyc1tpXSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gU3RyaW5nOjph
ZG9wdChuZXdTdHJpbmdCdWZmZXIpOworICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCk7CiB9CiAKIHN0YXRpYyBib29sIHByb3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1dGVOYW1lKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZU5hbWUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA4MDcxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxF
KFNWRykKQEAgLTMxMyw3ICszMTQsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OmlzU2NyaXB0Rm9y
RXZlbnRTdXBwCiAKIFN0cmluZyBTY3JpcHRFbGVtZW50OjpzY3JpcHRDb250ZW50KCkgY29uc3QK
IHsKLSAgICBWZWN0b3I8VUNoYXI+IHZhbDsKKyAgICBTdHJpbmdCdWlsZGVyIGNvbnRlbnQ7CiAg
ICAgVGV4dCogZmlyc3RUZXh0Tm9kZSA9IDA7CiAgICAgYm9vbCBmb3VuZE11bHRpcGxlVGV4dE5v
ZGVzID0gZmFsc2U7CiAKQEAgLTMyMywxMCArMzI0LDEwIEBAIFN0cmluZyBTY3JpcHRFbGVtZW50
OjpzY3JpcHRDb250ZW50KCkgY28KIAogICAgICAgICBUZXh0KiB0ID0gc3RhdGljX2Nhc3Q8VGV4
dCo+KG4pOwogICAgICAgICBpZiAoZm91bmRNdWx0aXBsZVRleHROb2RlcykKLSAgICAgICAgICAg
IGFwcGVuZCh2YWwsIHQtPmRhdGEoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh0LT5k
YXRhKCkpOwogICAgICAgICBlbHNlIGlmIChmaXJzdFRleHROb2RlKSB7Ci0gICAgICAgICAgICBh
cHBlbmQodmFsLCBmaXJzdFRleHROb2RlLT5kYXRhKCkpOwotICAgICAgICAgICAgYXBwZW5kKHZh
bCwgdC0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGZpcnN0VGV4dE5vZGUt
PmRhdGEoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh0LT5kYXRhKCkpOwogICAgICAg
ICAgICAgZm91bmRNdWx0aXBsZVRleHROb2RlcyA9IHRydWU7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgZmlyc3RUZXh0Tm9kZSA9IHQ7CkBAIC0zMzUsNyArMzM2LDcgQEAgU3RyaW5nIFNj
cmlwdEVsZW1lbnQ6OnNjcmlwdENvbnRlbnQoKSBjbwogICAgIGlmIChmaXJzdFRleHROb2RlICYm
ICFmb3VuZE11bHRpcGxlVGV4dE5vZGVzKQogICAgICAgICByZXR1cm4gZmlyc3RUZXh0Tm9kZS0+
ZGF0YSgpOwogCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQodmFsKTsKKyAgICByZXR1cm4gY29u
dGVudC50b1N0cmluZygpOwogfQogCiBTY3JpcHRFbGVtZW50KiB0b1NjcmlwdEVsZW1lbnQoRWxl
bWVudCogZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hh
bmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNo
YW5nZS5jcHAJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1M
SW50ZXJjaGFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVk
ZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Niw3ICs1OCw3IEBA
IFN0cmluZyBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWEKICAgICBpZiAobm9kZS0+
cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUo
KSkKICAgICAgICAgcmV0dXJuIGluOwogCi0gICAgVmVjdG9yPFVDaGFyPiBzOworICAgIFN0cmlu
Z0J1aWxkZXIgczsKIAogICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIHVuc2lnbmVkIGNvbnN1bWVk
ID0gMDsKQEAgLTczLDMwICs3NSwyNSBAQCBTdHJpbmcgY29udmVydEhUTUxUZXh0VG9JbnRlcmNo
YW5nZUZvcm1hCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWRkID0gY291bnQgJSAzOwogICAg
ICAgICAgICAgICAgIHN3aXRjaCAoYWRkKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChzLCBjb252ZXJ0ZWRTcGFjZVN0cmluZygp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmQocywgY29udmVydGVkU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzLmFwcGVuZChtYWtlU3RyaW5nKGNvbnZlcnRlZFNwYWNlU3RyaW5nKCks
ICcgJywgY29udmVydGVkU3BhY2VTdHJpbmcoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YWRkID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwIHx8IGkgKyAx
ID09IGluLmxlbmd0aCgpKSAvLyBhdCBzdGFydCBvciBlbmQgb2Ygc3RyaW5nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKHMsIGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0g
MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCBzdGFydCBvZiBzdHJpbmcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQocywgY29udmVydGVkU3BhY2VTdHJp
bmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoJyAnKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChtYWtlU3RyaW5nKGNvbnZlcnRlZFNwYWNl
U3RyaW5nKCksICcgJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpICsg
MiA9PSBpbi5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCBl
bmQgb2Ygc3RyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHMsIGNvbnZl
cnRlZFNwYWNlU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChz
LCBjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHMsIGNvbnZlcnRlZFNwYWNl
U3RyaW5nKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcgJyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5h
cHBlbmQoY29udmVydGVkU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcy5hcHBlbmQoY29udmVydGVkU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChtYWtlU3Ry
aW5nKGNvbnZlcnRlZFNwYWNlU3RyaW5nKCksICcgJykpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNvdW50IC09IGFk
ZDsKQEAgLTEwNiw3ICsxMDMsNyBAQCBTdHJpbmcgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5n
ZUZvcm1hCiAgICAgICAgIGkgKz0gY29uc3VtZWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFN0cmlu
Zzo6YWRvcHQocyk7CisgICAgcmV0dXJuIHMudG9TdHJpbmcoKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVs
YXRvci5jcHAJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJr
dXBBY2N1bXVsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorLy8gRklYTUU6
IFRoZSB3aG9sZSBmaWxlIHNob3VsZCBzd2l0Y2ggdG8gdXNlIFN0cmluZ0J1aWxkZXIvU3RyaW5n
Q29uY2F0ZW5hdGUuCit2b2lkIGFwcGVuZFN0cmluZ1RvVmVjdG9yKFZlY3RvcjxVQ2hhcj4mIG91
dCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgb3V0LmFwcGVuZChzdHJpbmcuY2hhcmFj
dGVycygpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCiB2b2lkIGFwcGVuZENoYXJhY3RlcnNSZXBs
YWNpbmdFbnRpdGllcyhWZWN0b3I8VUNoYXI+JiBvdXQsIGNvbnN0IFVDaGFyKiBjb250ZW50LCBz
aXplX3QgbGVuZ3RoLCBFbnRpdHlNYXNrIGVudGl0eU1hc2spCiB7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBTdHJpbmcsIGFtcFJlZmVyZW5jZSwgKCImYW1wOyIpKTsKQEAgLTY0LDcg
KzcwLDcgQEAgdm9pZCBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoVgogICAgICAg
ICBmb3IgKHNpemVfdCBtID0gMDsgbSA8IFdURl9BUlJBWV9MRU5HVEgoZW50aXR5TWFwcyk7ICsr
bSkgewogICAgICAgICAgICAgaWYgKGNvbnRlbnRbaV0gPT0gZW50aXR5TWFwc1ttXS5lbnRpdHkg
JiYgZW50aXR5TWFwc1ttXS5tYXNrICYgZW50aXR5TWFzaykgewogICAgICAgICAgICAgICAgIG91
dC5hcHBlbmQoY29udGVudCArIHBvc2l0aW9uQWZ0ZXJMYXN0RW50aXR5LCBpIC0gcG9zaXRpb25B
ZnRlckxhc3RFbnRpdHkpOwotICAgICAgICAgICAgICAgIGFwcGVuZChvdXQsIGVudGl0eU1hcHNb
bV0ucmVmZXJlbmNlKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmdUb1ZlY3RvcihvdXQs
IGVudGl0eU1hcHNbbV0ucmVmZXJlbmNlKTsKICAgICAgICAgICAgICAgICBwb3NpdGlvbkFmdGVy
TGFzdEVudGl0eSA9IGkgKyAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtMTQ5LDcgKzE1NSw3IEBAIHNpemVfdCBNYXJrdXBBY2N1bXVsYXRvcjo6dG90YWxMZW5n
dGgoY28KIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmNvbmNhdGVuYXRlTWFya3VwKFZlY3RvcjxV
Q2hhcj4mIG91dCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3VjY2VlZGluZ01h
cmt1cC5zaXplKCk7ICsraSkKLSAgICAgICAgYXBwZW5kKG91dCwgbV9zdWNjZWVkaW5nTWFya3Vw
W2ldKTsKKyAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0LCBtX3N1Y2NlZWRpbmdNYXJr
dXBbaV0pOwogfQogCiB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRBdHRyaWJ1dGVWYWx1
ZShWZWN0b3I8VUNoYXI+JiByZXN1bHQsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sIGRv
Y3VtZW50SXNIVE1MKQpAQCAtMTcxLDcgKzE3Nyw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6
OmFwcGVuZFF1b3RlZFVSTEEKICAgICAgICAgICAgICAgICBxdW90ZUNoYXIgPSAnXCcnOwogICAg
ICAgICB9CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVvdGVDaGFyKTsKLSAgICAgICAgYXBwZW5k
KHJlc3VsdCwgc3RyaXBwZWRVUkxTdHJpbmcpOworICAgICAgICBhcHBlbmRTdHJpbmdUb1ZlY3Rv
cihyZXN1bHQsIHN0cmlwcGVkVVJMU3RyaW5nKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChxdW90
ZUNoYXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQxLDEwICsyNDcsMTAgQEAgdm9p
ZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kTmFtZXNwYWNlKAogICAgIGlmIChmb3VuZE5TICE9
IG5hbWVzcGFjZVVSSS5pbXBsKCkpIHsKICAgICAgICAgbmFtZXNwYWNlcy5zZXQocHJlLCBuYW1l
c3BhY2VVUkkuaW1wbCgpKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICBh
cHBlbmQocmVzdWx0LCB4bWxuc0F0b20uc3RyaW5nKCkpOworICAgICAgICBhcHBlbmRTdHJpbmdU
b1ZlY3RvcihyZXN1bHQsIHhtbG5zQXRvbS5zdHJpbmcoKSk7CiAgICAgICAgIGlmICghcHJlZml4
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnOicpOwotICAgICAgICAg
ICAgYXBwZW5kKHJlc3VsdCwgcHJlZml4KTsKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZ1RvVmVj
dG9yKHJlc3VsdCwgcHJlZml4KTsKICAgICAgICAgfQogCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Jz0nKTsKQEAgLTI3NCw5ICsyODAsOSBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRU
ZXh0KFZlY3RvCiB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDb21tZW50KFZlY3RvcjxV
Q2hhcj4mIG91dCwgY29uc3QgU3RyaW5nJiBjb21tZW50KQogewogICAgIC8vIEZJWE1FOiBDb21t
ZW50IGNvbnRlbnQgaXMgbm90IGVzY2FwZWQsIGJ1dCBYTUxTZXJpYWxpemVyIChhbmQgcG9zc2li
bHkgb3RoZXIgY2FsbGVycykgc2hvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBpdCBpbmNsdWRl
cyAiLS0+Ii4KLSAgICBhcHBlbmQob3V0LCAiPCEtLSIpOwotICAgIGFwcGVuZChvdXQsIGNvbW1l
bnQpOwotICAgIGFwcGVuZChvdXQsICItLT4iKTsKKyAgICBhcHBlbmRTdHJpbmdUb1ZlY3Rvcihv
dXQsICI8IS0tIik7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0LCBjb21tZW50KTsKKyAg
ICBhcHBlbmRTdHJpbmdUb1ZlY3RvcihvdXQsICItLT4iKTsKIH0KIAogdm9pZCBNYXJrdXBBY2N1
bXVsYXRvcjo6YXBwZW5kRG9jdW1lbnRUeXBlKFZlY3RvcjxVQ2hhcj4mIHJlc3VsdCwgY29uc3Qg
RG9jdW1lbnRUeXBlKiBuKQpAQCAtMjg0LDM4ICsyOTAsMzggQEAgdm9pZCBNYXJrdXBBY2N1bXVs
YXRvcjo6YXBwZW5kRG9jdW1lbnRUeQogICAgIGlmIChuLT5uYW1lKCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhcHBlbmQocmVzdWx0LCAiPCFET0NUWVBFICIpOwotICAgIGFw
cGVuZChyZXN1bHQsIG4tPm5hbWUoKSk7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVzdWx0
LCAiPCFET0NUWVBFICIpOworICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKHJlc3VsdCwgbi0+bmFt
ZSgpKTsKICAgICBpZiAoIW4tPnB1YmxpY0lkKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFwcGVu
ZChyZXN1bHQsICIgUFVCTElDIFwiIik7Ci0gICAgICAgIGFwcGVuZChyZXN1bHQsIG4tPnB1Ymxp
Y0lkKCkpOwotICAgICAgICBhcHBlbmQocmVzdWx0LCAiXCIiKTsKKyAgICAgICAgYXBwZW5kU3Ry
aW5nVG9WZWN0b3IocmVzdWx0LCAiIFBVQkxJQyBcIiIpOworICAgICAgICBhcHBlbmRTdHJpbmdU
b1ZlY3RvcihyZXN1bHQsIG4tPnB1YmxpY0lkKCkpOworICAgICAgICBhcHBlbmRTdHJpbmdUb1Zl
Y3RvcihyZXN1bHQsICJcIiIpOwogICAgICAgICBpZiAoIW4tPnN5c3RlbUlkKCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCAiIFwiIik7Ci0gICAgICAgICAgICBhcHBl
bmQocmVzdWx0LCBuLT5zeXN0ZW1JZCgpKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsICJc
IiIpOworICAgICAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVzdWx0LCAiIFwiIik7Cisg
ICAgICAgICAgICBhcHBlbmRTdHJpbmdUb1ZlY3RvcihyZXN1bHQsIG4tPnN5c3RlbUlkKCkpOwor
ICAgICAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVzdWx0LCAiXCIiKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAoIW4tPnN5c3RlbUlkKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFw
cGVuZChyZXN1bHQsICIgU1lTVEVNIFwiIik7Ci0gICAgICAgIGFwcGVuZChyZXN1bHQsIG4tPnN5
c3RlbUlkKCkpOwotICAgICAgICBhcHBlbmQocmVzdWx0LCAiXCIiKTsKKyAgICAgICAgYXBwZW5k
U3RyaW5nVG9WZWN0b3IocmVzdWx0LCAiIFNZU1RFTSBcIiIpOworICAgICAgICBhcHBlbmRTdHJp
bmdUb1ZlY3RvcihyZXN1bHQsIG4tPnN5c3RlbUlkKCkpOworICAgICAgICBhcHBlbmRTdHJpbmdU
b1ZlY3RvcihyZXN1bHQsICJcIiIpOwogICAgIH0KICAgICBpZiAoIW4tPmludGVybmFsU3Vic2V0
KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFwcGVuZChyZXN1bHQsICIgWyIpOwotICAgICAgICBh
cHBlbmQocmVzdWx0LCBuLT5pbnRlcm5hbFN1YnNldCgpKTsKLSAgICAgICAgYXBwZW5kKHJlc3Vs
dCwgIl0iKTsKKyAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVzdWx0LCAiIFsiKTsKKyAg
ICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVzdWx0LCBuLT5pbnRlcm5hbFN1YnNldCgpKTsK
KyAgICAgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IocmVzdWx0LCAiXSIpOwogICAgIH0KLSAgICBh
cHBlbmQocmVzdWx0LCAiPiIpOworICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKHJlc3VsdCwgIj4i
KTsKIH0KIAogdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0
aW9uKFZlY3RvcjxVQ2hhcj4mIG91dCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKIHsKICAgICAvLyBGSVhNRTogUEkgZGF0YSBpcyBub3QgZXNjYXBlZCwgYnV0IFhN
TFNlcmlhbGl6ZXIgKGFuZCBwb3NzaWJseSBvdGhlciBjYWxsZXJzKSB0aGlzIHNob3VsZCByYWlz
ZSBhbiBleGNlcHRpb24gaWYgaXQgaW5jbHVkZXMgIj8+Ii4KLSAgICBhcHBlbmQob3V0LCAiPD8i
KTsKLSAgICBhcHBlbmQob3V0LCB0YXJnZXQpOwotICAgIGFwcGVuZChvdXQsICIgIik7Ci0gICAg
YXBwZW5kKG91dCwgZGF0YSk7Ci0gICAgYXBwZW5kKG91dCwgIj8+Iik7CisgICAgYXBwZW5kU3Ry
aW5nVG9WZWN0b3Iob3V0LCAiPD8iKTsKKyAgICBhcHBlbmRTdHJpbmdUb1ZlY3RvcihvdXQsIHRh
cmdldCk7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0LCAiICIpOworICAgIGFwcGVuZFN0
cmluZ1RvVmVjdG9yKG91dCwgZGF0YSk7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0LCAi
Pz4iKTsKIH0KIAogdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudChWZWN0b3I8
VUNoYXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQsIE5hbWVzcGFjZXMqIG5hbWVzcGFjZXMpCkBA
IC0zMzMsNyArMzM5LDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudChW
ZQogdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kT3BlblRhZyhWZWN0b3I8VUNoYXI+JiBv
dXQsIEVsZW1lbnQqIGVsZW1lbnQsIE5hbWVzcGFjZXMqIG5hbWVzcGFjZXMpCiB7CiAgICAgb3V0
LmFwcGVuZCgnPCcpOwotICAgIGFwcGVuZChvdXQsIGVsZW1lbnQtPm5vZGVOYW1lUHJlc2Vydmlu
Z0Nhc2UoKSk7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0LCBlbGVtZW50LT5ub2RlTmFt
ZVByZXNlcnZpbmdDYXNlKCkpOwogICAgIGlmICghZWxlbWVudC0+ZG9jdW1lbnQoKS0+aXNIVE1M
RG9jdW1lbnQoKSAmJiBuYW1lc3BhY2VzICYmIHNob3VsZEFkZE5hbWVzcGFjZUVsZW1lbnQoZWxl
bWVudCkpCiAgICAgICAgIGFwcGVuZE5hbWVzcGFjZShvdXQsIGVsZW1lbnQtPnByZWZpeCgpLCBl
bGVtZW50LT5uYW1lc3BhY2VVUkkoKSwgKm5hbWVzcGFjZXMpOyAgICAKIH0KQEAgLTM1NSw5ICsz
NjEsOSBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRBdHRyaWJ1dGUoCiAgICAgb3V0
LmFwcGVuZCgnICcpOwogCiAgICAgaWYgKGRvY3VtZW50SXNIVE1MKQotICAgICAgICBhcHBlbmQo
b3V0LCBhdHRyaWJ1dGUubmFtZSgpLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgYXBwZW5kU3RyaW5n
VG9WZWN0b3Iob3V0LCBhdHRyaWJ1dGUubmFtZSgpLmxvY2FsTmFtZSgpKTsKICAgICBlbHNlCi0g
ICAgICAgIGFwcGVuZChvdXQsIGF0dHJpYnV0ZS5uYW1lKCkudG9TdHJpbmcoKSk7CisgICAgICAg
IGFwcGVuZFN0cmluZ1RvVmVjdG9yKG91dCwgYXR0cmlidXRlLm5hbWUoKS50b1N0cmluZygpKTsK
IAogICAgIG91dC5hcHBlbmQoJz0nKTsKIApAQCAtMzgxLDkgKzM4Nyw5IEBAIHZvaWQgTWFya3Vw
QWNjdW11bGF0b3I6OmFwcGVuZEF0dHJpYnV0ZSgKIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZENEQVRBU2VjdGlvbihWZWN0b3I8VUNoYXI+JiBvdXQsIGNvbnN0IFN0cmluZyYgc2VjdGlv
bikKIHsKICAgICAvLyBGSVhNRTogQ0RBVEEgY29udGVudCBpcyBub3QgZXNjYXBlZCwgYnV0IFhN
TFNlcmlhbGl6ZXIgKGFuZCBwb3NzaWJseSBvdGhlciBjYWxsZXJzKSBzaG91bGQgcmFpc2UgYW4g
ZXhjZXB0aW9uIGlmIGl0IGluY2x1ZGVzICJdXT4iLgotICAgIGFwcGVuZChvdXQsICI8IVtDREFU
QVsiKTsKLSAgICBhcHBlbmQob3V0LCBzZWN0aW9uKTsKLSAgICBhcHBlbmQob3V0LCAiXV0+Iik7
CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0LCAiPCFbQ0RBVEFbIik7CisgICAgYXBwZW5k
U3RyaW5nVG9WZWN0b3Iob3V0LCBzZWN0aW9uKTsKKyAgICBhcHBlbmRTdHJpbmdUb1ZlY3Rvcihv
dXQsICJdXT4iKTsKIH0KIAogdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RhcnRNYXJr
dXAoVmVjdG9yPFVDaGFyPiYgcmVzdWx0LCBjb25zdCBOb2RlKiBub2RlLCBOYW1lc3BhY2VzKiBu
YW1lc3BhY2VzKQpAQCAtNDU4LDcgKzQ2NCw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZEVuZE1hcmt1cCgKIAogICAgIHJlc3VsdC5hcHBlbmQoJzwnKTsKICAgICByZXN1bHQuYXBw
ZW5kKCcvJyk7Ci0gICAgYXBwZW5kKHJlc3VsdCwgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCo+
KG5vZGUpLT5ub2RlTmFtZVByZXNlcnZpbmdDYXNlKCkpOworICAgIGFwcGVuZFN0cmluZ1RvVmVj
dG9yKHJlc3VsdCwgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCo+KG5vZGUpLT5ub2RlTmFtZVBy
ZXNlcnZpbmdDYXNlKCkpOwogICAgIHJlc3VsdC5hcHBlbmQoJz4nKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuaAkocmV2aXNpb24gODA3MTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBwcml2YXRlOgogCiAvLyBGSVhNRTogVGhpcyBtZXRo
b2Qgc2hvdWxkIGJlIGludGVncmF0ZWQgd2l0aCBNYXJrdXBBY2N1bXVsYXRvci4KIHZvaWQgYXBw
ZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0aWVzKFZlY3RvcjxVQ2hhcj4mIG91dCwgY29uc3Qg
VUNoYXIqIGNvbnRlbnQsIHNpemVfdCBsZW5ndGgsIEVudGl0eU1hc2sgZW50aXR5TWFzayk7Cit2
b2lkIGFwcGVuZFN0cmluZ1RvVmVjdG9yKFZlY3RvcjxVQ2hhcj4mIG91dCwgY29uc3QgU3RyaW5n
Jik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJl
dmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNyBAQCBpbnQgbGFzdE9mZnNldEZvckVkaXRp
bmcoY29uc3QgTm9kZSogbm9kCiBTdHJpbmcgc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0YXJ0SXNTdGFydE9mUGFyYWdyYXBoLCBib29s
IGVuZElzRW5kT2ZQYXJhZ3JhcGgpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiByZWJhbGFuY2VkU3Ry
aW5nOwotICAgIGFwcGVuZChyZWJhbGFuY2VkU3RyaW5nLCBzdHJpbmcpOworICAgIHJlYmFsYW5j
ZWRTdHJpbmcuYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzKCksIHN0cmluZy5sZW5ndGgoKSk7CiAK
ICAgICBib29sIHByZXZpb3VzQ2hhcmFjdGVyV2FzU3BhY2UgPSBmYWxzZTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlYmFsYW5jZWRTdHJpbmcuc2l6ZSgpOyBpKyspIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDcgQEAg
dm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhTdAogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHlsZVNwYW5PcGVuLCAoIjxzcGFuIGNsYXNzPVwiIiBB
cHBsZVN0eWxlU3BhbkNsYXNzICJcIiBzdHlsZT1cIiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2UsICgiPC9zcGFuPiIpKTsKICAgICBWZWN0
b3I8VUNoYXI+IG9wZW5UYWc7Ci0gICAgYXBwZW5kKG9wZW5UYWcsIGlzQmxvY2sgPyBkaXZTdHls
ZSA6IHN0eWxlU3Bhbk9wZW4pOworICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKG9wZW5UYWcsIGlz
QmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOwogICAgIGFwcGVuZEF0dHJpYnV0ZVZh
bHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgp
KTsKICAgICBvcGVuVGFnLmFwcGVuZCgnXCInKTsKICAgICBvcGVuVGFnLmFwcGVuZCgnPicpOwpA
QCAtMTgwLDcgKzE4MCw3IEBAIFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dGFrZVJl
c3UKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b3RhbExlbmd0aChtX3JldmVy
c2VkUHJlY2VkaW5nTWFya3VwKSArIGxlbmd0aCgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSBt
X3JldmVyc2VkUHJlY2VkaW5nTWFya3VwLnNpemUoKTsgaSA+IDA7IC0taSkKLSAgICAgICAgYXBw
ZW5kKHJlc3VsdCwgbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cFtpIC0gMV0pOworICAgICAgICBh
cHBlbmRTdHJpbmdUb1ZlY3RvcihyZXN1bHQsIG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXBbaSAt
IDFdKTsKIAogICAgIGNvbmNhdGVuYXRlTWFya3VwKHJlc3VsdCk7CiAKQEAgLTE5OSw3ICsxOTks
NyBAQCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRUZXh0CiAgICAgU3RyaW5n
IGNvbnRlbnQgPSB1c2VSZW5kZXJlZFRleHQgPyByZW5kZXJlZFRleHQodGV4dCwgbV9yYW5nZSkg
OiBzdHJpbmdWYWx1ZUZvclJhbmdlKHRleHQsIG1fcmFuZ2UpOwogICAgIFZlY3RvcjxVQ2hhcj4g
YnVmZmVyOwogICAgIGFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyhidWZmZXIsIGNv
bnRlbnQuY2hhcmFjdGVycygpLCBjb250ZW50Lmxlbmd0aCgpLCBFbnRpdHlNYXNrSW5QQ0RBVEEp
OwotICAgIGFwcGVuZChvdXQsIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYXQoU3Ry
aW5nOjphZG9wdChidWZmZXIpLCB0ZXh0KSk7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3Iob3V0
LCBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KFN0cmluZzo6YWRvcHQoYnVmZmVy
KSwgdGV4dCkpOwogfQogICAgIAogU3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpyZW5k
ZXJlZFRleHQoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgUmFuZ2UqIHJhbmdlKQpAQCAtMzAzLDcg
KzMwMyw3IEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW0KICAgICAg
ICAgICAgIHJlbW92ZUV4dGVyaW9yU3R5bGVzKHN0eWxlLmdldCgpKTsKICAgICAgICAgaWYgKHN0
eWxlLT5sZW5ndGgoKSA+IDApIHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCBzdHlsZVByZWZpeCwgKCIgc3R5bGU9XCIiKSk7Ci0gICAgICAgICAgICBhcHBl
bmQob3V0LCBzdHlsZVByZWZpeCk7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdUb1ZlY3Rvcihv
dXQsIHN0eWxlUHJlZml4KTsKICAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwg
c3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAgICAgICAgb3V0LmFwcGVu
ZCgnXCInKTsKICAgICAgICAgfQpAQCAtOTA1LDExICs5MDUsMTEgQEAgU3RyaW5nIGNyZWF0ZUZ1
bGxNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbgogU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBWZWN0b3I8VUNoYXI+IG1hcmt1cDsK
LSAgICBhcHBlbmQobWFya3VwLCAiPGEgaHJlZj1cIiIpOwotICAgIGFwcGVuZChtYXJrdXAsIHVy
bC5zdHJpbmcoKSk7Ci0gICAgYXBwZW5kKG1hcmt1cCwgIlwiPiIpOworICAgIGFwcGVuZFN0cmlu
Z1RvVmVjdG9yKG1hcmt1cCwgIjxhIGhyZWY9XCIiKTsKKyAgICBhcHBlbmRTdHJpbmdUb1ZlY3Rv
cihtYXJrdXAsIHVybC5zdHJpbmcoKSk7CisgICAgYXBwZW5kU3RyaW5nVG9WZWN0b3IobWFya3Vw
LCAiXCI+Iik7CiAgICAgYXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0aWVzKG1hcmt1cCwg
dGl0bGUuY2hhcmFjdGVycygpLCB0aXRsZS5sZW5ndGgoKSwgRW50aXR5TWFza0luUENEQVRBKTsK
LSAgICBhcHBlbmQobWFya3VwLCAiPC9hPiIpOworICAgIGFwcGVuZFN0cmluZ1RvVmVjdG9yKG1h
cmt1cCwgIjwvYT4iKTsKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChtYXJrdXApOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBA
QAogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCiAKICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8
d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgpAQCAtNDU2LDE3ICs0NTcsMTMgQEAgdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpmcmFtZURldGFjaAogc3RhdGljIFN0cmluZyBjcmVhdGVSZWFkYWJs
ZVN0cmluZ0Zyb21CaW5hcnkoY29uc3QgdW5zaWduZWQgY2hhciogdmFsdWUsIHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA+IDApOwotICAgIHN0YXRpYyBjb25zdCBjaGFyIGhl
eERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7Ci0gICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBsZW5ndGggKiAzIC0gMTsKLSAgICBTdHJpbmdCdWZmZXIgYnVmZmVyKGJ1ZmZlclNpemUpOwot
ICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXI7CisgICAgYnVm
ZmVyLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoICogMyAtIDEpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgaWYgKGkgPiAwKQotICAgICAg
ICAgICAgYnVmZmVyW2luZGV4KytdID0gJzonOwotICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBo
ZXhEaWdpdHNbdmFsdWVbaV0gPj4gNF07Ci0gICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERp
Z2l0c1t2YWx1ZVtpXSAmIDB4Rl07CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCc6Jyk7Cisg
ICAgICAgIEhleE51bWJlcjo6YXBwZW5kQ2hhclRvVmVjdG9yPFVDaGFyPih2YWx1ZVtpXSwgYnVm
ZmVyLCBIZXhOdW1iZXI6OlVwcGVyQ2FzZSk7CiAgICAgfQotICAgIEFTU0VSVChpbmRleCA9PSBi
dWZmZXJTaXplKTsKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsOCBAQAogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTMwLDE5ICsxMzEsMTYgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VD
cm9zcwogICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJGaWVsZHMgPSByZXF1
ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsKIAogICAgIGlmIChyZXF1ZXN0SGVhZGVyRmllbGRzLnNp
emUoKSA+IDApIHsKLSAgICAgICAgVmVjdG9yPFVDaGFyPiBoZWFkZXJCdWZmZXI7CisgICAgICAg
IFN0cmluZ0J1aWxkZXIgaGVhZGVyQnVpbGRlcjsKICAgICAgICAgSFRUUEhlYWRlck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSByZXF1ZXN0SGVhZGVyRmllbGRzLmJlZ2luKCk7Ci0gICAgICAgIGFw
cGVuZChoZWFkZXJCdWZmZXIsIGl0LT5maXJzdCk7CisgICAgICAgIGhlYWRlckJ1aWxkZXIuYXBw
ZW5kKGl0LT5maXJzdCk7CiAgICAgICAgICsraXQ7CiAKICAgICAgICAgSFRUUEhlYWRlck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVxdWVzdEhlYWRlckZpZWxkcy5lbmQoKTsKLSAgICAgICAg
Zm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaGVhZGVyQnVmZmVyLmFwcGVu
ZCgnLCcpOwotICAgICAgICAgICAgaGVhZGVyQnVmZmVyLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgYXBwZW5kKGhlYWRlckJ1ZmZlciwgaXQtPmZpcnN0KTsKLSAgICAgICAgfQorICAgICAgICBm
b3IgKDsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgaGVhZGVyQnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZygiLCAiLCBpdC0+Zmlyc3Quc3RyaW5nKCkpKTsKIAotICAgICAgICBwcmVmbGln
aHRSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFk
ZXJzIiwgU3RyaW5nOjphZG9wdChoZWFkZXJCdWZmZXIpKTsKKyAgICAgICAgcHJlZmxpZ2h0UmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyIs
IGhlYWRlckJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRQcmlvcml0eShyZXF1ZXN0LnByaW9yaXR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKERPTV9TVE9S
QUdFKQogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKQEAgLTM5OSwxMyArNDAwLDEzIEBA
IHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXMKICAgICAgICAgICAgICAg
ICAgICAgRmlsZUxpc3QqIGZpbGVzID0gaW5wdXQtPmZpbGVzKCk7CiAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxpc3RTaXplID0gZmlsZXMtPmxlbmd0aCgpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAobGlzdFNpemUgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8
VUNoYXI+IG5hbWVzOworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBuYW1l
czsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNp
emU7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChuYW1lcywgZmls
ZXMtPml0ZW0oaSktPmZpbGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWVzLmFwcGVuZChmaWxlcy0+aXRlbShpKS0+ZmlsZU5hbWUoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGkgIT0gbGlzdFNpemUgLSAxKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lcy5hcHBlbmQoJ1xuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b29sVGlwID0gU3RyaW5nOjphZG9wdChuYW1lcyk7
CisgICAgICAgICAgICAgICAgICAgICAgICB0b29sVGlwID0gbmFtZXMudG9TdHJpbmcoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGZpbGVuYW1lIGFsd2F5cyBkaXNwbGF5IGFzIExUUi4K
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xUaXBEaXJlY3Rpb24gPSBMVFI7CiAgICAgICAg
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCShyZXZp
c2lvbiA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAtNDksNiArNDgs
NyBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRleHRS
ZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xOTIsMTQgKzE5MiwxNiBAQCB2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uCiAKIHZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCiB7Ci0gICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZiwgbV9kZWNvZGVyLT5k
ZWNvZGUoZGF0YSwgbGVuZ3RoKSk7CisgICAgU3RyaW5nIHN0cmluZyA9IG1fZGVjb2Rlci0+ZGVj
b2RlKGRhdGEsIGxlbmd0aCk7CisgICAgbV9yZWNlaXZlQnVmLmFwcGVuZChzdHJpbmcuY2hhcmFj
dGVycygpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgIHBhcnNlRXZlbnRTdHJlYW0oKTsKIH0KIAog
dm9pZCBFdmVudFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUp
CiB7CiAgICAgaWYgKG1fcmVjZWl2ZUJ1Zi5zaXplKCkgPiAwIHx8IG1fZGF0YS5zaXplKCkgPiAw
KSB7Ci0gICAgICAgIGFwcGVuZChtX3JlY2VpdmVCdWYsICJcblxuIik7CisgICAgICAgIG1fcmVj
ZWl2ZUJ1Zi5hcHBlbmQoJ1xuJyk7CisgICAgICAgIG1fcmVjZWl2ZUJ1Zi5hcHBlbmQoJ1xuJyk7
CiAgICAgICAgIHBhcnNlRXZlbnRTdHJlYW0oKTsKICAgICB9CiAgICAgbV9zdGF0ZSA9IENPTk5F
Q1RJTkc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNp
b24gODA3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgIk9yaWdpbkFjY2Vzc0VudHJ5
LmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
Mzg4LDE4ICszOTAsMTQgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0
CiAgICAgICAgIHJldHVybiAiZmlsZTovLyI7CiAgICAgfQogCi0gICAgVmVjdG9yPFVDaGFyPiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9wcm90b2NvbC5sZW5n
dGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKLSAgICBhcHBlbmQocmVzdWx0LCBtX3Byb3Rv
Y29sKTsKLSAgICBhcHBlbmQocmVzdWx0LCAiOi8vIik7Ci0gICAgYXBwZW5kKHJlc3VsdCwgbV9o
b3N0KTsKLQotICAgIGlmIChtX3BvcnQpIHsKLSAgICAgICAgYXBwZW5kKHJlc3VsdCwgIjoiKTsK
LSAgICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIobV9wb3J0KSk7Ci0gICAgfQor
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9w
cm90b2NvbC5sZW5ndGgoKSArIG1faG9zdC5sZW5ndGgoKSArIDEwKTsKKyAgICByZXN1bHQuYXBw
ZW5kKG1ha2VTdHJpbmcobV9wcm90b2NvbCwgIjovLyIsIG1faG9zdCkpOworCisgICAgaWYgKG1f
cG9ydCkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtYWtlU3RyaW5nKCI6IiwgU3RyaW5nOjpudW1i
ZXIobV9wb3J0KSkpOwogCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICBy
ZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3Ry
aW5nKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAJKHJldmlzaW9u
IDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5l
ZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCkBAIC03NSw4ICs3Nyw2IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFc2NhcGVVQ2hhcihVQ2gKICAgICByZXR1cm4gYyA+IDEy
NyA/IGZhbHNlIDogbmVlZHNFc2NhcGluZ1tjXTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgaGV4
RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLQogU3RyaW5nIGVuY29kZUZvckZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHIpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5w
dXRTdHIubGVuZ3RoKCk7CkBAIC05MCw4ICs5MCw3IEBAIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFt
ZShjb25zdCBTdHJpbmcmIGkKICAgICAgICAgVUNoYXIgYyA9ICpzdHIrKzsKICAgICAgICAgaWYg
KHNob3VsZEVzY2FwZVVDaGFyKGMpKSB7CiAgICAgICAgICAgICAqcCsrID0gJyUnOwotICAgICAg
ICAgICAgKnArKyA9IGhleERpZ2l0c1soYyA+PiA0KSAmIDB4Rl07Ci0gICAgICAgICAgICAqcCsr
ID0gaGV4RGlnaXRzW2MgJiAweEZdOworICAgICAgICAgICAgSGV4TnVtYmVyOjphcHBlbmRDaGFy
VG9WZWN0b3I8VUNoYXIsIDUxMj4oYywgYnVmZmVyLCBIZXhOdW1iZXI6OlVwcGVyQ2FzZSk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKnArKyA9IGM7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vS1VSTC5jcHAJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDEyIEBACiAjaW5jbHVk
ZSAiS1VSTC5oIgogCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hl
eE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiAjaWYgVVNFKElDVV9VTklDT0RFKQpAQCAtODksOCArOTIsNiBAQCBl
bnVtIFVSTENoYXJhY3RlckNsYXNzZXMgewogICAgIEJhZENoYXIgPSAxIDw8IDYKIH07CiAKLXN0
YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7Ci0KIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNoYXJhY3RlckNsYXNzVGFibGVbMjU2XSA9IHsKICAg
ICAvKiAwIG51bCAqLyBQYXRoU2VnbWVudEVuZENoYXIsICAgIC8qIDEgc29oICovIEJhZENoYXIs
CiAgICAgLyogMiBzdHggKi8gQmFkQ2hhciwgICAgLyogMyBldHggKi8gQmFkQ2hhciwKQEAgLTg2
OCw0NyArODY5LDMyIEBAIFN0cmluZyBLVVJMOjpwcmV0dHlVUkwoKSBjb25zdAogICAgIGlmICgh
bV9pc1ZhbGlkKQogICAgICAgICByZXR1cm4gbV9zdHJpbmc7CiAKLSAgICBWZWN0b3I8VUNoYXI+
IHJlc3VsdDsKLQotICAgIGFwcGVuZChyZXN1bHQsIHByb3RvY29sKCkpOwotICAgIHJlc3VsdC5h
cHBlbmQoJzonKTsKLQotICAgIFZlY3RvcjxVQ2hhcj4gYXV0aG9yaXR5OworICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5hcHBlbmQobWFrZVN0cmluZyhwcm90b2NvbCgpLCAn
OicpKTsKIAorICAgIFN0cmluZ0J1aWxkZXIgYXV0aG9yaXR5OwogICAgIGlmIChtX2hvc3RFbmQg
IT0gbV9wYXNzd29yZEVuZCkgewotICAgICAgICBpZiAobV91c2VyRW5kICE9IG1fdXNlclN0YXJ0
KSB7Ci0gICAgICAgICAgICBhcHBlbmQoYXV0aG9yaXR5LCB1c2VyKCkpOwotICAgICAgICAgICAg
YXV0aG9yaXR5LmFwcGVuZCgnQCcpOwotICAgICAgICB9Ci0gICAgICAgIGFwcGVuZChhdXRob3Jp
dHksIGhvc3QoKSk7Ci0gICAgICAgIGlmIChoYXNQb3J0KCkpIHsKLSAgICAgICAgICAgIGF1dGhv
cml0eS5hcHBlbmQoJzonKTsKLSAgICAgICAgICAgIGFwcGVuZChhdXRob3JpdHksIFN0cmluZzo6
bnVtYmVyKHBvcnQoKSkpOwotICAgICAgICB9CisgICAgICAgIGlmIChtX3VzZXJFbmQgIT0gbV91
c2VyU3RhcnQpCisgICAgICAgICAgICBhdXRob3JpdHkuYXBwZW5kKG1ha2VTdHJpbmcodXNlcigp
LCAnQCcpKTsKKyAgICAgICAgYXV0aG9yaXR5LmFwcGVuZChob3N0KCkpOworICAgICAgICBpZiAo
aGFzUG9ydCgpKQorICAgICAgICAgICAgYXV0aG9yaXR5LmFwcGVuZChtYWtlU3RyaW5nKCc6Jywg
U3RyaW5nOjpudW1iZXIocG9ydCgpKSkpOwogICAgIH0KIAotICAgIGlmICghYXV0aG9yaXR5Lmlz
RW1wdHkoKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKCcvJyk7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmQoJy8nKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChhdXRob3JpdHkpOwotICAgIH0gZWxz
ZSBpZiAocHJvdG9jb2xJcygiZmlsZSIpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJy8nKTsK
LSAgICAgICAgcmVzdWx0LmFwcGVuZCgnLycpOwotICAgIH0KKyAgICBpZiAoIWF1dGhvcml0eS5p
c0VtcHR5KCkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQobWFrZVN0cmluZygiLy8iLCBhdXRob3Jp
dHkudG9TdHJpbmcoKSkpOworICAgIGVsc2UgaWYgKHByb3RvY29sSXMoImZpbGUiKSkKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiLy8iKTsKIAotICAgIGFwcGVuZChyZXN1bHQsIHBhdGgoKSk7Cisg
ICAgcmVzdWx0LmFwcGVuZChwYXRoKCkpOwogCi0gICAgaWYgKG1fcGF0aEVuZCAhPSBtX3F1ZXJ5
RW5kKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJz8nKTsKLSAgICAgICAgYXBwZW5kKHJlc3Vs
dCwgcXVlcnkoKSk7Ci0gICAgfQorICAgIGlmIChtX3BhdGhFbmQgIT0gbV9xdWVyeUVuZCkKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChtYWtlU3RyaW5nKCc/JywgcXVlcnkoKSkpOwogCi0gICAgaWYg
KG1fZnJhZ21lbnRFbmQgIT0gbV9xdWVyeUVuZCkgewotICAgICAgICByZXN1bHQuYXBwZW5kKCcj
Jyk7Ci0gICAgICAgIGFwcGVuZChyZXN1bHQsIGZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICB9
CisgICAgaWYgKG1fZnJhZ21lbnRFbmQgIT0gbV9xdWVyeUVuZCkKKyAgICAgICAgcmVzdWx0LmFw
cGVuZChtYWtlU3RyaW5nKCcjJywgZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKIAotICAgIHJldHVy
biBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwog
fQogCiBTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyKQpA
QCAtOTY5LDkgKzk1NSwxMiBAQCBTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0
IFN0CiAvLyBDYXV0aW9uOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGJvdW5kcyBjaGVjay4KIHN0
YXRpYyB2b2lkIGFwcGVuZEVzY2FwZWRDaGFyKGNoYXIqJiBidWZmZXIsIHVuc2lnbmVkIGNoYXIg
YykKIHsKKyAgICBWZWN0b3I8Y2hhciwgMj4gZGVzdGluYXRpb247CisgICAgSGV4TnVtYmVyOjph
cHBlbmRDaGFyVG9WZWN0b3I8Y2hhciwgMj4oYywgZGVzdGluYXRpb24sIEhleE51bWJlcjo6VXBw
ZXJDYXNlKTsKKyAgICBBU1NFUlQoZGVzdGluYXRpb24uc2l6ZSgpID09IDIpOwogICAgICpidWZm
ZXIrKyA9ICclJzsKLSAgICAqYnVmZmVyKysgPSBoZXhEaWdpdHNbYyA+PiA0XTsKLSAgICAqYnVm
ZmVyKysgPSBoZXhEaWdpdHNbYyAmIDB4Rl07CisgICAgKmJ1ZmZlcisrID0gZGVzdGluYXRpb25b
MF07CisgICAgKmJ1ZmZlcisrID0gZGVzdGluYXRpb25bMV07CiB9CiAKIHN0YXRpYyB2b2lkIGFw
cGVuZEVzY2FwaW5nQmFkQ2hhcnMoY2hhciomIGJ1ZmZlciwgY29uc3QgY2hhciogc3RyU3RhcnQs
IHNpemVfdCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcAkocmV2aXNpb24g
ODA3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlVVSUQuaCIKIAogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogCiAjaWYgUExBVEZPUk0o
UVQpCiAjaW5jbHVkZSA8UVV1aWQ+CkBAIC0xMDAsMTcgKzEwMSwxOCBAQCBTdHJpbmcgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpCiAKICAgICAvLyBGb3JtYXQgYXMgVmVyc2lvbiA0IFVVSUQu
CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6
Zm9ybWF0KCIlMDh4IiwgcmFuZG9tRGF0YVswXSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEhleE51
bWJlcjo6dW5zaWduZWRUb1N0cmluZyhyYW5kb21EYXRhWzBdLCA4KSk7CiAgICAgYnVpbGRlci5h
cHBlbmQoIi0iKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTA0eCIsIHJh
bmRvbURhdGFbMV0gPj4gMTYpKTsKKyAgICBidWlsZGVyLmFwcGVuZChIZXhOdW1iZXI6OnVuc2ln
bmVkVG9TdHJpbmcocmFuZG9tRGF0YVsxXSA+PiAxNiwgNCkpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KCItNCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDN4IiwgcmFuZG9t
RGF0YVsxXSAmIDB4MDAwMDBmZmYpKTsKKyAgICBidWlsZGVyLmFwcGVuZChIZXhOdW1iZXI6OnVu
c2lnbmVkVG9TdHJpbmcocmFuZG9tRGF0YVsxXSAmIDB4MDAwMDBmZmYsIDMpKTsKICAgICBidWls
ZGVyLmFwcGVuZCgiLSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIleCIs
IChyYW5kb21EYXRhWzJdID4+IDMwKSB8IDB4OCkpOyAvLyBDb25kZW5zZSB0aGlzIGJ5dGUgdG8g
OCwgOSwgYSwgYW5kIGIuCi0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiUwM3gi
LCAocmFuZG9tRGF0YVsyXSA+PiAxNikgJiAweDAwMDAwZmZmKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoSGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKChyYW5kb21EYXRhWzJdID4+IDMwKSB8IDB4
OCwgMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEhleE51bWJlcjo6dW5zaWduZWRUb1N0cmluZygo
cmFuZG9tRGF0YVsyXSA+PiAxNikgJiAweDAwMDAwZmZmLCAzKSk7CiAgICAgYnVpbGRlci5hcHBl
bmQoIi0iKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTA0eCIsIHJhbmRv
bURhdGFbMl0gJiAweDAwMDBmZmZmKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3Jt
YXQoIiUwOHgiLCByYW5kb21EYXRhWzNdKSk7CisgICAgYnVpbGRlci5hcHBlbmQoSGV4TnVtYmVy
Ojp1bnNpZ25lZFRvU3RyaW5nKHJhbmRvbURhdGFbMl0gJiAweDAwMDBmZmZmLCA0KSk7CisgICAg
YnVpbGRlci5hcHBlbmQoSGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKHJhbmRvbURhdGFbM10s
IDgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiXG4iKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDEwICsyNywxMSBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAKICNpbmNsdWRlICJIYXNoVG9v
bHMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPG1hdGguaD4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTE4MCw0OSArMTgxLDIzIEBA
IENvbG9yOjpDb2xvcihjb25zdCBjaGFyKiBuYW1lKQogICAgIH0KIH0KIAotc3RhdGljIGlubGlu
ZSB2b2lkIGFwcGVuZEhleE51bWJlcihVQ2hhciogZGVzdGluYXRpb24sIHVpbnQ4X3QgbnVtYmVy
KQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OWFi
Y2RlZiI7Ci0KLSAgICBkZXN0aW5hdGlvblswXSA9IGhleERpZ2l0c1tudW1iZXIgPj4gNF07Ci0g
ICAgZGVzdGluYXRpb25bMV0gPSBoZXhEaWdpdHNbbnVtYmVyICYgMHhGXTsKLX0KLQogU3RyaW5n
IENvbG9yOjpzZXJpYWxpemVkKCkgY29uc3QKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgY29tbWFTcGFjZSwgKCIsICIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgcmdiYVBhcmVuLCAoInJnYmEoIikpOwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RyaW5nLCB6ZXJvUG9pbnRaZXJvLCAoIjAuMCIpKTsKLQotICAgIGlmICgh
aGFzQWxwaGEoKSkgewotICAgICAgICBVQ2hhciogY2hhcmFjdGVyczsKLSAgICAgICAgU3RyaW5n
IHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZCg3LCBjaGFyYWN0ZXJzKTsKLSAg
ICAgICAgY2hhcmFjdGVyc1swXSA9ICcjJzsKLSAgICAgICAgYXBwZW5kSGV4TnVtYmVyKGNoYXJh
Y3RlcnMgKyAxLCByZWQoKSk7Ci0gICAgICAgIGFwcGVuZEhleE51bWJlcihjaGFyYWN0ZXJzICsg
MywgZ3JlZW4oKSk7Ci0gICAgICAgIGFwcGVuZEhleE51bWJlcihjaGFyYWN0ZXJzICsgNSwgYmx1
ZSgpKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBWZWN0b3I8VUNoYXI+
IHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyOCk7CisgICAgaWYg
KCFoYXNBbHBoYSgpKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZygnIycsIEhleE51bWJlcjo6
Y2hhclRvU3RyaW5nKHJlZCgpKSwgSGV4TnVtYmVyOjpjaGFyVG9TdHJpbmcoZ3JlZW4oKSksIEhl
eE51bWJlcjo6Y2hhclRvU3RyaW5nKGJsdWUoKSkpOwogCi0gICAgYXBwZW5kKHJlc3VsdCwgcmdi
YVBhcmVuKTsKLSAgICBhcHBlbmROdW1iZXIocmVzdWx0LCByZWQoKSk7Ci0gICAgYXBwZW5kKHJl
c3VsdCwgY29tbWFTcGFjZSk7Ci0gICAgYXBwZW5kTnVtYmVyKHJlc3VsdCwgZ3JlZW4oKSk7Ci0g
ICAgYXBwZW5kKHJlc3VsdCwgY29tbWFTcGFjZSk7Ci0gICAgYXBwZW5kTnVtYmVyKHJlc3VsdCwg
Ymx1ZSgpKTsKLSAgICBhcHBlbmQocmVzdWx0LCBjb21tYVNwYWNlKTsKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoMjgpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKG1ha2VTdHJpbmcoInJnYmEoIiwgU3RyaW5nOjpudW1iZXIocmVkKCkpLCAiLCAi
LCBTdHJpbmc6Om51bWJlcihncmVlbigpKSwgIiwgIiwgU3RyaW5nOjpudW1iZXIoYmx1ZSgpKSwg
IiwgIikpOwogCiAgICAgLy8gTWF0Y2ggR2Vja28gKCIwLjAiIGZvciB6ZXJvLCA1IGRlY2ltYWxz
IGZvciBhbnl0aGluZyBlbHNlKQogICAgIGlmICghYWxwaGEoKSkKLSAgICAgICAgYXBwZW5kKHJl
c3VsdCwgemVyb1BvaW50WmVybyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
IjAuMCIpKTsKICAgICBlbHNlCi0gICAgICAgIGFwcGVuZChyZXN1bHQsIFN0cmluZzo6Zm9ybWF0
KCIlLjVmIiwgYWxwaGEoKSAvIDI1NS4wZikpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmc6OmZvcm1hdCgiJS41ZiIsIGFscGhhKCkgLyAyNTUuMGYpKTsKIAotICAgIHJlc3VsdC5hcHBl
bmQoJyknKTsKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgIGJ1aWxkZXIu
YXBwZW5kKCcpJyk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5n
IENvbG9yOjpuYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCShyZXZp
c2lvbiA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFC
dWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8
bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hleE51
bWJlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvUmFu
ZG9tTnVtYmVyLmg+CiAKQEAgLTE5Miw4ICsxOTMsNiBAQCB2b2lkIEZvcm1EYXRhQnVpbGRlcjo6
YWRkS2V5VmFsdWVQYWlyQXNGCiAKIHZvaWQgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdB
c0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVG
IjsKLQogICAgIC8vIFNhbWUgc2FmZSBjaGFyYWN0ZXJzIGFzIE5ldHNjYXBlIGZvciBjb21wYXRp
YmlsaXR5LgogICAgIHN0YXRpYyBjb25zdCBjaGFyIHNhZmVDaGFyYWN0ZXJzW10gPSAiLS5fKiI7
CiAKQEAgLTIxMCw4ICsyMDksNyBAQCB2b2lkIEZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5n
QXNGb3JtCiAgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCAiJTBEJTBBIik7CiAgICAgICAgIGVs
c2UgaWYgKGMgIT0gJ1xyJykgewogICAgICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgJyUnKTsKLSAg
ICAgICAgICAgIGFwcGVuZChidWZmZXIsIGhleERpZ2l0c1tjID4+IDRdKTsKLSAgICAgICAgICAg
IGFwcGVuZChidWZmZXIsIGhleERpZ2l0c1tjICYgMHhGXSk7CisgICAgICAgICAgICBIZXhOdW1i
ZXI6OmFwcGVuZENoYXJUb1ZlY3RvcjxjaGFyPihjLCBidWZmZXIsIEhleE51bWJlcjo6VXBwZXJD
YXNlKTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0U3RyZWFtLmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyAr
MTAzLDcgQEAgVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdAogCiBUZXh0
U3RyZWFtJiBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewot
ICAgIGFwcGVuZChtX3RleHQsIHN0cmluZyk7CisgICAgbV90ZXh0LmFwcGVuZChzdHJpbmcuY2hh
cmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2
aXNpb24gODA3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvVW51
c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTIwOSwxMSArMjEwLDExIEBAIFN0cmluZyBxdW90ZUFu
ZEVzY2FwZU5vblByaW50YWJsZXMoY29uc3QKICAgICAgICAgICAgIGlmIChjID49IDB4MjAgJiYg
YyA8IDB4N0YpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKTsKICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHUgPSBjOwotICAgICAgICAgICAgICAg
IFN0cmluZyBoZXggPSBTdHJpbmc6OmZvcm1hdCgiXFx4eyVYfSIsIHUpOwotICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbiA9IGhleC5sZW5ndGgoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoaGV4W2ldKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcXCcpOworICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3gnKTsKKyAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd7Jyk7CisgICAgICAgICAgICAgICAgSGV4TnVtYmVyOjphcHBlbmRVbnNpZ25lZFRv
VmVjdG9yPFVDaGFyPihjLCByZXN1bHQsIC0xLCBIZXhOdW1iZXI6OlVwcGVyQ2FzZSk7CisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfScpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85341</attachid>
            <date>2011-03-10 09:27:25 -0800</date>
            <delta_ts>2011-03-11 04:18:29 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>HexNumber.patch</filename>
            <type>text/plain</type>
            <size>52579</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA3MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTEtMDMtMTAgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFdURiBIZXhOdW1iZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MDk5CisKKyAgICAgICAgSW50cm9kdWNlIGEgY2xhc3MgdGhhdCBpcyBj
YXBhYmxlIG9mIGNvbnZlcnRpbmcgZnJvbSB1bnNpZ25lZCBjaGFyL3Vuc2lnbmVkIHRvIGEgU3Ry
aW5nCisgICAgICAgIG9yIGFwcGVuZCBvbmUvdHdvIG9yIG1vcmUgY2hhcmFjdGVycyB0byBhIFZl
Y3RvcjxjaGFyPi9WZWN0b3I8VUNoYXI+LCBpbiBvcmRlciB0byByZXBsYWNlCisgICAgICAgIHJl
cGVhdGluZyBhbnkgLT4gaGV4IGNvbnZlcnNpb25zIGFuZCBTdHJpbmc6OmZvcm1hdCgiJXgiKSB1
c2FnZXMgYWxsIG92ZXIgV2ViQ29yZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDog
RXhwb3J0IFN0cmluZ0J1aWxkZXI6OnJlc2VydmVDYXBhY2l0eS4KKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgSGV4TnVtYmVyLmggdG8gYnVp
bGQuCisgICAgICAgICogd3RmL0hleE51bWJlci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6SGV4
TnVtYmVyOjpjaGFyVG9TdHJpbmcpOiBOZXcgcHVibGljIEFQSSwgdG8gY29udmVydCBhIHVuc2ln
bmVkIGNoYXIgdG8gYSBoZXggc3RyaW5nLgorICAgICAgICAoV1RGOjpIZXhOdW1iZXI6OmFwcGVu
ZENoYXJUb1ZlY3Rvcik6IERpdHRvLCBidXQgYXBwZW5kcyB0byBhIFZlY3Rvci4KKyAgICAgICAg
KFdURjo6SGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKTogU2FtZSBmb3IgdW5zaWduZWQgbnVt
YmVycy4KKyAgICAgICAgKFdURjo6SGV4TnVtYmVyOjphcHBlbmRVbnNpZ25lZFRvVmVjdG9yKTog
RGl0dG8uCisgICAgICAgIChXVEY6OkhleE51bWJlcjo6dXNlQ29tcHJlc3NlZE1vZGUpOiBJbnRl
cm5hbCBoZWxwZXIuCisgICAgICAgIChXVEY6OkhleE51bWJlcjo6aGV4RGlnaXRzRm9yTW9kZSk6
IERpdHRvLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg6IEFkZCB2YXJp
YW50IGZvciBtYWtlU3RyaW5nLCB0YWtpbmcgOSBhcmd1bWVudHMuCisgICAgICAgIChXVEY6OnRy
eU1ha2VTdHJpbmcpOgorICAgICAgICAoV1RGOjptYWtlU3RyaW5nKToKKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDogUmVtb3ZlIGFwcGVuZChWZWN0b3I8VUNoYXI+LCB1bnNpZ25lZCBj
aGFyKSBmcmVlIGZ1bmN0aW9uLgorCiAyMDExLTAzLTA5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNA
cmltLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgV2luQ0UgYnVpbGQgYWZ0ZXIg
Y2hhbmdlc2V0IDgwNjg0IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC84MDY4ND4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24g
ODA3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODgsNiArMzg4LDcgQEAgX19aTjNXVEYxMmNyZWF0ZVRocmVhZEVQRlB2
UzBfRVMwX1BLYwogX19aTjNXVEYxMmRldGFjaFRocmVhZEVqCiBfX1pOM1dURjEyaXNNYWluVGhy
ZWFkRXYKIF9fWk4zV1RGMTJyYW5kb21OdW1iZXJFdgorX19aTjNXVEYxM1N0cmluZ0J1aWxkZXIx
NXJlc2VydmVDYXBhY2l0eUVqCiBfX1pOM1dURjEzU3RyaW5nQnVpbGRlcjExcmVpZnlTdHJpbmdF
dgogX19aTjNXVEYxM1N0cmluZ0J1aWxkZXIxMXNocmlua1RvRml0RXYKIF9fWk4zV1RGMTNTdHJp
bmdCdWlsZGVyNmFwcGVuZEVQS2NqCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw3
IEBACiAJCTY1REZDOTMzMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVERkM5MkQwOEVBMTczQTAw
RjczMDBCIC8qIEhhc2hUYWJsZS5jcHAgKi87IH07CiAJCTY1RTFBM0RGMTIyQjg5NDUwMEIyNjA5
NyAvKiBOb25Db3B5aW5nU29ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjVFMUEyRjQxMjJCODgwRDAwQjI2MDk3IC8qIE5vbkNvcHlpbmdTb3J0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVGREU0
OUMwQkREMUQ0QTAwRTgwMTExIC8qIEFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFMjE3QjgwOEU3RUVDQzAwMjNFNUY2IC8qIEFz
c2VydGlvbnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLW1pc3Np
bmctZm9ybWF0LWF0dHJpYnV0ZSI7IH07IH07CisJCTcxODZBNkVDMTMxMDBCQTUwMDQ0NzlFMSAv
KiBIZXhOdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcxODZBNkU4MTMxMDBCNTcwMDQ0NzlFMSAvKiBIZXhOdW1iZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NkZCOUYwRjEyRTg1MTg2MDA1
MUEyRUIgLyogU0hBMS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzZGQjlGMEUxMkU4NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NkZCOUYxMTEyRTg1MTk2MDA1MUEy
RUIgLyogU0hBMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NkZCOUYxMDEyRTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAgKi87IH07CiAJCTdFNEVF
NzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8q
IFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTg1MCw2ICs4NTEsNyBAQAogCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAg
LyogQ29tbW9uSWRlbnRpZmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbW1vbklkZW50aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjVFQTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MDRGRDM1MzA1Njk3RTZEMDAzREJFRDkgLyogQm9vbGVh
bk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCb29sZWFuT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKKwkJNzE4NkE2RTgxMzEwMEI1NzAwNDQ3OUUxIC8qIEhleE51bWJlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZXhOdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzZGQjlGMEUxMkU4NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU0hBMS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3NkZCOUYxMDEyRTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTSEExLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0UyQzZDOTgwRDMxQzZCNjAwMkQ0NEUyIC8qIFNjb3BlQ2hhaW5NYXJrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlQ2hhaW5NYXJrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNTY3LDYgKzE1NjksNyBAQAogCQkJCTY1REZDOTJEMDhFQTE3
M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwICovLAogCQkJCTY1REZDOTJFMDhFQTE3M0EwMEY3
MzAwQiAvKiBIYXNoVGFibGUuaCAqLywKIAkJCQk2NURGQzkyRjA4RUExNzNBMDBGNzMwMEIgLyog
SGFzaFRyYWl0cy5oICovLAorCQkJCTcxODZBNkU4MTMxMDBCNTcwMDQ0NzlFMSAvKiBIZXhOdW1i
ZXIuaCAqLywKIAkJCQk2NTdFQjc0NTBCNzA4RjU0MDA2MzQ2MUIgLyogTGlzdEhhc2hTZXQuaCAq
LywKIAkJCQkxNDhBMTYyNjA5NUQxNkJCMDA2NjZEMEQgLyogTGlzdFJlZlB0ci5oICovLAogCQkJ
CUUxRUU3OTI3MEQ2Qzk2NDUwMEZFQTNCQSAvKiBMb2NrZXIuaCAqLywKQEAgLTIyMDUsNiArMjIw
OCw3IEBACiAJCQkJQkMxOEM0MEQwRTE2RjVDRDAwQjM0NDYwIC8qIEhhc2hUYWJsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxOEM0MEUwRTE2RjVDRDAwQjM0NDYwIC8qIEhhc2hUcmFpdHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0MENERTcxMTJERTk3QjEwMDEzQ0ZDNSAvKiBIZWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MTg2QTZFQzEzMTAwQkE1MDA0NDc5RTEgLyogSGV4TnVtYmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTAwRTE2RjVDRDAwQjM0NDYwIC8qIEluaXRp
YWxpemVUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYx
RjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0hleE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvSGV4TnVtYmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0hleE51bWJlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmbmRlZiBIZXhOdW1iZXJfaAorI2RlZmluZSBIZXhOdW1iZXJfaAorCisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK2NsYXNzIEhleE51bWJlciB7CitwdWJsaWM6CisgICAgZW51bSBDb252ZXJzaW9uTW9kZSB7
CisgICAgICAgIExvd2VyQ2FzZSA9IDEgPDwgMCwKKyAgICAgICAgVXBwZXJDYXNlID0gMSA8PCAx
LAorICAgICAgICBDb21wcmVzc2VkID0gMSA8PCAyIC8vIGVnLiAjMDAwICh1c2VkIGluIHRoZSBD
U1NQYXJzZXIpCisgICAgfTsKKworICAgIHN0YXRpYyBTdHJpbmcgY2hhclRvU3RyaW5nKHVuc2ln
bmVkIGNoYXIgbnVtYmVyLCB1bnNpZ25lZCBtb2RlID0gTG93ZXJDYXNlKQorICAgIHsKKyAgICAg
ICAgY29uc3QgY2hhciogaGV4RGlnaXRzID0gaGV4RGlnaXRzRm9yTW9kZShtb2RlKTsKKyAgICAg
ICAgaWYgKHVzZUNvbXByZXNzZWRNb2RlKG1vZGUsIG51bWJlcikpCisgICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCZoZXhEaWdpdHNbbnVtYmVyICYgMHhGXSwgMSk7CisgICAgICAgIFZlY3RvcjxV
Q2hhciwgMj4gYnVmZmVyOworICAgICAgICBidWZmZXIucmVzaXplKDIpOworICAgICAgICBidWZm
ZXJbMF0gPSBoZXhEaWdpdHNbbnVtYmVyID4+IDRdOworICAgICAgICBidWZmZXJbMV0gPSBoZXhE
aWdpdHNbbnVtYmVyICYgMHhGXTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVy
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+CisgICAgc3RhdGljIHZvaWQgYXBwZW5kQ2hhclRvVmVjdG9yKHVuc2lnbmVkIGNoYXIgbnVt
YmVyLCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbW9k
ZSA9IExvd2VyQ2FzZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIqIGhleERpZ2l0cyA9IGhl
eERpZ2l0c0Zvck1vZGUobW9kZSk7CisgICAgICAgIGlmICh1c2VDb21wcmVzc2VkTW9kZShtb2Rl
LCBudW1iZXIpKSB7CisgICAgICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoaGV4RGlnaXRzW251
bWJlciAmIDB4Rl0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRl
c3RpbmF0aW9uLmFwcGVuZChoZXhEaWdpdHNbbnVtYmVyID4+IDRdKTsKKyAgICAgICAgZGVzdGlu
YXRpb24uYXBwZW5kKGhleERpZ2l0c1tudW1iZXIgJiAweEZdKTsKKyAgICB9CisKKyAgICAvLyBU
aGlzIGNhbiBiZSB1c2VkIHRvIHJlcGxhY2UgU3RyaW5nOjpmb3JtYXQoIiUwM3giLCAiJTA4WCIs
ICIleCIsICIlWCIpLCBieSBzcGVjaWZ5aW5nIGVpdGhlciBMb3dlckNhc2UvVXBwZXJDYXNlCisg
ICAgLy8gYW5kIGJ5IHNldHRpbmcgc3RvcEFmdGVyRGlnaXRzIHRvIHRoZSBkZXNpcmVkIG51bWJl
ciBvZiBkaWdpdHMuCisgICAgc3RhdGljIFN0cmluZyB1bnNpZ25lZFRvU3RyaW5nKHVuc2lnbmVk
IG51bWJlciwgaW50IHN0b3BBZnRlckRpZ2l0cyA9IC0xLCB1bnNpZ25lZCBtb2RlID0gTG93ZXJD
YXNlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEobW9kZSAmIENvbXByZXNzZWQpKTsgLy8gQ29t
cHJlc3NlZCBtb2RlIG9ubHkgYXZhaWxhYmxlIGZvciBhcHBlbmRUb1ZlY3RvcigpL2NoYXJUb1N0
cmluZygpLgorICAgICAgICBjb25zdCBjaGFyKiBoZXhEaWdpdHMgPSBoZXhEaWdpdHNGb3JNb2Rl
KG1vZGUpOworICAgICAgICBWZWN0b3I8VUNoYXIsIDg+IHJlc3VsdDsKKyAgICAgICAgaW50IGkg
PSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICByZXN1bHQucHJlcGVuZChoZXhEaWdpdHNb
bnVtYmVyICUgMTZdKTsKKyAgICAgICAgICAgIG51bWJlciA+Pj0gNDsKKyAgICAgICAgICAgICsr
aTsKKyAgICAgICAgfSB3aGlsZSAoc3RvcEFmdGVyRGlnaXRzID09IC0xID8gbnVtYmVyID4gMCA6
IGkgPCBzdG9wQWZ0ZXJEaWdpdHMpOworCisgICAgICAgIGlmIChzdG9wQWZ0ZXJEaWdpdHMgIT0g
LTEpCisgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQuc2l6ZSgpKSA9
PSBzdG9wQWZ0ZXJEaWdpdHMpOworICAgIAorICAgICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChy
ZXN1bHQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4KKyAgICBzdGF0aWMgdm9pZCBhcHBlbmRVbnNpZ25lZFRvVmVjdG9yKHVuc2lnbmVk
IG51bWJlciwgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgZGVzdGluYXRpb24sIGludCBzdG9w
QWZ0ZXJEaWdpdHMgPSAtMSwgdW5zaWduZWQgbW9kZSA9IExvd2VyQ2FzZSkKKyAgICB7CisgICAg
ICAgIC8vIFRoaXMgY291bGQgYmUgZWFzaWx5IG9wdGltaXplZCwgaWYgd2Ugc2VlIHRoZSBuZWVk
IGZvciBpdC4KKyAgICAgICAgU3RyaW5nIGhleFN0cmluZyA9IHVuc2lnbmVkVG9TdHJpbmcobnVt
YmVyLCBzdG9wQWZ0ZXJEaWdpdHMsIG1vZGUpOworICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQo
aGV4U3RyaW5nLmNoYXJhY3RlcnMoKSwgaGV4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgc3RhdGljIGJvb2wgdXNlQ29tcHJlc3NlZE1vZGUodW5zaWduZWQgbW9kZSwg
dW5zaWduZWQgY2hhciBudW1iZXIpCisgICAgeworICAgICAgICByZXR1cm4gbW9kZSAmIENvbXBy
ZXNzZWQgJiYgbnVtYmVyIDwgMHgxMDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
aGV4RGlnaXRzRm9yTW9kZSh1bnNpZ25lZCBtb2RlKQorICAgIHsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGNoYXIgc19sb3dlckhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyIHNfdXBwZXJIZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlB
QkNERUYiOworICAgICAgICByZXR1cm4gbW9kZSAmIExvd2VyQ2FzZSA/IHNfbG93ZXJIZXhEaWdp
dHMgOiBzX3VwcGVySGV4RGlnaXRzOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgor
Cit1c2luZyBXVEY6OkhleE51bWJlcjsKKworI2VuZGlmIC8vIEhleE51bWJlcl9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUu
aAkocmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDE2LDYgKzQxNiw1OSBAQCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyCiAgICAgcmV0dXJuIHJlc3VsdElt
cGw7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdU
eXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFt
ZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5cGVuYW1lIFN0cmluZ1R5cGU3
LCB0eXBlbmFtZSBTdHJpbmdUeXBlOCwgdHlwZW5hbWUgU3RyaW5nVHlwZTk+CitQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlw
ZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3Ry
aW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5n
NywgU3RyaW5nVHlwZTggc3RyaW5nOCwgU3RyaW5nVHlwZTkgc3RyaW5nOSkKK3sKKyAgICBTdHJp
bmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7CisgICAgU3RyaW5n
VHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOworICAgIFN0cmluZ1R5
cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKKyAgICBTdHJpbmdUeXBl
QWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CisgICAgU3RyaW5nVHlwZUFk
YXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOworICAgIFN0cmluZ1R5cGVBZGFw
dGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKKyAgICBTdHJpbmdUeXBlQWRhcHRl
cjxTdHJpbmdUeXBlNz4gYWRhcHRlcjcoc3RyaW5nNyk7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8
U3RyaW5nVHlwZTg+IGFkYXB0ZXI4KHN0cmluZzgpOworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0
cmluZ1R5cGU5PiBhZGFwdGVyOShzdHJpbmc5KTsKKworICAgIFVDaGFyKiBidWZmZXI7CisgICAg
Ym9vbCBvdmVyZmxvdyA9IGZhbHNlOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFkYXB0ZXIxLmxl
bmd0aCgpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIyLmxlbmd0aCgpLCBv
dmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjMubGVuZ3RoKCks
IG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNC5sZW5ndGgo
KSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI1Lmxlbmd0
aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjYubGVu
Z3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNy5s
ZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI4
Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRl
cjkubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpCisgICAgICAgIHJldHVy
biAwOworICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgIGlmICghcmVzdWx0
SW1wbCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOwor
ICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVu
Z3RoKCk7CisgICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFw
dGVyMi5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0
ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOworICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKKyAg
ICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7CisgICAgYWRhcHRlcjUud3JpdGVUbyhyZXN1
bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKKyAgICBhZGFwdGVyNi53cml0
ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0aCgpOworICAgIGFkYXB0
ZXI3LndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjcubGVuZ3RoKCk7Cisg
ICAgYWRhcHRlcjgud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyOC5sZW5n
dGgoKTsKKyAgICBhZGFwdGVyOS53cml0ZVRvKHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0
SW1wbDsKK30KKworCiAvLyBDb252ZW5pZW5jZSBvbmx5LgogdGVtcGxhdGU8dHlwZW5hbWUgU3Ry
aW5nVHlwZTE+CiBTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxKQpAQCAtNDg2
LDYgKzUzOSwxNSBAQCBTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTCiAg
ICAgcmV0dXJuIHJlc3VsdEltcGw7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUx
LCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0
cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5
cGVuYW1lIFN0cmluZ1R5cGU3LCB0eXBlbmFtZSBTdHJpbmdUeXBlOCwgdHlwZW5hbWUgU3RyaW5n
VHlwZTk+CitTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBl
MiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJp
bmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3
LCBTdHJpbmdUeXBlOCBzdHJpbmc4LCBTdHJpbmdUeXBlOSBzdHJpbmc5KQoreworICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3Ry
aW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNiwgc3RyaW5nNywgc3RyaW5n
OCwgc3RyaW5nOSk7CisgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICBDUkFTSCgpOworICAg
IHJldHVybiByZXN1bHRJbXBsOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RG
OjptYWtlU3RyaW5nOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0
cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZT
dHJpbmcuaAkocmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1OSwyNiArNDU5LDYgQEAgaW5saW5l
IHZvaWQgYXBwZW5kKFZlY3RvcjxVQ2hhcj4mIHZlY3RvcgogICAgIHZlY3Rvci5hcHBlbmQoc3Ry
aW5nLmNoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAotaW5saW5lIHZvaWQgYXBw
ZW5kTnVtYmVyKFZlY3RvcjxVQ2hhcj4mIHZlY3RvciwgdW5zaWduZWQgY2hhciBudW1iZXIpCi17
Ci0gICAgaW50IG51bWJlckxlbmd0aCA9IG51bWJlciA+IDk5ID8gMyA6IChudW1iZXIgPiA5ID8g
MiA6IDEpOwotICAgIHNpemVfdCB2ZWN0b3JTaXplID0gdmVjdG9yLnNpemUoKTsKLSAgICB2ZWN0
b3IuZ3Jvdyh2ZWN0b3JTaXplICsgbnVtYmVyTGVuZ3RoKTsKLQotICAgIHN3aXRjaCAobnVtYmVy
TGVuZ3RoKSB7Ci0gICAgY2FzZSAzOgotICAgICAgICB2ZWN0b3JbdmVjdG9yU2l6ZSArIDJdID0g
bnVtYmVyICUgMTAgKyAnMCc7Ci0gICAgICAgIG51bWJlciAvPSAxMDsKLQotICAgIGNhc2UgMjoK
LSAgICAgICAgdmVjdG9yW3ZlY3RvclNpemUgKyAxXSA9IG51bWJlciAlIDEwICsgJzAnOwotICAg
ICAgICBudW1iZXIgLz0gMTA7Ci0KLSAgICBjYXNlIDE6Ci0gICAgICAgIHZlY3Rvclt2ZWN0b3JT
aXplXSA9IG51bWJlciAlIDEwICsgJzAnOwotICAgIH0KLX0KLQogdGVtcGxhdGU8Ym9vbCBpc1Nw
ZWNpYWxDaGFyYWN0ZXIoVUNoYXIpPiBpbmxpbmUgYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJz
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKQEAgLTUwOSw3ICs0ODksNiBAQCB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFN0cmluZz4gCiB1c2luZyBXVEY6OkNTdHJpbmc7CiB1
c2luZyBXVEY6OlN0cmluZzsKIHVzaW5nIFdURjo6YXBwZW5kOwotdXNpbmcgV1RGOjphcHBlbmRO
dW1iZXI7CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNBcmVBbGxBU0NJSTsKIHVzaW5nIFdURjo6Y2hh
cmFjdGVyc0FyZUFsbExhdGluMTsKIHVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA3MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NiBAQAorMjAxMS0wMy0xMCAgTmlrb2xhcyBa
aW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGIEhleE51bWJlciBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwOTkKKwor
ICAgICAgICBJbnRyb2R1Y2UgYSBjbGFzcyB0aGF0IGlzIGNhcGFibGUgb2YgY29udmVydGluZyBm
cm9tIHVuc2lnbmVkIGNoYXIvdW5zaWduZWQgdG8gYSBTdHJpbmcKKyAgICAgICAgb3IgYXBwZW5k
IG9uZS90d28gb3IgbW9yZSBjaGFyYWN0ZXJzIHRvIGEgVmVjdG9yPGNoYXI+L1ZlY3RvcjxVQ2hh
cj4sIGluIG9yZGVyIHRvIHJlcGxhY2UKKyAgICAgICAgcmVwZWF0aW5nIGFueSAtPiBoZXggY29u
dmVyc2lvbnMgYW5kIFN0cmluZzo6Zm9ybWF0KCIleCIpIHVzYWdlcyBhbGwgb3ZlciBXZWJDb3Jl
LgorCisgICAgICAgIFN3aXRjaCBhIGZldyBwbGFjZXMgZnJvbSB1c2luZyBWZWN0b3I8VUNoYXI+
IHRvIFN0cmluZ0J1aWxkZXIsIHdoaWNoIGlzIG1vcmUgc3VpdGFibGUuCisKKyAgICAgICAgRG9l
c24ndCBhZmZlY3QgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVy
cy93dGYvSGV4TnVtYmVyLmg6IEFkZGVkLgorICAgICAgICAqIGNzcy9DU1NPTVV0aWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KToKKyAgICAg
ICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQ1NTU3RyaW5n
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQpOgorICAgICAgICAqIGRvbS9EYXRhc2V0RE9N
U3RyaW5nTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRBdHRyaWJ1dGVOYW1lVG9Q
cm9wZXJ0eU5hbWUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnNjcmlwdENvbnRlbnQpOgorICAgICAgICAqIGVkaXRp
bmcvSFRNTEludGVyY2hhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRIVE1MVGV4
dFRvSW50ZXJjaGFuZ2VGb3JtYXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJv
bUJpbmFyeSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09y
aWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnNldFRvb2xUaXApOgorICAgICAgICAqIHBh
Z2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRGaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5
c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVGb3JGaWxlTmFtZSk6CisgICAgICAg
ICogcGxhdGZvcm0vS1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwcmV0dHlVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRXNjYXBlZENoYXIpOgorICAgICAgICAqIHBsYXRm
b3JtL1VVSUQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29sb3I6OnNlcmlhbGl6ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGFCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhQnVpbGRlcjo6ZW5j
b2RlU3RyaW5nQXNGb3JtRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKToK
KwogMjAxMS0wMy0xMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBOb3QgcmV2aWV3ZWQ6IHJvbGxpbmcgb3V0IHI4MDQ3OCBhbmQgaXRzIGZvbGxvdyB1
cHMgZm9yIGJyZWFraW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvSGV4TnVtYmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL0hleE51bWJlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQg
QEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSGV4TnVtYmVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
SGV4TnVtYmVyX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZXhOdW1iZXIuaD4KKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NPTVV0aWxzLmgiCiAK
LSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw3ICs1MywxMCBAQCB2b2lkIHNlcmlhbGl6
ZUNoYXJhY3RlcihVQ2hhcjMyIGMsIFZlY3RvCiAKIHZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyQXND
b2RlUG9pbnQoVUNoYXIzMiBjLCBWZWN0b3I8VUNoYXI+JiBhcHBlbmRUbykKIHsKLSAgICBhcHBl
bmQoYXBwZW5kVG8sIFN0cmluZzo6Zm9ybWF0KCJcXCV4ICIsIGMpKTsKKyAgICBTdHJpbmcgaGV4
U3RyaW5nID0gSGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKGMpOworICAgIGFwcGVuZFRvLmFw
cGVuZCgnXFwnKTsKKyAgICBhcHBlbmRUby5hcHBlbmQoaGV4U3RyaW5nLmNoYXJhY3RlcnMoKSwg
aGV4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBhcHBlbmRUby5hcHBlbmQoJyAnKTsKIH0KIAogdm9p
ZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3RyaW5nJiBh
cHBlbmRUbykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA4MDcxMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgogI2luY2x1
ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5j
bHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAKQEAgLTYzOTgsMTEgKzYzOTksMTYgQEAgU3RyaW5n
IHF1b3RlQ1NTU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaQogICAgICAgICAgICAgYnVmZmVyW2lu
ZGV4KytdID0gY2g7CiAgICAgICAgICAgICBhZnRlckVzY2FwZSA9IGZhbHNlOwogICAgICAgICB9
IGVsc2UgaWYgKGNoIDwgMHgyMCB8fCBjaCA9PSAweDdGKSB7IC8vIENvbnRyb2wgY2hhcmFjdGVy
cy4KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAiMDEyMzQ1
Njc4OWFiY2RlZiI7CisgICAgICAgICAgICBWZWN0b3I8Y2hhciwgMj4gZGVzdGluYXRpb247Cisg
ICAgICAgICAgICBIZXhOdW1iZXI6OmFwcGVuZENoYXJUb1ZlY3RvcjxjaGFyLCAyPihjaCwgZGVz
dGluYXRpb24sIEhleE51bWJlcjo6TG93ZXJDYXNlIHwgSGV4TnVtYmVyOjpDb21wcmVzc2VkKTsK
KyAgICAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvbi5zaXplKCkgPD0gMik7CiAgICAgICAgICAg
ICBidWZmZXJbaW5kZXgrK10gPSAnXFwnOwotICAgICAgICAgICAgaWYgKGNoID49IDB4MTApCi0g
ICAgICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW2NoID4+IDRdOwotICAg
ICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW2NoICYgMHhGXTsKKyAgICAgICAg
ICAgIGlmIChkZXN0aW5hdGlvbi5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgICAgICBidWZmZXJb
aW5kZXgrK10gPSBkZXN0aW5hdGlvblswXTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGRlc3RpbmF0aW9uWzBdOworICAgICAgICAgICAgICAg
IGJ1ZmZlcltpbmRleCsrXSA9IGRlc3RpbmF0aW9uWzFdOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYWZ0ZXJFc2NhcGUgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
Ly8gU3BhY2UgY2hhcmFjdGVyIG1heSBiZSByZXF1aXJlZCB0byBzZXBhcmF0ZSBiYWNrc2xhc2gt
ZXNjYXBlIHNlcXVlbmNlIGFuZCBub3JtYWwgY2hhcmFjdGVycy4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw4IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg+CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAjaW5jbHVkZSAi
RGFzaGJvYXJkUmVnaW9uLmgiCkBAIC02MzMsNTggKzYzNSw1OCBAQCBTdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QRVJD
RU5UQUdFOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAi
JSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pLCAiJSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0VNUzoKLSAg
ICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImVtIjsKKyAgICAg
ICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJlbSIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0VYUzoKLSAgICAgICAgICAg
IHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImV4IjsKKyAgICAgICAgICAgIHRl
eHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJleCIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JFTVM6Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJyZW0iOworICAgICAgICAgICAgdGV4dCA9IG1h
a2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInJlbSIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BYOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51
bWJlcihtX3ZhbHVlLm51bSkgKyAicHgiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmco
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInB4Iik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfQ006Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFs
dWUubnVtKSArICJjbSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1i
ZXIobV92YWx1ZS5udW0pLCAiY20iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19NTToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsg
Im1tIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSksICJtbSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0lOOgot
ICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiaW4iOworICAg
ICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImlu
Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUFQ6Ci0gICAgICAgICAg
ICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwdCI7CisgICAgICAgICAgICB0
ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAicHQiKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QQzoKLSAgICAgICAgICAgIHRleHQgPSBm
b3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInBjIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtl
U3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJwYyIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX0RFRzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1i
ZXIobV92YWx1ZS5udW0pICsgImRlZyI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhm
b3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiZGVnIik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSkgKyAicmFkIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51
bWJlcihtX3ZhbHVlLm51bSksICJyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENTU19HUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSkgKyAiZ3JhZCI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pLCAiZ3JhZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX01TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAi
bXMiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUu
bnVtKSwgIm1zIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUzoKLSAg
ICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInMiOworICAgICAg
ICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInMiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19IWjoKLSAgICAgICAgICAgIHRl
eHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImh6IjsKKyAgICAgICAgICAgIHRleHQg
PSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJoeiIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0tIWjoKLSAgICAgICAgICAgIHRleHQgPSBmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pICsgImtoeiI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0
cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAia2h6Iik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfVFVSTjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1i
ZXIobV92YWx1ZS5udW0pICsgInR1cm4iOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmco
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInR1cm4iKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19ESU1FTlNJT046CiAgICAgICAgICAgICAvLyBGSVhNRQpAQCAtNjkz
LDIyICs2OTUsMTMgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwog
ICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1VSSToKLSAgICAgICAgICAg
IHRleHQgPSAidXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIp
IjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKCJ1cmwoIiwgcXVvdGVDU1NVUkxJZk5l
ZWRlZChtX3ZhbHVlLnN0cmluZyksICcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfSURFTlQ6CiAgICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFtZSht
X3ZhbHVlLmlkZW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19BVFRS
OiB7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgYXR0clBh
cmVuLCAoImF0dHIoIikpOwotCi0gICAgICAgICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLSAg
ICAgICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDYgKyBtX3ZhbHVlLnN0cmlu
Zy0+bGVuZ3RoKCkpOwotCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBhdHRyUGFyZW4pOwot
ICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgbV92YWx1ZS5zdHJpbmcpOwotICAgICAgICAgICAg
cmVzdWx0LnVuY2hlY2tlZEFwcGVuZCgnKScpOwotCi0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5n
OjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoImF0dHIoIiwg
U3RyaW5nKG1fdmFsdWUuc3RyaW5nKSwgJyknKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKQEAgLTcxNyw4NiArNzEwLDU4IEBA
IFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAgICAgICAgIHRl
eHQgKz0gIikiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVI6
Ci0gICAgICAgICAgICB0ZXh0ID0gImNvdW50ZXIoIjsKLSAgICAgICAgICAgIHRleHQgKz0gU3Ry
aW5nOjpudW1iZXIobV92YWx1ZS5udW0pOwotICAgICAgICAgICAgdGV4dCArPSAiKSI7CisgICAg
ICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZygiY291bnRlcigiLCBTdHJpbmc6Om51bWJlcihtX3Zh
bHVlLm51bSksICcpJyk7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGxpc3Qtc3R5bGUgYW5k
IHNlcGFyYXRvcgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JFQ1Q6IHsK
LSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByZWN0UGFyZW4s
ICgicmVjdCgiKSk7Ci0KICAgICAgICAgICAgIFJlY3QqIHJlY3RWYWwgPSBnZXRSZWN0VmFsdWUo
KTsKLSAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMzIpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
cmVjdFBhcmVuKTsKLQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+dG9wKCkt
PmNzc1RleHQoKSk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAg
ICAgIGFwcGVuZChyZXN1bHQsIHJlY3RWYWwtPnJpZ2h0KCktPmNzc1RleHQoKSk7Ci0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJl
Y3RWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICcpOwotCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZWN0VmFsLT5sZWZ0KCktPmNzc1Rl
eHQoKSk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0KLSAgICAgICAgICAgIHRl
eHQgPSBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmlu
ZygicmVjdCgiLCByZWN0VmFsLT50b3AoKS0+Y3NzVGV4dCgpLCAnICcsIHJlY3RWYWwtPnJpZ2h0
KCktPmNzc1RleHQoKSwgJyAnLCByZWN0VmFsLT5ib3R0b20oKS0+Y3NzVGV4dCgpLCAnICcsIHJl
Y3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpLCAnKScpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CiAgICAgICAgIGNhc2UgQ1NTX1BBUlNF
Ul9IRVhDT0xPUjogewotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGNvbW1hU3BhY2UsICgiLCAiKSk7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgcmdiUGFyZW4sICgicmdiKCIpKTsKLSAgICAgICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByZ2JhUGFyZW4sICgicmdiYSgiKSk7Ci0KICAgICAg
ICAgICAgIFJHQkEzMiByZ2JDb2xvciA9IG1fdmFsdWUucmdiY29sb3I7CiAgICAgICAgICAgICBp
ZiAobV90eXBlID09IENTU19QQVJTRVJfSEVYQ09MT1IpCiAgICAgICAgICAgICAgICAgQ29sb3I6
OnBhcnNlSGV4Q29sb3IobV92YWx1ZS5zdHJpbmcsIHJnYkNvbG9yKTsKKwogICAgICAgICAgICAg
Q29sb3IgY29sb3IocmdiQ29sb3IpOwogCi0gICAgICAgICAgICBWZWN0b3I8VUNoYXI+IHJlc3Vs
dDsKLSAgICAgICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDMyKTsKKyAgICAg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIucmVzZXJ2
ZUNhcGFjaXR5KDMyKTsKICAgICAgICAgICAgIGlmIChjb2xvci5oYXNBbHBoYSgpKQotICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJnYmFQYXJlbik7CisgICAgICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoInJnYmEoIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
YXBwZW5kKHJlc3VsdCwgcmdiUGFyZW4pOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJyZ2IoIik7CiAKLSAgICAgICAgICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGNvbG9yLnJlZCgpKSk7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0
LCBjb21tYVNwYWNlKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoU3Ry
aW5nOjpudW1iZXIoY29sb3IucmVkKCkpLCAiLCAiKSk7CisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKFN0cmluZzo6bnVtYmVyKGNvbG9yLmdyZWVuKCkpLCAiLCAiKSk7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihjb2xvci5ibHVlKCkpKTsK
IAotICAgICAgICAgICAgYXBwZW5kTnVtYmVyKHJlc3VsdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oY29sb3IuZ3JlZW4oKSkpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29tbWFT
cGFjZSk7Ci0KLSAgICAgICAgICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KGNvbG9yLmJsdWUoKSkpOwotICAgICAgICAgICAgaWYgKGNvbG9yLmhhc0Fs
cGhhKCkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBjb21tYVNwYWNlKTsKLSAg
ICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBTdHJpbmc6Om51bWJlcihjb2xvci5hbHBoYSgp
IC8gMjU2LjBmKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29sb3IuaGFzQWxw
aGEoKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIsICIsIFN0
cmluZzo6bnVtYmVyKGNvbG9yLmFscGhhKCkgLyAyNTYuMGYpKSk7CiAKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyknKTsKLSAgICAgICAgICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0KHJlc3Vs
dCk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOworICAgICAgICAgICAgdGV4dCA9
IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5wYWlyLT5maXJz
dCgpLT5jc3NUZXh0KCk7Ci0gICAgICAgICAgICB0ZXh0ICs9ICIgIjsKLSAgICAgICAgICAgIHRl
eHQgKz0gbV92YWx1ZS5wYWlyLT5zZWNvbmQoKS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgdGV4
dCA9IG1ha2VTdHJpbmcobV92YWx1ZS5wYWlyLT5maXJzdCgpLT5jc3NUZXh0KCksICcgJywgbV92
YWx1ZS5wYWlyLT5zZWNvbmQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2lm
IEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICAgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JF
R0lPTjoKKyAgICAgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjogeworICAgICAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24q
IHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVn
aW9uLT5tX25leHQuZ2V0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAg
IHRleHQgKz0gImRhc2hib2FyZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IHJl
Z2lvbi0+bV9sYWJlbDsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoImRhc2hib2FyZC1yZWdpb24oIiwgcmVnaW9uLT5t
X2xhYmVsKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKLSAgICAg
ICAgICAgICAgICAgICAgdGV4dCArPSAiIGNpcmNsZSI7CisgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCIgY2lyY2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVnaW9u
LT5tX2lzUmVjdGFuZ2xlKQotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgcmVjdGFuZ2xl
IjsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCIgcmVjdGFuZ2xlIik7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHRleHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAocmVnaW9uLT50b3Ao
KS0+bV90eXBlID09IENTU19JREVOVCAmJiByZWdpb24tPnRvcCgpLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlSW52YWxpZCkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5yaWdo
dCgpLT5tX3R5cGUgPT0gQ1NTX0lERU5UKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJl
Z2lvbi0+Ym90dG9tKCktPm1fdHlwZSA9PSBDU1NfSURFTlQpOwpAQCAtODA1LDE1ICs3NzAsMTcg
QEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQocmVnaW9uLT5ib3R0b20oKS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUlu
dmFsaWQpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5sZWZ0KCktPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgICAgICB0
ZXh0ICs9IHJlZ2lvbi0+dG9wKCktPmNzc1RleHQoKSArICIgIjsKLSAgICAgICAgICAgICAgICAg
ICAgdGV4dCArPSByZWdpb24tPnJpZ2h0KCktPmNzc1RleHQoKSArICIgIjsKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dCArPSByZWdpb24tPmJvdHRvbSgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAg
ICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhyZWdpb24tPnRvcCgpLT5jc3NUZXh0KCksICcgJykp
OworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKHJlZ2lvbi0+
cmlnaHQoKS0+Y3NzVGV4dCgpLCAnICcpKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZyhyZWdpb24tPmJvdHRvbSgpLT5jc3NUZXh0KCksICcgJykpOworICAg
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChyZWdpb24tPmxlZnQoKS0+Y3NzVGV4dCgp
KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGV4dCArPSAiKSI7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHRleHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9PUEVSQVRPUjogewogICAgICAg
ICAgICAgY2hhciBjID0gc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1ZS5pZGVudCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCShyZXZpc2lvbiA4MDcx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01MSwyMyArNTIsMjMgQEAgc3RhdGljIGJvb2wgaXNWYWxpZEF0dHJpYnV0ZU5hbWUoY29u
c3QgUwogCiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRBdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eU5hbWUo
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIFZlY3RvcjxVQ2hhcj4gbmV3U3RyaW5nQnVmZmVy
OworICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKIAogICAgIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzID0gbmFtZS5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbmFt
ZS5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSA1OyBpIDwgbGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gIT0gJy0nKQotICAgICAgICAgICAgbmV3U3RyaW5n
QnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJzW2ldKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGNoYXJhY3RlcnNbaV0pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICgo
aSArIDEgPCBsZW5ndGgpICYmIGlzQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2kgKyAxXSkpIHsKLSAg
ICAgICAgICAgICAgICBuZXdTdHJpbmdCdWZmZXIuYXBwZW5kKHRvQVNDSUlVcHBlcihjaGFyYWN0
ZXJzW2kgKyAxXSkpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvQVND
SUlVcHBlcihjaGFyYWN0ZXJzW2kgKyAxXSkpOwogICAgICAgICAgICAgICAgICsraTsKICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBlbmQoY2hh
cmFjdGVyc1tpXSk7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoY2hhcmFj
dGVyc1tpXSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChu
ZXdTdHJpbmdCdWZmZXIpOworICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKIHN0YXRpYyBib29sIHByb3BlcnR5TmFtZU1hdGNoZXNBdHRyaWJ1dGVOYW1lKGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZU5hbWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxFKFNWRykK
QEAgLTMxMyw3ICszMTQsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OmlzU2NyaXB0Rm9yRXZlbnRT
dXBwCiAKIFN0cmluZyBTY3JpcHRFbGVtZW50OjpzY3JpcHRDb250ZW50KCkgY29uc3QKIHsKLSAg
ICBWZWN0b3I8VUNoYXI+IHZhbDsKKyAgICBTdHJpbmdCdWlsZGVyIGNvbnRlbnQ7CiAgICAgVGV4
dCogZmlyc3RUZXh0Tm9kZSA9IDA7CiAgICAgYm9vbCBmb3VuZE11bHRpcGxlVGV4dE5vZGVzID0g
ZmFsc2U7CiAKQEAgLTMyMywxMCArMzI0LDEwIEBAIFN0cmluZyBTY3JpcHRFbGVtZW50OjpzY3Jp
cHRDb250ZW50KCkgY28KIAogICAgICAgICBUZXh0KiB0ID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG4p
OwogICAgICAgICBpZiAoZm91bmRNdWx0aXBsZVRleHROb2RlcykKLSAgICAgICAgICAgIGFwcGVu
ZCh2YWwsIHQtPmRhdGEoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh0LT5kYXRhKCkp
OwogICAgICAgICBlbHNlIGlmIChmaXJzdFRleHROb2RlKSB7Ci0gICAgICAgICAgICBhcHBlbmQo
dmFsLCBmaXJzdFRleHROb2RlLT5kYXRhKCkpOwotICAgICAgICAgICAgYXBwZW5kKHZhbCwgdC0+
ZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGZpcnN0VGV4dE5vZGUtPmRhdGEo
KSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh0LT5kYXRhKCkpOwogICAgICAgICAgICAg
Zm91bmRNdWx0aXBsZVRleHROb2RlcyA9IHRydWU7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgZmlyc3RUZXh0Tm9kZSA9IHQ7CkBAIC0zMzUsNyArMzM2LDcgQEAgU3RyaW5nIFNjcmlwdEVs
ZW1lbnQ6OnNjcmlwdENvbnRlbnQoKSBjbwogICAgIGlmIChmaXJzdFRleHROb2RlICYmICFmb3Vu
ZE11bHRpcGxlVGV4dE5vZGVzKQogICAgICAgICByZXR1cm4gZmlyc3RUZXh0Tm9kZS0+ZGF0YSgp
OwogCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQodmFsKTsKKyAgICByZXR1cm4gY29udGVudC50
b1N0cmluZygpOwogfQogCiBTY3JpcHRFbGVtZW50KiB0b1NjcmlwdEVsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5j
cHAJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJj
aGFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiVGV4
dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Niw3ICs1OCw3IEBAIFN0cmlu
ZyBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWEKICAgICBpZiAobm9kZS0+cmVuZGVy
ZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkKICAg
ICAgICAgcmV0dXJuIGluOwogCi0gICAgVmVjdG9yPFVDaGFyPiBzOworICAgIFN0cmluZ0J1aWxk
ZXIgczsKIAogICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIHVuc2lnbmVkIGNvbnN1bWVkID0gMDsK
QEAgLTczLDMwICs3NSwyNSBAQCBTdHJpbmcgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZv
cm1hCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWRkID0gY291bnQgJSAzOwogICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYWRkKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZChzLCBjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmQocywgY29udmVydGVkU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzLmFwcGVuZChtYWtlU3RyaW5nKGNvbnZlcnRlZFNwYWNlU3RyaW5nKCksICcgJywg
Y29udmVydGVkU3BhY2VTdHJpbmcoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYWRkID0g
MzsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwIHx8IGkgKyAxID09IGlu
Lmxlbmd0aCgpKSAvLyBhdCBzdGFydCBvciBlbmQgb2Ygc3RyaW5nCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kKHMsIGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMu
YXBwZW5kKCcgJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCBzdGFydCBvZiBzdHJpbmcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQocywgY29udmVydGVkU3BhY2VTdHJpbmcoKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLmFwcGVuZChtYWtlU3RyaW5nKGNvbnZlcnRlZFNwYWNlU3RyaW5n
KCksICcgJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpICsgMiA9PSBp
bi5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCBlbmQgb2Yg
c3RyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHMsIGNvbnZlcnRlZFNw
YWNlU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChzLCBjb252
ZXJ0ZWRTcGFjZVN0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHMsIGNvbnZlcnRlZFNwYWNlU3RyaW5n
KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcgJyk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQo
Y29udmVydGVkU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5h
cHBlbmQoY29udmVydGVkU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChtYWtlU3RyaW5nKGNv
bnZlcnRlZFNwYWNlU3RyaW5nKCksICcgJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNvdW50IC09IGFkZDsKQEAg
LTEwNiw3ICsxMDMsNyBAQCBTdHJpbmcgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1h
CiAgICAgICAgIGkgKz0gY29uc3VtZWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFN0cmluZzo6YWRv
cHQocyk7CisgICAgcmV0dXJuIHMudG9TdHJpbmcoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAkocmV2aXNpb24gODA3MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDcgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgogCiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KQEAgLTQ1NiwxNyArNDU3LDEzIEBAIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZnJhbWVEZXRhY2gKIHN0YXRpYyBTdHJpbmcgY3JlYXRl
UmVhZGFibGVTdHJpbmdGcm9tQmluYXJ5KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHZhbHVlLCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIEFTU0VSVChsZW5ndGggPiAwKTsKLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOwotICAgIHNpemVfdCBidWZm
ZXJTaXplID0gbGVuZ3RoICogMyAtIDE7Ci0gICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcihidWZmZXJT
aXplKTsKLSAgICBzaXplX3QgaW5kZXggPSAwOworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOwor
ICAgIGJ1ZmZlci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCAqIDMgLSAxKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlmIChpID4gMCkK
LSAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9ICc6JzsKLSAgICAgICAgYnVmZmVyW2luZGV4
KytdID0gaGV4RGlnaXRzW3ZhbHVlW2ldID4+IDRdOwotICAgICAgICBidWZmZXJbaW5kZXgrK10g
PSBoZXhEaWdpdHNbdmFsdWVbaV0gJiAweEZdOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgn
OicpOworICAgICAgICBIZXhOdW1iZXI6OmFwcGVuZENoYXJUb1ZlY3RvcjxVQ2hhcj4odmFsdWVb
aV0sIGJ1ZmZlciwgSGV4TnVtYmVyOjpVcHBlckNhc2UpOwogICAgIH0KLSAgICBBU1NFUlQoaW5k
ZXggPT0gYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDgg
QEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzAsMTkgKzEzMiwxNiBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzCiAgICAgY29uc3QgSFRUUEhl
YWRlck1hcCYgcmVxdWVzdEhlYWRlckZpZWxkcyA9IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygp
OwogCiAgICAgaWYgKHJlcXVlc3RIZWFkZXJGaWVsZHMuc2l6ZSgpID4gMCkgewotICAgICAgICBW
ZWN0b3I8VUNoYXI+IGhlYWRlckJ1ZmZlcjsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBoZWFkZXJC
dWlsZGVyOwogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlcXVl
c3RIZWFkZXJGaWVsZHMuYmVnaW4oKTsKLSAgICAgICAgYXBwZW5kKGhlYWRlckJ1ZmZlciwgaXQt
PmZpcnN0KTsKKyAgICAgICAgaGVhZGVyQnVpbGRlci5hcHBlbmQoaXQtPmZpcnN0KTsKICAgICAg
ICAgKytpdDsKIAogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBy
ZXF1ZXN0SGVhZGVyRmllbGRzLmVuZCgpOwotICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgICAgICBoZWFkZXJCdWZmZXIuYXBwZW5kKCcsJyk7Ci0gICAgICAgICAgICBo
ZWFkZXJCdWZmZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBhcHBlbmQoaGVhZGVyQnVmZmVy
LCBpdC0+Zmlyc3QpOwotICAgICAgICB9CisgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgICAgICBoZWFkZXJCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIsICIsIGl0LT5m
aXJzdC5zdHJpbmcoKSkpOwogCi0gICAgICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKCJBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnMiLCBTdHJpbmc6OmFkb3B0KGhl
YWRlckJ1ZmZlcikpOworICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzIiwgaGVhZGVyQnVpbGRlci50b1N0cmlu
ZygpKTsKICAgICB9CiAKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldFByaW9yaXR5KHJlcXVlc3Qu
cHJpb3JpdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiA4MDcxMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAjaW5jbHVkZSAiU3RvcmFn
ZU5hbWVzcGFjZS5oIgpAQCAtMzk5LDEzICs0MDAsMTMgQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xU
aXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAgICAgICAgICAgICBGaWxlTGlzdCogZmlsZXMg
PSBpbnB1dC0+ZmlsZXMoKTsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGlzdFNpemUg
PSBmaWxlcy0+bGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0U2l6ZSA+IDEp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gbmFtZXM7CisgICAgICAg
ICAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIG5hbWVzOwogICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKG5hbWVzLCBmaWxlcy0+aXRlbShpKS0+ZmlsZU5hbWUo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKGZpbGVzLT5pdGVt
KGkpLT5maWxlTmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSBs
aXN0U2l6ZSAtIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVu
ZCgnXG4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRvb2xUaXAgPSBTdHJpbmc6OmFkb3B0KG5hbWVzKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRvb2xUaXAgPSBuYW1lcy50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZmlsZW5hbWUgYWx3YXlzIGRpc3BsYXkgYXMgTFRSLgogICAgICAgICAgICAgICAgICAgICAg
ICAgdG9vbFRpcERpcmVjdGlvbiA9IExUUjsKICAgICAgICAgICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDgwNzExKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDggQEAKICNpbmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUg
IlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4OCwxOCArMzkwLDE0
IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBjb25zdAogICAgICAgICByZXR1
cm4gImZpbGU6Ly8iOwogICAgIH0KIAotICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgIHJl
c3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcHJvdG9jb2wubGVuZ3RoKCkgKyBtX2hvc3Qu
bGVuZ3RoKCkgKyAxMCk7Ci0gICAgYXBwZW5kKHJlc3VsdCwgbV9wcm90b2NvbCk7Ci0gICAgYXBw
ZW5kKHJlc3VsdCwgIjovLyIpOwotICAgIGFwcGVuZChyZXN1bHQsIG1faG9zdCk7Ci0KLSAgICBp
ZiAobV9wb3J0KSB7Ci0gICAgICAgIGFwcGVuZChyZXN1bHQsICI6Iik7Ci0gICAgICAgIGFwcGVu
ZChyZXN1bHQsIFN0cmluZzo6bnVtYmVyKG1fcG9ydCkpOwotICAgIH0KKyAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KG1fcHJvdG9jb2wubGVuZ3Ro
KCkgKyBtX2hvc3QubGVuZ3RoKCkgKyAxMCk7CisgICAgcmVzdWx0LmFwcGVuZChtYWtlU3RyaW5n
KG1fcHJvdG9jb2wsICI6Ly8iLCBtX2hvc3QpKTsKKworICAgIGlmIChtX3BvcnQpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQobWFrZVN0cmluZygiOiIsIFN0cmluZzo6bnVtYmVyKG1fcG9ydCkpKTsK
IAotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOwogfQogCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiA4MDcxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogCisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVkIGVzY2FwaW5nIHRv
IGJlIHVzZWQgaW4gYSBmaWxlbmFtZQpAQCAtNzUsOCArNzcsNiBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgc2hvdWxkRXNjYXBlVUNoYXIoVUNoCiAgICAgcmV0dXJuIGMgPiAxMjcgPyBmYWxzZSA6IG5l
ZWRzRXNjYXBpbmdbY107CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAi
MDEyMzQ1Njc4OUFCQ0RFRiI7Ci0KIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJp
bmcmIGlucHV0U3RyKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0U3RyLmxlbmd0aCgp
OwpAQCAtOTAsOCArOTAsNyBAQCBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5n
JiBpCiAgICAgICAgIFVDaGFyIGMgPSAqc3RyKys7CiAgICAgICAgIGlmIChzaG91bGRFc2NhcGVV
Q2hhcihjKSkgewogICAgICAgICAgICAgKnArKyA9ICclJzsKLSAgICAgICAgICAgICpwKysgPSBo
ZXhEaWdpdHNbKGMgPj4gNCkgJiAweEZdOwotICAgICAgICAgICAgKnArKyA9IGhleERpZ2l0c1tj
ICYgMHhGXTsKKyAgICAgICAgICAgIEhleE51bWJlcjo6YXBwZW5kQ2hhclRvVmVjdG9yPFVDaGFy
LCA1MTI+KGMsIGJ1ZmZlciwgSGV4TnVtYmVyOjpVcHBlckNhc2UpOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICpwKysgPSBjOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tVUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwu
Y3BwCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCwxMiBAQAogI2luY2x1ZGUgIktVUkwuaCIKIAog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAogI2lmIFVTRShJQ1VfVU5JQ09ERSkKQEAgLTg5LDggKzkyLDYgQEAgZW51bSBVUkxDaGFyYWN0
ZXJDbGFzc2VzIHsKICAgICBCYWRDaGFyID0gMSA8PCA2CiB9OwogCi1zdGF0aWMgY29uc3QgY2hh
ciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOwotCiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgY2hhciBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7CiAgICAgLyogMCBudWwgKi8g
UGF0aFNlZ21lbnRFbmRDaGFyLCAgICAvKiAxIHNvaCAqLyBCYWRDaGFyLAogICAgIC8qIDIgc3R4
ICovIEJhZENoYXIsICAgIC8qIDMgZXR4ICovIEJhZENoYXIsCkBAIC04NjgsNDcgKzg2OSwzMiBA
QCBTdHJpbmcgS1VSTDo6cHJldHR5VVJMKCkgY29uc3QKICAgICBpZiAoIW1faXNWYWxpZCkKICAg
ICAgICAgcmV0dXJuIG1fc3RyaW5nOwogCi0gICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0KLSAg
ICBhcHBlbmQocmVzdWx0LCBwcm90b2NvbCgpKTsKLSAgICByZXN1bHQuYXBwZW5kKCc6Jyk7Ci0K
LSAgICBWZWN0b3I8VUNoYXI+IGF1dGhvcml0eTsKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsK
KyAgICByZXN1bHQuYXBwZW5kKG1ha2VTdHJpbmcocHJvdG9jb2woKSwgJzonKSk7CiAKKyAgICBT
dHJpbmdCdWlsZGVyIGF1dGhvcml0eTsKICAgICBpZiAobV9ob3N0RW5kICE9IG1fcGFzc3dvcmRF
bmQpIHsKLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBtX3VzZXJTdGFydCkgewotICAgICAgICAg
ICAgYXBwZW5kKGF1dGhvcml0eSwgdXNlcigpKTsKLSAgICAgICAgICAgIGF1dGhvcml0eS5hcHBl
bmQoJ0AnKTsKLSAgICAgICAgfQotICAgICAgICBhcHBlbmQoYXV0aG9yaXR5LCBob3N0KCkpOwot
ICAgICAgICBpZiAoaGFzUG9ydCgpKSB7Ci0gICAgICAgICAgICBhdXRob3JpdHkuYXBwZW5kKCc6
Jyk7Ci0gICAgICAgICAgICBhcHBlbmQoYXV0aG9yaXR5LCBTdHJpbmc6Om51bWJlcihwb3J0KCkp
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAobV91c2VyRW5kICE9IG1fdXNlclN0YXJ0KQorICAg
ICAgICAgICAgYXV0aG9yaXR5LmFwcGVuZChtYWtlU3RyaW5nKHVzZXIoKSwgJ0AnKSk7CisgICAg
ICAgIGF1dGhvcml0eS5hcHBlbmQoaG9zdCgpKTsKKyAgICAgICAgaWYgKGhhc1BvcnQoKSkKKyAg
ICAgICAgICAgIGF1dGhvcml0eS5hcHBlbmQobWFrZVN0cmluZygnOicsIFN0cmluZzo6bnVtYmVy
KHBvcnQoKSkpKTsKICAgICB9CiAKLSAgICBpZiAoIWF1dGhvcml0eS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnLycpOwotICAgICAgICByZXN1bHQuYXBwZW5kKCcvJyk7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmQoYXV0aG9yaXR5KTsKLSAgICB9IGVsc2UgaWYgKHByb3RvY29s
SXMoImZpbGUiKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKCcvJyk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoJy8nKTsKLSAgICB9CisgICAgaWYgKCFhdXRob3JpdHkuaXNFbXB0eSgpKQorICAg
ICAgICByZXN1bHQuYXBwZW5kKG1ha2VTdHJpbmcoIi8vIiwgYXV0aG9yaXR5LnRvU3RyaW5nKCkp
KTsKKyAgICBlbHNlIGlmIChwcm90b2NvbElzKCJmaWxlIikpCisgICAgICAgIHJlc3VsdC5hcHBl
bmQoIi8vIik7CiAKLSAgICBhcHBlbmQocmVzdWx0LCBwYXRoKCkpOworICAgIHJlc3VsdC5hcHBl
bmQocGF0aCgpKTsKIAotICAgIGlmIChtX3BhdGhFbmQgIT0gbV9xdWVyeUVuZCkgewotICAgICAg
ICByZXN1bHQuYXBwZW5kKCc/Jyk7Ci0gICAgICAgIGFwcGVuZChyZXN1bHQsIHF1ZXJ5KCkpOwot
ICAgIH0KKyAgICBpZiAobV9wYXRoRW5kICE9IG1fcXVlcnlFbmQpCisgICAgICAgIHJlc3VsdC5h
cHBlbmQobWFrZVN0cmluZygnPycsIHF1ZXJ5KCkpKTsKIAotICAgIGlmIChtX2ZyYWdtZW50RW5k
ICE9IG1fcXVlcnlFbmQpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnIycpOwotICAgICAgICBh
cHBlbmQocmVzdWx0LCBmcmFnbWVudElkZW50aWZpZXIoKSk7Ci0gICAgfQorICAgIGlmIChtX2Zy
YWdtZW50RW5kICE9IG1fcXVlcnlFbmQpCisgICAgICAgIHJlc3VsdC5hcHBlbmQobWFrZVN0cmlu
ZygnIycsIGZyYWdtZW50SWRlbnRpZmllcigpKSk7CiAKLSAgICByZXR1cm4gU3RyaW5nOjphZG9w
dChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAogU3RyaW5nIGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIHN0cikKQEAgLTk2OSw5ICs5NTUs
MTIgQEAgU3RyaW5nIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdAogLy8gQ2F1dGlv
bjogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBib3VuZHMgY2hlY2suCiBzdGF0aWMgdm9pZCBhcHBl
bmRFc2NhcGVkQ2hhcihjaGFyKiYgYnVmZmVyLCB1bnNpZ25lZCBjaGFyIGMpCiB7CisgICAgVmVj
dG9yPGNoYXIsIDI+IGRlc3RpbmF0aW9uOworICAgIEhleE51bWJlcjo6YXBwZW5kQ2hhclRvVmVj
dG9yPGNoYXIsIDI+KGMsIGRlc3RpbmF0aW9uLCBIZXhOdW1iZXI6OlVwcGVyQ2FzZSk7CisgICAg
QVNTRVJUKGRlc3RpbmF0aW9uLnNpemUoKSA9PSAyKTsKICAgICAqYnVmZmVyKysgPSAnJSc7Ci0g
ICAgKmJ1ZmZlcisrID0gaGV4RGlnaXRzW2MgPj4gNF07Ci0gICAgKmJ1ZmZlcisrID0gaGV4RGln
aXRzW2MgJiAweEZdOworICAgICpidWZmZXIrKyA9IGRlc3RpbmF0aW9uWzBdOworICAgICpidWZm
ZXIrKyA9IGRlc3RpbmF0aW9uWzFdOwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRFc2NhcGluZ0Jh
ZENoYXJzKGNoYXIqJiBidWZmZXIsIGNvbnN0IGNoYXIqIHN0clN0YXJ0LCBzaXplX3QgbGVuZ3Ro
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAJKHJldmlzaW9uIDgwNzExKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJVVUlELmgiCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KIAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUg
PFFVdWlkPgpAQCAtMTAwLDE3ICsxMDEsMTggQEAgU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKQogCiAgICAgLy8gRm9ybWF0IGFzIFZlcnNpb24gNCBVVUlELgogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTA4eCIs
IHJhbmRvbURhdGFbMF0pKTsKKyAgICBidWlsZGVyLmFwcGVuZChIZXhOdW1iZXI6OnVuc2lnbmVk
VG9TdHJpbmcocmFuZG9tRGF0YVswXSwgOCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCItIik7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiUwNHgiLCByYW5kb21EYXRhWzFdID4+
IDE2KSk7CisgICAgYnVpbGRlci5hcHBlbmQoSGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKHJh
bmRvbURhdGFbMV0gPj4gMTYsIDQpKTsKICAgICBidWlsZGVyLmFwcGVuZCgiLTQiKTsKLSAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTAzeCIsIHJhbmRvbURhdGFbMV0gJiAweDAw
MDAwZmZmKSk7CisgICAgYnVpbGRlci5hcHBlbmQoSGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5n
KHJhbmRvbURhdGFbMV0gJiAweDAwMDAwZmZmLCAzKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIi0i
KTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJXgiLCAocmFuZG9tRGF0YVsy
XSA+PiAzMCkgfCAweDgpKTsgLy8gQ29uZGVuc2UgdGhpcyBieXRlIHRvIDgsIDksIGEsIGFuZCBi
LgotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDN4IiwgKHJhbmRvbURhdGFb
Ml0gPj4gMTYpICYgMHgwMDAwMGZmZikpOworICAgIGJ1aWxkZXIuYXBwZW5kKEhleE51bWJlcjo6
dW5zaWduZWRUb1N0cmluZygocmFuZG9tRGF0YVsyXSA+PiAzMCkgfCAweDgsIDEpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChIZXhOdW1iZXI6OnVuc2lnbmVkVG9TdHJpbmcoKHJhbmRvbURhdGFbMl0g
Pj4gMTYpICYgMHgwMDAwMGZmZiwgMykpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCItIik7Ci0gICAg
YnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiUwNHgiLCByYW5kb21EYXRhWzJdICYgMHgw
MDAwZmZmZikpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDh4IiwgcmFu
ZG9tRGF0YVszXSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKEhleE51bWJlcjo6dW5zaWduZWRUb1N0
cmluZyhyYW5kb21EYXRhWzJdICYgMHgwMDAwZmZmZiwgNCkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KEhleE51bWJlcjo6dW5zaWduZWRUb1N0cmluZyhyYW5kb21EYXRhWzNdLCA4KSk7CisgICAgYnVp
bGRlci5hcHBlbmQoIlxuIik7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKICNlbHNl
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDgwNzExKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsMTEg
QEAKICNpbmNsdWRlICJDb2xvci5oIgogCiAjaW5jbHVkZSAiSGFzaFRvb2xzLmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC0xODAsNDkgKzE4MSwyMyBAQCBDb2xvcjo6Q29sb3Io
Y29uc3QgY2hhciogbmFtZSkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRI
ZXhOdW1iZXIoVUNoYXIqIGRlc3RpbmF0aW9uLCB1aW50OF90IG51bWJlcikKLXsKLSAgICBzdGF0
aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlhYmNkZWYiOwotCi0gICAg
ZGVzdGluYXRpb25bMF0gPSBoZXhEaWdpdHNbbnVtYmVyID4+IDRdOwotICAgIGRlc3RpbmF0aW9u
WzFdID0gaGV4RGlnaXRzW251bWJlciAmIDB4Rl07Ci19Ci0KIFN0cmluZyBDb2xvcjo6c2VyaWFs
aXplZCgpIGNvbnN0CiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGNv
bW1hU3BhY2UsICgiLCAiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcs
IHJnYmFQYXJlbiwgKCJyZ2JhKCIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgemVyb1BvaW50WmVybywgKCIwLjAiKSk7Ci0KLSAgICBpZiAoIWhhc0FscGhhKCkpIHsK
LSAgICAgICAgVUNoYXIqIGNoYXJhY3RlcnM7Ci0gICAgICAgIFN0cmluZyByZXN1bHQgPSBTdHJp
bmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoNywgY2hhcmFjdGVycyk7Ci0gICAgICAgIGNoYXJhY3Rl
cnNbMF0gPSAnIyc7Ci0gICAgICAgIGFwcGVuZEhleE51bWJlcihjaGFyYWN0ZXJzICsgMSwgcmVk
KCkpOwotICAgICAgICBhcHBlbmRIZXhOdW1iZXIoY2hhcmFjdGVycyArIDMsIGdyZWVuKCkpOwot
ICAgICAgICBhcHBlbmRIZXhOdW1iZXIoY2hhcmFjdGVycyArIDUsIGJsdWUoKSk7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAg
cmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMjgpOworICAgIGlmICghaGFzQWxwaGEoKSkK
KyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJyMnLCBIZXhOdW1iZXI6OmNoYXJUb1N0cmluZyhy
ZWQoKSksIEhleE51bWJlcjo6Y2hhclRvU3RyaW5nKGdyZWVuKCkpLCBIZXhOdW1iZXI6OmNoYXJU
b1N0cmluZyhibHVlKCkpKTsKIAotICAgIGFwcGVuZChyZXN1bHQsIHJnYmFQYXJlbik7Ci0gICAg
YXBwZW5kTnVtYmVyKHJlc3VsdCwgcmVkKCkpOwotICAgIGFwcGVuZChyZXN1bHQsIGNvbW1hU3Bh
Y2UpOwotICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIGdyZWVuKCkpOwotICAgIGFwcGVuZChyZXN1
bHQsIGNvbW1hU3BhY2UpOwotICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIGJsdWUoKSk7Ci0gICAg
YXBwZW5kKHJlc3VsdCwgY29tbWFTcGFjZSk7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KDI4KTsKKyAgICBidWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCJyZ2JhKCIsIFN0cmluZzo6bnVtYmVyKHJlZCgpKSwgIiwgIiwgU3RyaW5nOjpudW1i
ZXIoZ3JlZW4oKSksICIsICIsIFN0cmluZzo6bnVtYmVyKGJsdWUoKSksICIsICIpKTsKIAogICAg
IC8vIE1hdGNoIEdlY2tvICgiMC4wIiBmb3IgemVybywgNSBkZWNpbWFscyBmb3IgYW55dGhpbmcg
ZWxzZSkKICAgICBpZiAoIWFscGhhKCkpCi0gICAgICAgIGFwcGVuZChyZXN1bHQsIHplcm9Qb2lu
dFplcm8pOworICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIwLjAiKSk7CiAgICAg
ZWxzZQotICAgICAgICBhcHBlbmQocmVzdWx0LCBTdHJpbmc6OmZvcm1hdCgiJS41ZiIsIGFscGhh
KCkgLyAyNTUuMGYpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiUu
NWYiLCBhbHBoYSgpIC8gMjU1LjBmKSk7CiAKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAg
cmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICBidWlsZGVyLmFwcGVuZCgnKScpOwor
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBDb2xvcjo6bmFtZUZv
clJlbmRlclRyZWVBc1RleHQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAkocmV2aXNpb24gODA3MTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgog
CkBAIC0xOTIsOCArMTkzLDYgQEAgdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmFkZEtleVZhbHVlUGFp
ckFzRgogCiB2b2lkIEZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShWZWN0
b3I8Y2hhcj4mIGJ1ZmZlciwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogewotICAgIHN0YXRpYyBj
b25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7Ci0KICAgICAvLyBT
YW1lIHNhZmUgY2hhcmFjdGVycyBhcyBOZXRzY2FwZSBmb3IgY29tcGF0aWJpbGl0eS4KICAgICBz
dGF0aWMgY29uc3QgY2hhciBzYWZlQ2hhcmFjdGVyc1tdID0gIi0uXyoiOwogCkBAIC0yMTAsOCAr
MjA5LDcgQEAgdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybQogICAgICAg
ICAgICAgYXBwZW5kKGJ1ZmZlciwgIiUwRCUwQSIpOwogICAgICAgICBlbHNlIGlmIChjICE9ICdc
cicpIHsKICAgICAgICAgICAgIGFwcGVuZChidWZmZXIsICclJyk7Ci0gICAgICAgICAgICBhcHBl
bmQoYnVmZmVyLCBoZXhEaWdpdHNbYyA+PiA0XSk7Ci0gICAgICAgICAgICBhcHBlbmQoYnVmZmVy
LCBoZXhEaWdpdHNbYyAmIDB4Rl0pOworICAgICAgICAgICAgSGV4TnVtYmVyOjphcHBlbmRDaGFy
VG9WZWN0b3I8Y2hhcj4oYywgYnVmZmVyLCBIZXhOdW1iZXI6OlVwcGVyQ2FzZSk7CiAgICAgICAg
IH0KICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwCShyZXZpc2lvbiA4MDcxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNs
dWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgog
I2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgpAQCAtMjA5LDExICsyMTAsMTEg
QEAgU3RyaW5nIHF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyhjb25zdAogICAgICAgICAgICAg
aWYgKGMgPj0gMHgyMCAmJiBjIDwgMHg3RikKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGMpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgdSA9IGM7
Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGhleCA9IFN0cmluZzo6Zm9ybWF0KCJcXHh7JVh9Iiwg
dSk7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuID0gaGV4Lmxlbmd0aCgpOwotICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkKLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXhbaV0pOworICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ1xcJyk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgneCcpOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3snKTsKKyAgICAgICAgICAgICAgICBIZXhOdW1iZXI6
OmFwcGVuZFVuc2lnbmVkVG9WZWN0b3I8VUNoYXI+KGMsIHJlc3VsdCwgLTEsIEhleE51bWJlcjo6
VXBwZXJDYXNlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85458</attachid>
            <date>2011-03-11 04:18:29 -0800</date>
            <delta_ts>2011-03-12 04:32:58 -0800</delta_ts>
            <desc>Patch v4</desc>
            <filename>HexNumber.patch</filename>
            <type>text/plain</type>
            <size>54569</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA4NDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTEtMDMtMTEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFdURiBIZXhOdW1iZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MDk5CisKKyAgICAgICAgSW50cm9kdWNlIGEgY2xhc3MgdGhhdCBpcyBj
YXBhYmxlIG9mIGNvbnZlcnRpbmcgZnJvbSB1bnNpZ25lZCBjaGFyL3Vuc2lnbmVkIHRvIGEgU3Ry
aW5nCisgICAgICAgIG9yIGFwcGVuZCBvbmUvdHdvIG9yIG1vcmUgY2hhcmFjdGVycyB0byBhIFZl
Y3RvcjxjaGFyPi9WZWN0b3I8VUNoYXI+LCBpbiBvcmRlciB0byByZXBsYWNlCisgICAgICAgIHJl
cGVhdGluZyBhbnkgLT4gaGV4IGNvbnZlcnNpb25zIGFuZCBTdHJpbmc6OmZvcm1hdCgiJXgiKSB1
c2FnZXMgYWxsIG92ZXIgV2ViQ29yZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQg
SGV4TnVtYmVyLmggdG8gYnVpbGQuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOiBFeHBv
cnQgU3RyaW5nQnVpbGRlcjo6cmVzZXJ2ZUNhcGFjaXR5LgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmd5cGk6IEFkZCBIZXhOdW1iZXIuaCB0byBidWlsZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDogRGl0dG8uCisgICAgICAgICogd3RmL0hleE51bWJlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6SGV4TnVtYmVyOjpjaGFyVG9TdHJpbmcpOiBOZXcgcHVibGljIEFQSSwgdG8g
Y29udmVydCBhIHVuc2lnbmVkIGNoYXIgdG8gYSBoZXggc3RyaW5nLgorICAgICAgICAoV1RGOjpI
ZXhOdW1iZXI6OmFwcGVuZENoYXJUb1ZlY3Rvcik6IERpdHRvLCBidXQgYXBwZW5kcyB0byBhIFZl
Y3Rvci4KKyAgICAgICAgKFdURjo6SGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKTogU2FtZSBm
b3IgdW5zaWduZWQgbnVtYmVycy4KKyAgICAgICAgKFdURjo6SGV4TnVtYmVyOjphcHBlbmRVbnNp
Z25lZFRvVmVjdG9yKTogRGl0dG8uCisgICAgICAgIChXVEY6OkhleE51bWJlcjo6dXNlQ29tcHJl
c3NlZE1vZGUpOiBJbnRlcm5hbCBoZWxwZXIuCisgICAgICAgIChXVEY6OkhleE51bWJlcjo6aGV4
RGlnaXRzRm9yTW9kZSk6IERpdHRvLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg6IEFkZCB2YXJpYW50IGZvciBtYWtlU3RyaW5nLCB0YWtpbmcgOSBhcmd1bWVudHMuCisg
ICAgICAgIChXVEY6OnRyeU1ha2VTdHJpbmcpOgorICAgICAgICAoV1RGOjptYWtlU3RyaW5nKToK
KyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDogUmVtb3ZlIGFwcGVuZChWZWN0b3I8VUNo
YXI+LCB1bnNpZ25lZCBjaGFyKSBmcmVlIGZ1bmN0aW9uLgorCiAyMDExLTAzLTEwICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFy
cmFjbG91Z2guCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lv
biA4MDczMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDY4LDYgKzQ2OCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9I
YXNoVHJhaXRzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGV4TnVtYmVyLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhhc2hTZXQuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9MaXN0UmVmUHRyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
TG9ja2VyLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OCw2ICszODgsNyBAQCBfX1pOM1dURjEyY3JlYXRl
VGhyZWFkRVBGUHZTMF9FUzBfUEtjCiBfX1pOM1dURjEyZGV0YWNoVGhyZWFkRWoKIF9fWk4zV1RG
MTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJhbmRvbU51bWJlckV2CitfX1pOM1dURjEzU3Ry
aW5nQnVpbGRlcjE1cmVzZXJ2ZUNhcGFjaXR5RWoKIF9fWk4zV1RGMTNTdHJpbmdCdWlsZGVyMTFy
ZWlmeVN0cmluZ0V2CiBfX1pOM1dURjEzU3RyaW5nQnVpbGRlcjExc2hyaW5rVG9GaXRFdgogX19a
TjNXVEYxM1N0cmluZ0J1aWxkZXI2YXBwZW5kRVBLY2oKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiAr
MTU3LDcgQEAKICAgICAgICAgICAgICd3dGYvSGFzaFNldC5oJywKICAgICAgICAgICAgICd3dGYv
SGFzaFRhYmxlLmgnLAogICAgICAgICAgICAgJ3d0Zi9IYXNoVHJhaXRzLmgnLAorICAgICAgICAg
ICAgJ3d0Zi9IZXhOdW1iZXIuaCcsCiAgICAgICAgICAgICAnd3RmL0xpc3RIYXNoU2V0LmgnLAog
ICAgICAgICAgICAgJ3d0Zi9MaXN0UmVmUHRyLmgnLAogICAgICAgICAgICAgJ3d0Zi9Mb2NrZXIu
aCcsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dU
Ri9XVEYudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHJldmlzaW9uIDgwNzMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtNzA1LDYgKzcwNSwxMCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxl
CisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxIZXhOdW1iZXIuaCIKKwkJCT4KKwkJPC9GaWxl
PgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcTGlzdEhhc2hTZXQuaCIKIAkJ
CT4KIAkJPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDgwNzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsNyBAQAogCQk2
NURGQzkzMzA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1REZDOTJEMDhFQTE3M0EwMEY3MzAwQiAv
KiBIYXNoVGFibGUuY3BwICovOyB9OwogCQk2NUUxQTNERjEyMkI4OTQ1MDBCMjYwOTcgLyogTm9u
Q29weWluZ1NvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1RTFBMkY0MTIyQjg4MEQwMEIyNjA5NyAvKiBOb25Db3B5aW5nU29ydC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1RkRFNDlDMEJERDFE
NEEwMEU4MDExMSAvKiBBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTIxN0I4MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25z
LmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby1taXNzaW5nLWZvcm1h
dC1hdHRyaWJ1dGUiOyB9OyB9OworCQk3MTg2QTZFQzEzMTAwQkE1MDA0NDc5RTEgLyogSGV4TnVt
YmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTg2
QTZFODEzMTAwQjU3MDA0NDc5RTEgLyogSGV4TnVtYmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzZGQjlGMEYxMkU4NTE4NjAwNTFBMkVCIC8q
IFNIQTEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
RkI5RjBFMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzZGQjlGMTExMkU4NTE5NjAwNTFBMkVCIC8qIFNI
QTEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZG
QjlGMTAxMkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICovOyB9OwogCQk3RTRFRTcwOTBFQkI3
OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1
cmVDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC04NTAsNiArODUxLDcgQEAKIAkJNjVFQTczNjIwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1v
bklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
b21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3
MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVudGlmaWVycy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRpZmllcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm9v
bGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJ
CTcxODZBNkU4MTMxMDBCNTcwMDQ0NzlFMSAvKiBIZXhOdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSGV4TnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc2RkI5RjBFMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNIQTEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZG
QjlGMTAxMkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU0hBMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdF
MkM2Qzk4MEQzMUM2QjYwMDJENDRFMiAvKiBTY29wZUNoYWluTWFyay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZUNoYWluTWFyay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTU2Nyw2ICsxNTY5LDcgQEAKIAkJCQk2NURGQzkyRDA4RUExNzNBMDBGNzMw
MEIgLyogSGFzaFRhYmxlLmNwcCAqLywKIAkJCQk2NURGQzkyRTA4RUExNzNBMDBGNzMwMEIgLyog
SGFzaFRhYmxlLmggKi8sCiAJCQkJNjVERkM5MkYwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUcmFp
dHMuaCAqLywKKwkJCQk3MTg2QTZFODEzMTAwQjU3MDA0NDc5RTEgLyogSGV4TnVtYmVyLmggKi8s
CiAJCQkJNjU3RUI3NDUwQjcwOEY1NDAwNjM0NjFCIC8qIExpc3RIYXNoU2V0LmggKi8sCiAJCQkJ
MTQ4QTE2MjYwOTVEMTZCQjAwNjY2RDBEIC8qIExpc3RSZWZQdHIuaCAqLywKIAkJCQlFMUVFNzky
NzBENkM5NjQ1MDBGRUEzQkEgLyogTG9ja2VyLmggKi8sCkBAIC0yMjA1LDYgKzIyMDgsNyBAQAog
CQkJCUJDMThDNDBEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDBFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVHJhaXRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDBDREU3MTEyREU5N0IxMDAxM0NGQzUgLyogSGVhcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzE4NkE2RUMxMzEwMEJBNTAwNDQ3OUUxIC8qIEhleE51bWJlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDEwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJbml0aWFsaXplVGhy
ZWFkaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyog
SW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAg
U0VUKFdURl9IRUFERVJTCiAgICAgSGFzaFNldC5oCiAgICAgSGFzaFRhYmxlLmgKICAgICBIYXNo
VHJhaXRzLmgKKyAgICBIZXhOdW1iZXIuaAogICAgIExpc3RIYXNoU2V0LmgKICAgICBMaXN0UmVm
UHRyLmgKICAgICBMb2NrZXIuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IZXhO
dW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hleE51bWJl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IZXhOdW1iZXIu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgSGV4TnVtYmVyX2gKKyNkZWZpbmUgSGV4TnVtYmVyX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBIZXhOdW1i
ZXIgeworcHVibGljOgorICAgIGVudW0gQ29udmVyc2lvbk1vZGUgeworICAgICAgICBMb3dlckNh
c2UgPSAxIDw8IDAsCisgICAgICAgIFVwcGVyQ2FzZSA9IDEgPDwgMSwKKyAgICAgICAgQ29tcHJl
c3NlZCA9IDEgPDwgMiAvLyBlZy4gIzAwMCAodXNlZCBpbiB0aGUgQ1NTUGFyc2VyKQorICAgIH07
CisKKyAgICBzdGF0aWMgU3RyaW5nIGNoYXJUb1N0cmluZyh1bnNpZ25lZCBjaGFyIG51bWJlciwg
dW5zaWduZWQgbW9kZSA9IExvd2VyQ2FzZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIqIGhl
eERpZ2l0cyA9IGhleERpZ2l0c0Zvck1vZGUobW9kZSk7CisgICAgICAgIGlmICh1c2VDb21wcmVz
c2VkTW9kZShtb2RlLCBudW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZygmaGV4RGln
aXRzW251bWJlciAmIDB4Rl0sIDEpOworICAgICAgICBWZWN0b3I8VUNoYXIsIDI+IGJ1ZmZlcjsK
KyAgICAgICAgYnVmZmVyLnJlc2l6ZSgyKTsKKyAgICAgICAgYnVmZmVyWzBdID0gaGV4RGlnaXRz
W251bWJlciA+PiA0XTsKKyAgICAgICAgYnVmZmVyWzFdID0gaGV4RGlnaXRzW251bWJlciAmIDB4
Rl07CisgICAgICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHN0YXRpYyB2
b2lkIGFwcGVuZENoYXJUb1ZlY3Rvcih1bnNpZ25lZCBjaGFyIG51bWJlciwgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5PiYgZGVzdGluYXRpb24sIHVuc2lnbmVkIG1vZGUgPSBMb3dlckNhc2UpCisg
ICAgeworICAgICAgICBjb25zdCBjaGFyKiBoZXhEaWdpdHMgPSBoZXhEaWdpdHNGb3JNb2RlKG1v
ZGUpOworICAgICAgICBpZiAodXNlQ29tcHJlc3NlZE1vZGUobW9kZSwgbnVtYmVyKSkgeworICAg
ICAgICAgICAgZGVzdGluYXRpb24uYXBwZW5kKGhleERpZ2l0c1tudW1iZXIgJiAweEZdKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQo
aGV4RGlnaXRzW251bWJlciA+PiA0XSk7CisgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVuZChoZXhE
aWdpdHNbbnVtYmVyICYgMHhGXSk7CisgICAgfQorCisgICAgLy8gVGhpcyBjYW4gYmUgdXNlZCB0
byByZXBsYWNlIFN0cmluZzo6Zm9ybWF0KCIlMDN4IiwgIiUwOFgiLCAiJXgiLCAiJVgiKSwgYnkg
c3BlY2lmeWluZyBlaXRoZXIgTG93ZXJDYXNlL1VwcGVyQ2FzZQorICAgIC8vIGFuZCBieSBzZXR0
aW5nIHN0b3BBZnRlckRpZ2l0cyB0byB0aGUgZGVzaXJlZCBudW1iZXIgb2YgZGlnaXRzLgorICAg
IHN0YXRpYyBTdHJpbmcgdW5zaWduZWRUb1N0cmluZyh1bnNpZ25lZCBudW1iZXIsIGludCBzdG9w
QWZ0ZXJEaWdpdHMgPSAtMSwgdW5zaWduZWQgbW9kZSA9IExvd2VyQ2FzZSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVCghKG1vZGUgJiBDb21wcmVzc2VkKSk7IC8vIENvbXByZXNzZWQgbW9kZSBvbmx5
IGF2YWlsYWJsZSBmb3IgYXBwZW5kVG9WZWN0b3IoKS9jaGFyVG9TdHJpbmcoKS4KKyAgICAgICAg
Y29uc3QgY2hhciogaGV4RGlnaXRzID0gaGV4RGlnaXRzRm9yTW9kZShtb2RlKTsKKyAgICAgICAg
VmVjdG9yPFVDaGFyLCA4PiByZXN1bHQ7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgZG8g
eworICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQoaGV4RGlnaXRzW251bWJlciAlIDE2XSk7Cisg
ICAgICAgICAgICBudW1iZXIgPj49IDQ7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0gd2hp
bGUgKHN0b3BBZnRlckRpZ2l0cyA9PSAtMSA/IG51bWJlciA+IDAgOiBpIDwgc3RvcEFmdGVyRGln
aXRzKTsKKworICAgICAgICBpZiAoc3RvcEFmdGVyRGlnaXRzICE9IC0xKQorICAgICAgICAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PGludD4ocmVzdWx0LnNpemUoKSkgPT0gc3RvcEFmdGVyRGlnaXRz
KTsKKyAgICAKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgc3Rh
dGljIHZvaWQgYXBwZW5kVW5zaWduZWRUb1ZlY3Rvcih1bnNpZ25lZCBudW1iZXIsIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eT4mIGRlc3RpbmF0aW9uLCBpbnQgc3RvcEFmdGVyRGlnaXRzID0gLTEs
IHVuc2lnbmVkIG1vZGUgPSBMb3dlckNhc2UpCisgICAgeworICAgICAgICAvLyBUaGlzIGNvdWxk
IGJlIGVhc2lseSBvcHRpbWl6ZWQsIGlmIHdlIHNlZSB0aGUgbmVlZCBmb3IgaXQuCisgICAgICAg
IFN0cmluZyBoZXhTdHJpbmcgPSB1bnNpZ25lZFRvU3RyaW5nKG51bWJlciwgc3RvcEFmdGVyRGln
aXRzLCBtb2RlKTsKKyAgICAgICAgZGVzdGluYXRpb24uYXBwZW5kKGhleFN0cmluZy5jaGFyYWN0
ZXJzKCksIGhleFN0cmluZy5sZW5ndGgoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBib29sIHVzZUNvbXByZXNzZWRNb2RlKHVuc2lnbmVkIG1vZGUsIHVuc2lnbmVkIGNoYXIgbnVt
YmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1vZGUgJiBDb21wcmVzc2VkICYmIG51bWJlciA8
IDB4MTA7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGhleERpZ2l0c0Zvck1vZGUo
dW5zaWduZWQgbW9kZSkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIHNfbG93ZXJI
ZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlhYmNkZWYiOworICAgICAgICBzdGF0aWMgY29uc3Qg
Y2hhciBzX3VwcGVySGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKKyAgICAgICAg
cmV0dXJuIG1vZGUgJiBMb3dlckNhc2UgPyBzX2xvd2VySGV4RGlnaXRzIDogc191cHBlckhleERp
Z2l0czsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpIZXhO
dW1iZXI7CisKKyNlbmRpZiAvLyBIZXhOdW1iZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHJldmlzaW9uIDgwNzMy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxNiw2ICs0MTYsNTkgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiB0cnlNYWtlU3RyaW5nKFN0cgogICAgIHJldHVybiByZXN1bHRJbXBsOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0
cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5
cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5n
VHlwZTgsIHR5cGVuYW1lIFN0cmluZ1R5cGU5PgorUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlN
YWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmlu
Z1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUs
IFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0
cmluZzgsIFN0cmluZ1R5cGU5IHN0cmluZzkpCit7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3Ry
aW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmlu
Z1R5cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdU
eXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlw
ZTQ+IGFkYXB0ZXI0KHN0cmluZzQpOworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU1
PiBhZGFwdGVyNShzdHJpbmc1KTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNj4g
YWRhcHRlcjYoc3RyaW5nNik7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTc+IGFk
YXB0ZXI3KHN0cmluZzcpOworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU4PiBhZGFw
dGVyOChzdHJpbmc4KTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlOT4gYWRhcHRl
cjkoc3RyaW5nOSk7CisKKyAgICBVQ2hhciogYnVmZmVyOworICAgIGJvb2wgb3ZlcmZsb3cgPSBm
YWxzZTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBhZGFwdGVyMS5sZW5ndGgoKTsKKyAgICBzdW1X
aXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1
bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAg
c3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjQubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAg
ICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNS5sZW5ndGgoKSwgb3ZlcmZsb3cpOwor
ICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI2Lmxlbmd0aCgpLCBvdmVyZmxvdyk7
CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjcubGVuZ3RoKCksIG92ZXJmbG93
KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyOC5sZW5ndGgoKSwgb3ZlcmZs
b3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI5Lmxlbmd0aCgpLCBvdmVy
Zmxvdyk7CisgICAgaWYgKG92ZXJmbG93KQorICAgICAgICByZXR1cm4gMDsKKyAgICBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKKyAgICBpZiAoIXJlc3VsdEltcGwpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgVUNoYXIqIHJlc3VsdCA9IGJ1ZmZlcjsKKyAgICBhZGFwdGVyMS53cml0
ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOworICAgIGFkYXB0
ZXIyLndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjIubGVuZ3RoKCk7Cisg
ICAgYWRhcHRlcjMud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyMy5sZW5n
dGgoKTsKKyAgICBhZGFwdGVyNC53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0
ZXI0Lmxlbmd0aCgpOworICAgIGFkYXB0ZXI1LndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQg
Kz0gYWRhcHRlcjUubGVuZ3RoKCk7CisgICAgYWRhcHRlcjYud3JpdGVUbyhyZXN1bHQpOworICAg
IHJlc3VsdCArPSBhZGFwdGVyNi5sZW5ndGgoKTsKKyAgICBhZGFwdGVyNy53cml0ZVRvKHJlc3Vs
dCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXI3Lmxlbmd0aCgpOworICAgIGFkYXB0ZXI4LndyaXRl
VG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjgubGVuZ3RoKCk7CisgICAgYWRhcHRl
cjkud3JpdGVUbyhyZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdEltcGw7Cit9CisKKwogLy8g
Q29udmVuaWVuY2Ugb25seS4KIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxPgogU3RyaW5n
IG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSkKQEAgLTQ4Niw2ICs1MzksMTUgQEAgU3Ry
aW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgUwogICAgIHJldHVybiByZXN1bHRJ
bXBsOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5n
VHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5h
bWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBl
NywgdHlwZW5hbWUgU3RyaW5nVHlwZTgsIHR5cGVuYW1lIFN0cmluZ1R5cGU5PgorU3RyaW5nIG1h
a2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5n
VHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwg
U3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTggc3Ry
aW5nOCwgU3RyaW5nVHlwZTkgc3RyaW5nOSkKK3sKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHJlc3VsdEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0
cmluZzQsIHN0cmluZzUsIHN0cmluZzYsIHN0cmluZzcsIHN0cmluZzgsIHN0cmluZzkpOworICAg
IGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gcmVzdWx0SW1w
bDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6bWFrZVN0cmluZzsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHJldmlzaW9u
IDgwNzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NTksMjYgKzQ1OSw2IEBAIGlubGluZSB2b2lkIGFwcGVuZChWZWN0
b3I8VUNoYXI+JiB2ZWN0b3IKICAgICB2ZWN0b3IuYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzKCks
IHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKLWlubGluZSB2b2lkIGFwcGVuZE51bWJlcihWZWN0b3I8
VUNoYXI+JiB2ZWN0b3IsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKQotewotICAgIGludCBudW1iZXJM
ZW5ndGggPSBudW1iZXIgPiA5OSA/IDMgOiAobnVtYmVyID4gOSA/IDIgOiAxKTsKLSAgICBzaXpl
X3QgdmVjdG9yU2l6ZSA9IHZlY3Rvci5zaXplKCk7Ci0gICAgdmVjdG9yLmdyb3codmVjdG9yU2l6
ZSArIG51bWJlckxlbmd0aCk7Ci0KLSAgICBzd2l0Y2ggKG51bWJlckxlbmd0aCkgewotICAgIGNh
c2UgMzoKLSAgICAgICAgdmVjdG9yW3ZlY3RvclNpemUgKyAyXSA9IG51bWJlciAlIDEwICsgJzAn
OwotICAgICAgICBudW1iZXIgLz0gMTA7Ci0KLSAgICBjYXNlIDI6Ci0gICAgICAgIHZlY3Rvclt2
ZWN0b3JTaXplICsgMV0gPSBudW1iZXIgJSAxMCArICcwJzsKLSAgICAgICAgbnVtYmVyIC89IDEw
OwotCi0gICAgY2FzZSAxOgotICAgICAgICB2ZWN0b3JbdmVjdG9yU2l6ZV0gPSBudW1iZXIgJSAx
MCArICcwJzsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVD
aGFyKT4gaW5saW5lIGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CkBAIC01MDksNyArNDg5LDYgQEAgdGVtcGxhdGUgPD4gc3RydWN0IFZlY3Rv
clRyYWl0czxTdHJpbmc+IAogdXNpbmcgV1RGOjpDU3RyaW5nOwogdXNpbmcgV1RGOjpTdHJpbmc7
CiB1c2luZyBXVEY6OmFwcGVuZDsKLXVzaW5nIFdURjo6YXBwZW5kTnVtYmVyOwogdXNpbmcgV1RG
OjpjaGFyYWN0ZXJzQXJlQWxsQVNDSUk7CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNBcmVBbGxMYXRp
bjE7CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFN0cmljdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgwODQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDMtMTEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1t
ZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIFdURiBIZXhOdW1iZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDk5CisKKyAgICAgICAgSW50cm9kdWNl
IGEgY2xhc3MgdGhhdCBpcyBjYXBhYmxlIG9mIGNvbnZlcnRpbmcgZnJvbSB1bnNpZ25lZCBjaGFy
L3Vuc2lnbmVkIHRvIGEgU3RyaW5nCisgICAgICAgIG9yIGFwcGVuZCBvbmUvdHdvIG9yIG1vcmUg
Y2hhcmFjdGVycyB0byBhIFZlY3RvcjxjaGFyPi9WZWN0b3I8VUNoYXI+LCBpbiBvcmRlciB0byBy
ZXBsYWNlCisgICAgICAgIHJlcGVhdGluZyBhbnkgLT4gaGV4IGNvbnZlcnNpb25zIGFuZCBTdHJp
bmc6OmZvcm1hdCgiJXgiKSB1c2FnZXMgYWxsIG92ZXIgV2ViQ29yZS4KKworICAgICAgICBTd2l0
Y2ggYSBmZXcgcGxhY2VzIGZyb20gdXNpbmcgVmVjdG9yPFVDaGFyPiB0byBTdHJpbmdCdWlsZGVy
LCB3aGljaCBpcyBtb3JlIHN1aXRhYmxlLgorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBjc3MvQ1NTT01VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludCk6CisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdW90ZUNTU1N0cmluZyk6CisgICAgICAgICogY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpjc3NUZXh0KToKKyAgICAgICAgKiBkb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QXR0cmlidXRlTmFtZVRvUHJvcGVydHlOYW1lKToKKyAg
ICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
bGVtZW50OjpzY3JpcHRDb250ZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5n
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9y
bWF0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWFkYWJsZVN0cmluZ0Zyb21CaW5hcnkpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0
V2l0aFByZWZsaWdodCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lOjpzZXRUb29sVGlwKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5jb2RlRm9yRmlsZU5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cHJldHR5VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZEVzY2FwZWRDaGFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VVUlELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXJp
YWxpemVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURh
dGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyk6CisKIDIwMTEtMDMtMTEgIEFu
dG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hl
eE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX0hleE51bWJlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0hleE51
bWJlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGV4TnVtYmVyLmg+CisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAJKHJldmlzaW9uIDgwNzMyKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTT01VdGlscy5oIgogCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsNyArNTMsMTAgQEAgdm9pZCBzZXJpYWxpemVDaGFy
YWN0ZXIoVUNoYXIzMiBjLCBWZWN0bwogCiB2b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBv
aW50KFVDaGFyMzIgYywgVmVjdG9yPFVDaGFyPiYgYXBwZW5kVG8pCiB7Ci0gICAgYXBwZW5kKGFw
cGVuZFRvLCBTdHJpbmc6OmZvcm1hdCgiXFwleCAiLCBjKSk7CisgICAgU3RyaW5nIGhleFN0cmlu
ZyA9IEhleE51bWJlcjo6dW5zaWduZWRUb1N0cmluZyhjKTsKKyAgICBhcHBlbmRUby5hcHBlbmQo
J1xcJyk7CisgICAgYXBwZW5kVG8uYXBwZW5kKGhleFN0cmluZy5jaGFyYWN0ZXJzKCksIGhleFN0
cmluZy5sZW5ndGgoKSk7CisgICAgYXBwZW5kVG8uYXBwZW5kKCcgJyk7CiB9CiAKIHZvaWQgc2Vy
aWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFN0cmluZyYgYXBwZW5k
VG8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gODA3MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiAr
NzIsNyBAQAogI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUg
PHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1ZmZlci5oPgogCkBAIC02Mzk4LDExICs2Mzk5LDE2IEBAIFN0cmluZyBxdW90
ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmkKICAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsr
XSA9IGNoOwogICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKICAgICAgICAgfSBlbHNl
IGlmIChjaCA8IDB4MjAgfHwgY2ggPT0gMHg3RikgeyAvLyBDb250cm9sIGNoYXJhY3RlcnMuCi0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlh
YmNkZWYiOworICAgICAgICAgICAgVmVjdG9yPGNoYXIsIDI+IGRlc3RpbmF0aW9uOworICAgICAg
ICAgICAgSGV4TnVtYmVyOjphcHBlbmRDaGFyVG9WZWN0b3I8Y2hhciwgMj4oY2gsIGRlc3RpbmF0
aW9uLCBIZXhOdW1iZXI6Okxvd2VyQ2FzZSB8IEhleE51bWJlcjo6Q29tcHJlc3NlZCk7CisgICAg
ICAgICAgICBBU1NFUlQoZGVzdGluYXRpb24uc2l6ZSgpIDw9IDIpOwogICAgICAgICAgICAgYnVm
ZmVyW2luZGV4KytdID0gJ1xcJzsKLSAgICAgICAgICAgIGlmIChjaCA+PSAweDEwKQotICAgICAg
ICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1tjaCA+PiA0XTsKLSAgICAgICAg
ICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1tjaCAmIDB4Rl07CisgICAgICAgICAgICBp
ZiAoZGVzdGluYXRpb24uc2l6ZSgpID09IDEpCisgICAgICAgICAgICAgICAgYnVmZmVyW2luZGV4
KytdID0gZGVzdGluYXRpb25bMF07CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBidWZmZXJbaW5kZXgrK10gPSBkZXN0aW5hdGlvblswXTsKKyAgICAgICAgICAgICAgICBidWZm
ZXJbaW5kZXgrK10gPSBkZXN0aW5hdGlvblsxXTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGFmdGVyRXNjYXBlID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFNw
YWNlIGNoYXJhY3RlciBtYXkgYmUgcmVxdWlyZWQgdG8gc2VwYXJhdGUgYmFja3NsYXNoLWVzY2Fw
ZSBzZXF1ZW5jZSBhbmQgbm9ybWFsIGNoYXJhY3RlcnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHJldmlzaW9uIDgwNzMyKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzks
OCBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oPgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogI2luY2x1ZGUgIkRhc2hi
b2FyZFJlZ2lvbi5oIgpAQCAtNjMzLDU4ICs2MzUsNTggQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUEVSQ0VOVEFH
RToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIiUiOwor
ICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwg
IiUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19FTVM6Ci0gICAgICAg
ICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJlbSI7CisgICAgICAgICAg
ICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiZW0iKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19FWFM6Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJleCI7CisgICAgICAgICAgICB0ZXh0ID0g
bWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiZXgiKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19SRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSkgKyAicmVtIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3Ry
aW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJyZW0iKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19QWDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pICsgInB4IjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSksICJweCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTX0NNOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSkgKyAiY20iOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSwgImNtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
TU06Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJtbSI7
CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0p
LCAibW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19JTjoKLSAgICAg
ICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImluIjsKKyAgICAgICAg
ICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJpbiIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BUOgotICAgICAgICAgICAgdGV4
dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHQiOworICAgICAgICAgICAgdGV4dCA9
IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInB0Iik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUEM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSArICJwYyI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmlu
Zyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAicGMiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19ERUc6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSArICJkZWciOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSwgImRlZyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pICsgInJhZCI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pLCAicmFkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
U1NfR1JBRDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsg
ImdyYWQiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFs
dWUubnVtKSwgImdyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19N
UzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1zIjsK
KyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSks
ICJtcyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1M6Ci0gICAgICAg
ICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJzIjsKKyAgICAgICAgICAg
IHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJzIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSFo6Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJoeiI7CisgICAgICAgICAgICB0ZXh0ID0gbWFr
ZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiaHoiKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmco
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImtoeiIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSksICJ0dXJuIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfRElNRU5TSU9OOgogICAgICAgICAgICAgLy8gRklYTUUKQEAgLTY5MywyMiAr
Njk1LDEzIEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAg
ICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19VUkk6Ci0gICAgICAgICAgICB0ZXh0
ID0gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykgKyAiKSI7Cisg
ICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZygidXJsKCIsIHF1b3RlQ1NTVVJMSWZOZWVkZWQo
bV92YWx1ZS5zdHJpbmcpLCAnKScpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX0lERU5UOgogICAgICAgICAgICAgdGV4dCA9IHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1
ZS5pZGVudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfQVRUUjogewot
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGF0dHJQYXJlbiwg
KCJhdHRyKCIpKTsKLQotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAg
ICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg2ICsgbV92YWx1ZS5zdHJpbmctPmxl
bmd0aCgpKTsKLQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgYXR0clBhcmVuKTsKLSAgICAg
ICAgICAgIGFwcGVuZChyZXN1bHQsIG1fdmFsdWUuc3RyaW5nKTsKLSAgICAgICAgICAgIHJlc3Vs
dC51bmNoZWNrZWRBcHBlbmQoJyknKTsKLQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRv
cHQocmVzdWx0KTsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKCJhdHRyKCIsIFN0cmlu
ZyhtX3ZhbHVlLnN0cmluZyksICcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENTU19DT1VOVEVSX05BTUU6CkBAIC03MTcsODYgKzcxMCw1OCBAQCBTdHJp
bmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAgICAgICAgICB0ZXh0ICs9
ICIpIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19DT1VOVEVSOgotICAg
ICAgICAgICAgdGV4dCA9ICJjb3VudGVyKCI7Ci0gICAgICAgICAgICB0ZXh0ICs9IFN0cmluZzo6
bnVtYmVyKG1fdmFsdWUubnVtKTsKLSAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAg
ICAgdGV4dCA9IG1ha2VTdHJpbmcoImNvdW50ZXIoIiwgU3RyaW5nOjpudW1iZXIobV92YWx1ZS5u
dW0pLCAnKScpOwogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBsaXN0LXN0eWxlIGFuZCBzZXBh
cmF0b3IKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19SRUNUOiB7Ci0gICAg
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcmVjdFBhcmVuLCAoInJl
Y3QoIikpOwotCiAgICAgICAgICAgICBSZWN0KiByZWN0VmFsID0gZ2V0UmVjdFZhbHVlKCk7Ci0g
ICAgICAgICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KDMyKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJlY3RQ
YXJlbik7Ci0KLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJlY3RWYWwtPnRvcCgpLT5jc3NU
ZXh0KCkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotCi0gICAgICAgICAgICBh
cHBlbmQocmVzdWx0LCByZWN0VmFsLT5yaWdodCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICcpOwotCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZWN0VmFs
LT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsK
LQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkp
OwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwotCi0gICAgICAgICAgICB0ZXh0ID0g
U3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoInJl
Y3QoIiwgcmVjdFZhbC0+dG9wKCktPmNzc1RleHQoKSwgJyAnLCByZWN0VmFsLT5yaWdodCgpLT5j
c3NUZXh0KCksICcgJywgcmVjdFZhbC0+Ym90dG9tKCktPmNzc1RleHQoKSwgJyAnLCByZWN0VmFs
LT5sZWZ0KCktPmNzc1RleHQoKSwgJyknKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgogICAgICAgICBjYXNlIENTU19QQVJTRVJfSEVY
Q09MT1I6IHsKLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBj
b21tYVNwYWNlLCAoIiwgIikpOwotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIHJnYlBhcmVuLCAoInJnYigiKSk7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgcmdiYVBhcmVuLCAoInJnYmEoIikpOwotCiAgICAgICAgICAg
ICBSR0JBMzIgcmdiQ29sb3IgPSBtX3ZhbHVlLnJnYmNvbG9yOwogICAgICAgICAgICAgaWYgKG1f
dHlwZSA9PSBDU1NfUEFSU0VSX0hFWENPTE9SKQogICAgICAgICAgICAgICAgIENvbG9yOjpwYXJz
ZUhleENvbG9yKG1fdmFsdWUuc3RyaW5nLCByZ2JDb2xvcik7CisKICAgICAgICAgICAgIENvbG9y
IGNvbG9yKHJnYkNvbG9yKTsKIAotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0g
ICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7CisgICAgICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgICAgICBidWlsZGVyLnJlc2VydmVDYXBh
Y2l0eSgzMik7CiAgICAgICAgICAgICBpZiAoY29sb3IuaGFzQWxwaGEoKSkKLSAgICAgICAgICAg
ICAgICBhcHBlbmQocmVzdWx0LCByZ2JhUGFyZW4pOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJyZ2JhKCIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFwcGVu
ZChyZXN1bHQsIHJnYlBhcmVuKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgicmdi
KCIpOwogCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihjb2xvci5yZWQoKSkpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29t
bWFTcGFjZSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKFN0cmluZzo6
bnVtYmVyKGNvbG9yLnJlZCgpKSwgIiwgIikpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZyhTdHJpbmc6Om51bWJlcihjb2xvci5ncmVlbigpKSwgIiwgIikpOworICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIoY29sb3IuYmx1ZSgpKSk7CiAKLSAg
ICAgICAgICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGNvbG9yLmdyZWVuKCkpKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGNvbW1hU3BhY2Up
OwotCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjb2xvci5ibHVlKCkpKTsKLSAgICAgICAgICAgIGlmIChjb2xvci5oYXNBbHBoYSgp
KSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29tbWFTcGFjZSk7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIoY29sb3IuYWxwaGEoKSAvIDI1
Ni4wZikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbG9yLmhhc0FscGhhKCkp
CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCBTdHJpbmc6
Om51bWJlcihjb2xvci5hbHBoYSgpIC8gMjU2LjBmKSkpOwogCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICAgICAgICAgIHRleHQgPSBidWls
ZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU19QQUlSOgotICAgICAgICAgICAgdGV4dCA9IG1fdmFsdWUucGFpci0+Zmlyc3QoKS0+
Y3NzVGV4dCgpOwotICAgICAgICAgICAgdGV4dCArPSAiICI7Ci0gICAgICAgICAgICB0ZXh0ICs9
IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgIHRleHQgPSBt
YWtlU3RyaW5nKG1fdmFsdWUucGFpci0+Zmlyc3QoKS0+Y3NzVGV4dCgpLCAnICcsIG1fdmFsdWUu
cGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046
CisgICAgICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046IHsKKyAgICAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgICAgIGZvciAoRGFzaGJvYXJkUmVnaW9uKiByZWdp
b24gPSBnZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOyByZWdpb247IHJlZ2lvbiA9IHJlZ2lvbi0+
bV9uZXh0LmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICB0ZXh0
ICs9ICJkYXNoYm9hcmQtcmVnaW9uKCI7Ci0gICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24t
Pm1fbGFiZWw7CisgICAgICAgICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJkYXNoYm9hcmQtcmVnaW9uKCIsIHJlZ2lvbi0+bV9sYWJl
bCkpOwogICAgICAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAgICAgICAg
ICAgICAgICAgIHRleHQgKz0gIiBjaXJjbGUiOworICAgICAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiIGNpcmNsZSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9p
c1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiIHJlY3RhbmdsZSI7Ci0g
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
IHJlY3RhbmdsZSIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICB0ZXh0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbi0+dG9wKCktPm1f
dHlwZSA9PSBDU1NfSURFTlQgJiYgcmVnaW9uLT50b3AoKS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZUludmFsaWQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+cmlnaHQoKS0+
bV90eXBlID09IENTU19JREVOVCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZWdpb24t
PmJvdHRvbSgpLT5tX3R5cGUgPT0gQ1NTX0lERU5UKTsKQEAgLTgwNSwxNSArNzcwLDE3IEBAIFN0
cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlZ2lvbi0+Ym90dG9tKCktPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnZhbGlk
KTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bGVmdCgpLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCAr
PSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRl
eHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAg
ICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpICsgIiAiOwotICAgICAgICAg
ICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKG1ha2VTdHJpbmcocmVnaW9uLT50b3AoKS0+Y3NzVGV4dCgpLCAnICcpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhyZWdpb24tPnJpZ2h0
KCktPmNzc1RleHQoKSwgJyAnKSk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpLCAnICcpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKSk7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICB0
ZXh0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6IHsKICAgICAgICAgICAg
IGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1fdmFsdWUuaWRlbnQpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAkocmV2aXNpb24gODA3MzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NTEsMjMgKzUyLDIzIEBAIHN0YXRpYyBib29sIGlzVmFsaWRBdHRyaWJ1dGVOYW1lKGNvbnN0IFMK
IAogc3RhdGljIFN0cmluZyBjb252ZXJ0QXR0cmlidXRlTmFtZVRvUHJvcGVydHlOYW1lKGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKLSAgICBWZWN0b3I8VUNoYXI+IG5ld1N0cmluZ0J1ZmZlcjsKKyAg
ICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAKICAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVycyA9IG5hbWUuY2hhcmFjdGVycygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5hbWUubGVu
Z3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gNTsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAg
ICAgIGlmIChjaGFyYWN0ZXJzW2ldICE9ICctJykKLSAgICAgICAgICAgIG5ld1N0cmluZ0J1ZmZl
ci5hcHBlbmQoY2hhcmFjdGVyc1tpXSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChjaGFyYWN0ZXJzW2ldKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoKGkgKyAx
IDwgbGVuZ3RoKSAmJiBpc0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpICsgMV0pKSB7Ci0gICAgICAg
ICAgICAgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZCh0b0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tp
ICsgMV0pKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b0FTQ0lJVXBw
ZXIoY2hhcmFjdGVyc1tpICsgMV0pKTsKICAgICAgICAgICAgICAgICArK2k7CiAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBuZXdTdHJpbmdCdWZmZXIuYXBwZW5kKGNoYXJhY3Rl
cnNbaV0pOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGNoYXJhY3RlcnNb
aV0pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQobmV3U3Ry
aW5nQnVmZmVyKTsKKyAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCiBz
dGF0aWMgYm9vbCBwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRlTmFtZShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gODA3MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0z
MTMsNyArMzE0LDcgQEAgYm9vbCBTY3JpcHRFbGVtZW50Ojppc1NjcmlwdEZvckV2ZW50U3VwcAog
CiBTdHJpbmcgU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgpIGNvbnN0CiB7Ci0gICAgVmVj
dG9yPFVDaGFyPiB2YWw7CisgICAgU3RyaW5nQnVpbGRlciBjb250ZW50OwogICAgIFRleHQqIGZp
cnN0VGV4dE5vZGUgPSAwOwogICAgIGJvb2wgZm91bmRNdWx0aXBsZVRleHROb2RlcyA9IGZhbHNl
OwogCkBAIC0zMjMsMTAgKzMyNCwxMCBAQCBTdHJpbmcgU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29u
dGVudCgpIGNvCiAKICAgICAgICAgVGV4dCogdCA9IHN0YXRpY19jYXN0PFRleHQqPihuKTsKICAg
ICAgICAgaWYgKGZvdW5kTXVsdGlwbGVUZXh0Tm9kZXMpCi0gICAgICAgICAgICBhcHBlbmQodmFs
LCB0LT5kYXRhKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQodC0+ZGF0YSgpKTsKICAg
ICAgICAgZWxzZSBpZiAoZmlyc3RUZXh0Tm9kZSkgewotICAgICAgICAgICAgYXBwZW5kKHZhbCwg
Zmlyc3RUZXh0Tm9kZS0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGFwcGVuZCh2YWwsIHQtPmRhdGEo
KSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChmaXJzdFRleHROb2RlLT5kYXRhKCkpOwor
ICAgICAgICAgICAgY29udGVudC5hcHBlbmQodC0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvdW5k
TXVsdGlwbGVUZXh0Tm9kZXMgPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGZp
cnN0VGV4dE5vZGUgPSB0OwpAQCAtMzM1LDcgKzMzNiw3IEBAIFN0cmluZyBTY3JpcHRFbGVtZW50
OjpzY3JpcHRDb250ZW50KCkgY28KICAgICBpZiAoZmlyc3RUZXh0Tm9kZSAmJiAhZm91bmRNdWx0
aXBsZVRleHROb2RlcykKICAgICAgICAgcmV0dXJuIGZpcnN0VGV4dE5vZGUtPmRhdGEoKTsKIAot
ICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHZhbCk7CisgICAgcmV0dXJuIGNvbnRlbnQudG9TdHJp
bmcoKTsKIH0KIAogU2NyaXB0RWxlbWVudCogdG9TY3JpcHRFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCShy
ZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIlRleHQuaCIK
ICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFt
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTYsNyArNTgsNyBAQCBTdHJpbmcgY29u
dmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hCiAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkg
JiYgbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpCiAgICAgICAg
IHJldHVybiBpbjsKIAotICAgIFZlY3RvcjxVQ2hhcj4gczsKKyAgICBTdHJpbmdCdWlsZGVyIHM7
CiAKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICB1bnNpZ25lZCBjb25zdW1lZCA9IDA7CkBAIC03
MywzMCArNzUsMjUgQEAgU3RyaW5nIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYQog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFkZCA9IGNvdW50ICUgMzsKICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGFkZCkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmQocywgY29udmVydGVkU3BhY2VTdHJpbmcoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kKHMsIGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcy5hcHBlbmQobWFrZVN0cmluZyhjb252ZXJ0ZWRTcGFjZVN0cmluZygpLCAnICcsIGNvbnZl
cnRlZFNwYWNlU3RyaW5nKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCA9IDM7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSAx
OgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCB8fCBpICsgMSA9PSBpbi5sZW5n
dGgoKSkgLy8gYXQgc3RhcnQgb3IgZW5kIG9mIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChzLCBjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLmFwcGVuZChjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVu
ZCgnICcpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgc3RhcnQgb2Ygc3RyaW5nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kKHMsIGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcy5hcHBlbmQobWFrZVN0cmluZyhjb252ZXJ0ZWRTcGFjZVN0cmluZygpLCAn
ICcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSArIDIgPT0gaW4ubGVu
Z3RoKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgZW5kIG9mIHN0cmlu
ZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChzLCBjb252ZXJ0ZWRTcGFjZVN0
cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQocywgY29udmVydGVk
U3BhY2VTdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChzLCBjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZCgnICcpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKGNvbnZl
cnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5k
KGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQobWFrZVN0cmluZyhjb252ZXJ0
ZWRTcGFjZVN0cmluZygpLCAnICcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb3VudCAtPSBhZGQ7CkBAIC0xMDYs
NyArMTAzLDcgQEAgU3RyaW5nIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYQogICAg
ICAgICBpICs9IGNvbnN1bWVkOwogICAgIH0KIAotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHMp
OworICAgIHJldHVybiBzLnRvU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAJKHJldmlzaW9uIDgwNzMyKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3
IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKIAogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CkBAIC00NTYsMTcgKzQ1NywxMyBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmZyYW1lRGV0YWNoCiBzdGF0aWMgU3RyaW5nIGNyZWF0ZVJlYWRh
YmxlU3RyaW5nRnJvbUJpbmFyeShjb25zdCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSwgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoID4gMCk7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIg
aGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLSAgICBzaXplX3QgYnVmZmVyU2l6
ZSA9IGxlbmd0aCAqIDMgLSAxOwotICAgIFN0cmluZ0J1ZmZlciBidWZmZXIoYnVmZmVyU2l6ZSk7
Ci0gICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcjsKKyAgICBi
dWZmZXIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggKiAzIC0gMSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBpZiAoaSA+IDApCi0gICAg
ICAgICAgICBidWZmZXJbaW5kZXgrK10gPSAnOic7Ci0gICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9
IGhleERpZ2l0c1t2YWx1ZVtpXSA+PiA0XTsKLSAgICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4
RGlnaXRzW3ZhbHVlW2ldICYgMHhGXTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJzonKTsK
KyAgICAgICAgSGV4TnVtYmVyOjphcHBlbmRDaGFyVG9WZWN0b3I8VUNoYXI+KHZhbHVlW2ldLCBi
dWZmZXIsIEhleE51bWJlcjo6VXBwZXJDYXNlKTsKICAgICB9Ci0gICAgQVNTRVJUKGluZGV4ID09
IGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBACiAj
aW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMwLDE5ICsxMzIsMTYgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zcwogICAgIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIHJlcXVlc3RIZWFkZXJGaWVsZHMgPSByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsKIAog
ICAgIGlmIChyZXF1ZXN0SGVhZGVyRmllbGRzLnNpemUoKSA+IDApIHsKLSAgICAgICAgVmVjdG9y
PFVDaGFyPiBoZWFkZXJCdWZmZXI7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgaGVhZGVyQnVpbGRl
cjsKICAgICAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZXF1ZXN0SGVh
ZGVyRmllbGRzLmJlZ2luKCk7Ci0gICAgICAgIGFwcGVuZChoZWFkZXJCdWZmZXIsIGl0LT5maXJz
dCk7CisgICAgICAgIGhlYWRlckJ1aWxkZXIuYXBwZW5kKGl0LT5maXJzdCk7CiAgICAgICAgICsr
aXQ7CiAKICAgICAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVxdWVz
dEhlYWRlckZpZWxkcy5lbmQoKTsKLSAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICAgICAgaGVhZGVyQnVmZmVyLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAgaGVhZGVy
QnVmZmVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgYXBwZW5kKGhlYWRlckJ1ZmZlciwgaXQt
PmZpcnN0KTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICAgICAgaGVhZGVyQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCBpdC0+Zmlyc3Qu
c3RyaW5nKCkpKTsKIAotICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzIiwgU3RyaW5nOjphZG9wdChoZWFkZXJC
dWZmZXIpKTsKKyAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkFj
Y2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyIsIGhlYWRlckJ1aWxkZXIudG9TdHJpbmcoKSk7
CiAgICAgfQogCiAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRQcmlvcml0eShyZXF1ZXN0LnByaW9y
aXR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gODA3MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1
LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogI2luY2x1ZGUgIlN0b3JhZ2VOYW1l
c3BhY2UuaCIKQEAgLTM5OSwxMyArNDAwLDEzIEBAIHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNv
bnN0IEhpdFRlc3RSZXMKICAgICAgICAgICAgICAgICAgICAgRmlsZUxpc3QqIGZpbGVzID0gaW5w
dXQtPmZpbGVzKCk7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpc3RTaXplID0gZmls
ZXMtPmxlbmd0aCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAobGlzdFNpemUgPiAxKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VUNoYXI+IG5hbWVzOworICAgICAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBuYW1lczsKICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZChuYW1lcywgZmlsZXMtPml0ZW0oaSktPmZpbGVOYW1lKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZChmaWxlcy0+aXRlbShpKS0+
ZmlsZU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gbGlzdFNp
emUgLSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoJ1xu
Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
b29sVGlwID0gU3RyaW5nOjphZG9wdChuYW1lcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB0
b29sVGlwID0gbmFtZXMudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZp
bGVuYW1lIGFsd2F5cyBkaXNwbGF5IGFzIExUUi4KICAgICAgICAgICAgICAgICAgICAgICAgIHRv
b2xUaXBEaXJlY3Rpb24gPSBMVFI7CiAgICAgICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2
ICszNiw4IEBACiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRlICJTY2hl
bWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zODgsMTggKzM5MCwxNCBAQCBT
dHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJuICJm
aWxlOi8vIjsKICAgICB9CiAKLSAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLSAgICByZXN1bHQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Byb3RvY29sLmxlbmd0aCgpICsgbV9ob3N0Lmxlbmd0
aCgpICsgMTApOwotICAgIGFwcGVuZChyZXN1bHQsIG1fcHJvdG9jb2wpOwotICAgIGFwcGVuZChy
ZXN1bHQsICI6Ly8iKTsKLSAgICBhcHBlbmQocmVzdWx0LCBtX2hvc3QpOwotCi0gICAgaWYgKG1f
cG9ydCkgewotICAgICAgICBhcHBlbmQocmVzdWx0LCAiOiIpOwotICAgICAgICBhcHBlbmQocmVz
dWx0LCBTdHJpbmc6Om51bWJlcihtX3BvcnQpKTsKLSAgICB9CisgICAgU3RyaW5nQnVpbGRlciBy
ZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShtX3Byb3RvY29sLmxlbmd0aCgpICsg
bV9ob3N0Lmxlbmd0aCgpICsgMTApOworICAgIHJlc3VsdC5hcHBlbmQobWFrZVN0cmluZyhtX3By
b3RvY29sLCAiOi8vIiwgbV9ob3N0KSk7CisKKyAgICBpZiAobV9wb3J0KQorICAgICAgICByZXN1
bHQuYXBwZW5kKG1ha2VTdHJpbmcoIjoiLCBTdHJpbmc6Om51bWJlcihtX3BvcnQpKSk7CiAKLSAg
ICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQudG9TdHJp
bmcoKTsKIH0KIAogUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gODA3MzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAor
I2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBU
aGUgZm9sbG93aW5nIGxvd2VyLUFTQ0lJIGNoYXJhY3RlcnMgbmVlZCBlc2NhcGluZyB0byBiZSB1
c2VkIGluIGEgZmlsZW5hbWUKQEAgLTc1LDggKzc3LDYgQEAgc3RhdGljIGlubGluZSBib29sIHNo
b3VsZEVzY2FwZVVDaGFyKFVDaAogICAgIHJldHVybiBjID4gMTI3ID8gZmFsc2UgOiBuZWVkc0Vz
Y2FwaW5nW2NdOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0
NTY3ODlBQkNERUYiOwotCiBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29uc3QgU3RyaW5nJiBp
bnB1dFN0cikKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0ci5sZW5ndGgoKTsKQEAg
LTkwLDggKzkwLDcgQEAgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgaQog
ICAgICAgICBVQ2hhciBjID0gKnN0cisrOwogICAgICAgICBpZiAoc2hvdWxkRXNjYXBlVUNoYXIo
YykpIHsKICAgICAgICAgICAgICpwKysgPSAnJSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4RGln
aXRzWyhjID4+IDQpICYgMHhGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhEaWdpdHNbYyAmIDB4
Rl07CisgICAgICAgICAgICBIZXhOdW1iZXI6OmFwcGVuZENoYXJUb1ZlY3RvcjxVQ2hhciwgNTEy
PihjLCBidWZmZXIsIEhleE51bWJlcjo6VXBwZXJDYXNlKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAqcCsrID0gYzsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAko
cmV2aXNpb24gODA3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsOSArMjgsMTIgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNp
ZiBVU0UoSUNVX1VOSUNPREUpCkBAIC04OSw4ICs5Miw2IEBAIGVudW0gVVJMQ2hhcmFjdGVyQ2xh
c3NlcyB7CiAgICAgQmFkQ2hhciA9IDEgPDwgNgogfTsKIAotc3RhdGljIGNvbnN0IGNoYXIgaGV4
RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLQogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGNoYXIgY2hhcmFjdGVyQ2xhc3NUYWJsZVsyNTZdID0gewogICAgIC8qIDAgbnVsICovIFBhdGhT
ZWdtZW50RW5kQ2hhciwgICAgLyogMSBzb2ggKi8gQmFkQ2hhciwKICAgICAvKiAyIHN0eCAqLyBC
YWRDaGFyLCAgICAvKiAzIGV0eCAqLyBCYWRDaGFyLApAQCAtODY4LDQ3ICs4NjksMzIgQEAgU3Ry
aW5nIEtVUkw6OnByZXR0eVVSTCgpIGNvbnN0CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAg
IHJldHVybiBtX3N0cmluZzsKIAotICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotCi0gICAgYXBw
ZW5kKHJlc3VsdCwgcHJvdG9jb2woKSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnOicpOwotCi0gICAg
VmVjdG9yPFVDaGFyPiBhdXRob3JpdHk7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAg
cmVzdWx0LmFwcGVuZChtYWtlU3RyaW5nKHByb3RvY29sKCksICc6JykpOwogCisgICAgU3RyaW5n
QnVpbGRlciBhdXRob3JpdHk7CiAgICAgaWYgKG1faG9zdEVuZCAhPSBtX3Bhc3N3b3JkRW5kKSB7
Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgIT0gbV91c2VyU3RhcnQpIHsKLSAgICAgICAgICAgIGFw
cGVuZChhdXRob3JpdHksIHVzZXIoKSk7Ci0gICAgICAgICAgICBhdXRob3JpdHkuYXBwZW5kKCdA
Jyk7Ci0gICAgICAgIH0KLSAgICAgICAgYXBwZW5kKGF1dGhvcml0eSwgaG9zdCgpKTsKLSAgICAg
ICAgaWYgKGhhc1BvcnQoKSkgewotICAgICAgICAgICAgYXV0aG9yaXR5LmFwcGVuZCgnOicpOwot
ICAgICAgICAgICAgYXBwZW5kKGF1dGhvcml0eSwgU3RyaW5nOjpudW1iZXIocG9ydCgpKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBtX3VzZXJTdGFydCkKKyAgICAgICAg
ICAgIGF1dGhvcml0eS5hcHBlbmQobWFrZVN0cmluZyh1c2VyKCksICdAJykpOworICAgICAgICBh
dXRob3JpdHkuYXBwZW5kKGhvc3QoKSk7CisgICAgICAgIGlmIChoYXNQb3J0KCkpCisgICAgICAg
ICAgICBhdXRob3JpdHkuYXBwZW5kKG1ha2VTdHJpbmcoJzonLCBTdHJpbmc6Om51bWJlcihwb3J0
KCkpKSk7CiAgICAgfQogCi0gICAgaWYgKCFhdXRob3JpdHkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoJy8nKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnLycpOwotICAgICAg
ICByZXN1bHQuYXBwZW5kKGF1dGhvcml0eSk7Ci0gICAgfSBlbHNlIGlmIChwcm90b2NvbElzKCJm
aWxlIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnLycpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kKCcvJyk7Ci0gICAgfQorICAgIGlmICghYXV0aG9yaXR5LmlzRW1wdHkoKSkKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChtYWtlU3RyaW5nKCIvLyIsIGF1dGhvcml0eS50b1N0cmluZygpKSk7Cisg
ICAgZWxzZSBpZiAocHJvdG9jb2xJcygiZmlsZSIpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCIv
LyIpOwogCi0gICAgYXBwZW5kKHJlc3VsdCwgcGF0aCgpKTsKKyAgICByZXN1bHQuYXBwZW5kKHBh
dGgoKSk7CiAKLSAgICBpZiAobV9wYXRoRW5kICE9IG1fcXVlcnlFbmQpIHsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZCgnPycpOwotICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWVyeSgpKTsKLSAgICB9
CisgICAgaWYgKG1fcGF0aEVuZCAhPSBtX3F1ZXJ5RW5kKQorICAgICAgICByZXN1bHQuYXBwZW5k
KG1ha2VTdHJpbmcoJz8nLCBxdWVyeSgpKSk7CiAKLSAgICBpZiAobV9mcmFnbWVudEVuZCAhPSBt
X3F1ZXJ5RW5kKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJyMnKTsKLSAgICAgICAgYXBwZW5k
KHJlc3VsdCwgZnJhZ21lbnRJZGVudGlmaWVyKCkpOwotICAgIH0KKyAgICBpZiAobV9mcmFnbWVu
dEVuZCAhPSBtX3F1ZXJ5RW5kKQorICAgICAgICByZXN1bHQuYXBwZW5kKG1ha2VTdHJpbmcoJyMn
LCBmcmFnbWVudElkZW50aWZpZXIoKSkpOwogCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVz
dWx0KTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHIpCkBAIC05NjksOSArOTU1LDEyIEBA
IFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3QKIC8vIENhdXRpb246IFRo
aXMgZnVuY3Rpb24gZG9lcyBub3QgYm91bmRzIGNoZWNrLgogc3RhdGljIHZvaWQgYXBwZW5kRXNj
YXBlZENoYXIoY2hhciomIGJ1ZmZlciwgdW5zaWduZWQgY2hhciBjKQogeworICAgIFZlY3Rvcjxj
aGFyLCAyPiBkZXN0aW5hdGlvbjsKKyAgICBIZXhOdW1iZXI6OmFwcGVuZENoYXJUb1ZlY3Rvcjxj
aGFyLCAyPihjLCBkZXN0aW5hdGlvbiwgSGV4TnVtYmVyOjpVcHBlckNhc2UpOworICAgIEFTU0VS
VChkZXN0aW5hdGlvbi5zaXplKCkgPT0gMik7CiAgICAgKmJ1ZmZlcisrID0gJyUnOwotICAgICpi
dWZmZXIrKyA9IGhleERpZ2l0c1tjID4+IDRdOwotICAgICpidWZmZXIrKyA9IGhleERpZ2l0c1tj
ICYgMHhGXTsKKyAgICAqYnVmZmVyKysgPSBkZXN0aW5hdGlvblswXTsKKyAgICAqYnVmZmVyKysg
PSBkZXN0aW5hdGlvblsxXTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBpbmdCYWRDaGFy
cyhjaGFyKiYgYnVmZmVyLCBjb25zdCBjaGFyKiBzdHJTdGFydCwgc2l6ZV90IGxlbmd0aCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiVVVJRC5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRVXVp
ZD4KQEAgLTEwMCwxNyArMTAxLDE4IEBAIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCkKIAogICAgIC8vIEZvcm1hdCBhcyBWZXJzaW9uIDQgVVVJRC4KICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiUwOHgiLCByYW5k
b21EYXRhWzBdKSk7CisgICAgYnVpbGRlci5hcHBlbmQoSGV4TnVtYmVyOjp1bnNpZ25lZFRvU3Ry
aW5nKHJhbmRvbURhdGFbMF0sIDgpKTsKICAgICBidWlsZGVyLmFwcGVuZCgiLSIpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDR4IiwgcmFuZG9tRGF0YVsxXSA+PiAxNikp
OworICAgIGJ1aWxkZXIuYXBwZW5kKEhleE51bWJlcjo6dW5zaWduZWRUb1N0cmluZyhyYW5kb21E
YXRhWzFdID4+IDE2LCA0KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIi00Iik7Ci0gICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiUwM3giLCByYW5kb21EYXRhWzFdICYgMHgwMDAwMGZm
ZikpOworICAgIGJ1aWxkZXIuYXBwZW5kKEhleE51bWJlcjo6dW5zaWduZWRUb1N0cmluZyhyYW5k
b21EYXRhWzFdICYgMHgwMDAwMGZmZiwgMykpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCItIik7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiV4IiwgKHJhbmRvbURhdGFbMl0gPj4g
MzApIHwgMHg4KSk7IC8vIENvbmRlbnNlIHRoaXMgYnl0ZSB0byA4LCA5LCBhLCBhbmQgYi4KLSAg
ICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTAzeCIsIChyYW5kb21EYXRhWzJdID4+
IDE2KSAmIDB4MDAwMDBmZmYpKTsKKyAgICBidWlsZGVyLmFwcGVuZChIZXhOdW1iZXI6OnVuc2ln
bmVkVG9TdHJpbmcoKHJhbmRvbURhdGFbMl0gPj4gMzApIHwgMHg4LCAxKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoSGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKChyYW5kb21EYXRhWzJdID4+IDE2
KSAmIDB4MDAwMDBmZmYsIDMpKTsKICAgICBidWlsZGVyLmFwcGVuZCgiLSIpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDR4IiwgcmFuZG9tRGF0YVsyXSAmIDB4MDAwMGZm
ZmYpKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTA4eCIsIHJhbmRvbURh
dGFbM10pKTsKKyAgICBidWlsZGVyLmFwcGVuZChIZXhOdW1iZXI6OnVuc2lnbmVkVG9TdHJpbmco
cmFuZG9tRGF0YVsyXSAmIDB4MDAwMGZmZmYsIDQpKTsKKyAgICBidWlsZGVyLmFwcGVuZChIZXhO
dW1iZXI6OnVuc2lnbmVkVG9TdHJpbmcocmFuZG9tRGF0YVszXSwgOCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKCJcbiIpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiAjZWxzZQogICAg
IG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuY3BwCShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDExIEBACiAj
aW5jbHVkZSAiQ29sb3IuaCIKIAogI2luY2x1ZGUgIkhhc2hUb29scy5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwpAQCAtMTgwLDQ5ICsxODEsMjMgQEAgQ29sb3I6OkNvbG9yKGNvbnN0
IGNoYXIqIG5hbWUpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kSGV4TnVt
YmVyKFVDaGFyKiBkZXN0aW5hdGlvbiwgdWludDhfdCBudW1iZXIpCi17Ci0gICAgc3RhdGljIGNv
bnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKLQotICAgIGRlc3Rp
bmF0aW9uWzBdID0gaGV4RGlnaXRzW251bWJlciA+PiA0XTsKLSAgICBkZXN0aW5hdGlvblsxXSA9
IGhleERpZ2l0c1tudW1iZXIgJiAweEZdOwotfQotCiBTdHJpbmcgQ29sb3I6OnNlcmlhbGl6ZWQo
KSBjb25zdAogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb21tYVNw
YWNlLCAoIiwgIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByZ2Jh
UGFyZW4sICgicmdiYSgiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcs
IHplcm9Qb2ludFplcm8sICgiMC4wIikpOwotCi0gICAgaWYgKCFoYXNBbHBoYSgpKSB7Ci0gICAg
ICAgIFVDaGFyKiBjaGFyYWN0ZXJzOwotICAgICAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpj
cmVhdGVVbmluaXRpYWxpemVkKDcsIGNoYXJhY3RlcnMpOwotICAgICAgICBjaGFyYWN0ZXJzWzBd
ID0gJyMnOwotICAgICAgICBhcHBlbmRIZXhOdW1iZXIoY2hhcmFjdGVycyArIDEsIHJlZCgpKTsK
LSAgICAgICAgYXBwZW5kSGV4TnVtYmVyKGNoYXJhY3RlcnMgKyAzLCBncmVlbigpKTsKLSAgICAg
ICAgYXBwZW5kSGV4TnVtYmVyKGNoYXJhY3RlcnMgKyA1LCBibHVlKCkpOwotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIH0KLQotICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDI4KTsKKyAgICBpZiAoIWhhc0FscGhhKCkpCisgICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywgSGV4TnVtYmVyOjpjaGFyVG9TdHJpbmcocmVkKCkp
LCBIZXhOdW1iZXI6OmNoYXJUb1N0cmluZyhncmVlbigpKSwgSGV4TnVtYmVyOjpjaGFyVG9TdHJp
bmcoYmx1ZSgpKSk7CiAKLSAgICBhcHBlbmQocmVzdWx0LCByZ2JhUGFyZW4pOwotICAgIGFwcGVu
ZE51bWJlcihyZXN1bHQsIHJlZCgpKTsKLSAgICBhcHBlbmQocmVzdWx0LCBjb21tYVNwYWNlKTsK
LSAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBncmVlbigpKTsKLSAgICBhcHBlbmQocmVzdWx0LCBj
b21tYVNwYWNlKTsKLSAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBibHVlKCkpOwotICAgIGFwcGVu
ZChyZXN1bHQsIGNvbW1hU3BhY2UpOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBi
dWlsZGVyLnJlc2VydmVDYXBhY2l0eSgyOCk7CisgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
ZygicmdiYSgiLCBTdHJpbmc6Om51bWJlcihyZWQoKSksICIsICIsIFN0cmluZzo6bnVtYmVyKGdy
ZWVuKCkpLCAiLCAiLCBTdHJpbmc6Om51bWJlcihibHVlKCkpLCAiLCAiKSk7CiAKICAgICAvLyBN
YXRjaCBHZWNrbyAoIjAuMCIgZm9yIHplcm8sIDUgZGVjaW1hbHMgZm9yIGFueXRoaW5nIGVsc2Up
CiAgICAgaWYgKCFhbHBoYSgpKQotICAgICAgICBhcHBlbmQocmVzdWx0LCB6ZXJvUG9pbnRaZXJv
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiMC4wIikpOwogICAgIGVsc2UK
LSAgICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpmb3JtYXQoIiUuNWYiLCBhbHBoYSgpIC8g
MjU1LjBmKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlLjVmIiwg
YWxwaGEoKSAvIDI1NS4wZikpOwogCi0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVy
biBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCiBTdHJpbmcgQ29sb3I6Om5hbWVGb3JSZW5k
ZXJUcmVlQXNUZXh0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGFCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAJKHJldmlzaW9uIDgwNzMyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KIApAQCAt
MTkyLDggKzE5Myw2IEBAIHZvaWQgRm9ybURhdGFCdWlsZGVyOjphZGRLZXlWYWx1ZVBhaXJBc0YK
IAogdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEoVmVjdG9yPGNo
YXI+JiBidWZmZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOwotCiAgICAgLy8gU2FtZSBz
YWZlIGNoYXJhY3RlcnMgYXMgTmV0c2NhcGUgZm9yIGNvbXBhdGliaWxpdHkuCiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIgc2FmZUNoYXJhY3RlcnNbXSA9ICItLl8qIjsKIApAQCAtMjEwLDggKzIwOSw3
IEBAIHZvaWQgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm0KICAgICAgICAgICAg
IGFwcGVuZChidWZmZXIsICIlMEQlMEEiKTsKICAgICAgICAgZWxzZSBpZiAoYyAhPSAnXHInKSB7
CiAgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCAnJScpOwotICAgICAgICAgICAgYXBwZW5kKGJ1
ZmZlciwgaGV4RGlnaXRzW2MgPj4gNF0pOwotICAgICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgaGV4
RGlnaXRzW2MgJiAweEZdKTsKKyAgICAgICAgICAgIEhleE51bWJlcjo6YXBwZW5kQ2hhclRvVmVj
dG9yPGNoYXI+KGMsIGJ1ZmZlciwgSGV4TnVtYmVyOjpVcHBlckNhc2UpOwogICAgICAgICB9CiAg
ICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcAkocmV2aXNpb24gODA3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAi
U2VsZWN0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTIwOSwxMSArMjEwLDExIEBAIFN0
cmluZyBxdW90ZUFuZEVzY2FwZU5vblByaW50YWJsZXMoY29uc3QKICAgICAgICAgICAgIGlmIChj
ID49IDB4MjAgJiYgYyA8IDB4N0YpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKTsK
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHUgPSBjOwotICAg
ICAgICAgICAgICAgIFN0cmluZyBoZXggPSBTdHJpbmc6OmZvcm1hdCgiXFx4eyVYfSIsIHUpOwot
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbiA9IGhleC5sZW5ndGgoKTsKLSAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoaGV4W2ldKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCdcXCcpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3gnKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCd7Jyk7CisgICAgICAgICAgICAgICAgSGV4TnVtYmVyOjphcHBl
bmRVbnNpZ25lZFRvVmVjdG9yPFVDaGFyPihjLCByZXN1bHQsIC0xLCBIZXhOdW1iZXI6OlVwcGVy
Q2FzZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfScpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85587</attachid>
            <date>2011-03-12 04:32:58 -0800</date>
            <delta_ts>2011-03-17 04:43:10 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>HexNumber.patch</filename>
            <type>text/plain</type>
            <size>55439</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODA5MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTEtMDMtMTIgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFdURiBIZXhOdW1iZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MDk5CisKKyAgICAgICAgSW50cm9kdWNlIGEgY2xhc3MgdGhhdCBpcyBj
YXBhYmxlIG9mIGNvbnZlcnRpbmcgZnJvbSB1bnNpZ25lZCBjaGFyL3Vuc2lnbmVkIHRvIGEgU3Ry
aW5nCisgICAgICAgIG9yIGFwcGVuZCBvbmUvdHdvIG9yIG1vcmUgY2hhcmFjdGVycyB0byBhIFZl
Y3RvcjxjaGFyPi9WZWN0b3I8VUNoYXI+LCBpbiBvcmRlciB0byByZXBsYWNlCisgICAgICAgIHJl
cGVhdGluZyBhbnkgLT4gaGV4IGNvbnZlcnNpb25zIGFuZCBTdHJpbmc6OmZvcm1hdCgiJXgiKSB1
c2FnZXMgYWxsIG92ZXIgV2ViQ29yZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQg
SGV4TnVtYmVyLmggdG8gYnVpbGQuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOiBFeHBv
cnQgU3RyaW5nQnVpbGRlcjo6cmVzZXJ2ZUNhcGFjaXR5LgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmd5cGk6IEFkZCBIZXhOdW1iZXIuaCB0byBidWlsZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOiBFeHBvcnQgU3Ry
aW5nQnVpbGRlcjo6cmVzZXJ2ZUNhcGNpdHkuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNw
cm9qL1dURi9XVEYudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50
eHQ6IERpdHRvLgorICAgICAgICAqIHd0Zi9IZXhOdW1iZXIuaDogQWRkZWQuCisgICAgICAgIChX
VEY6OkhleE51bWJlcjo6Y2hhclRvU3RyaW5nKTogTmV3IHB1YmxpYyBBUEksIHRvIGNvbnZlcnQg
YSB1bnNpZ25lZCBjaGFyIHRvIGEgaGV4IHN0cmluZy4KKyAgICAgICAgKFdURjo6SGV4TnVtYmVy
OjphcHBlbmRDaGFyVG9WZWN0b3IpOiBEaXR0bywgYnV0IGFwcGVuZHMgdG8gYSBWZWN0b3IuCisg
ICAgICAgIChXVEY6OkhleE51bWJlcjo6dW5zaWduZWRUb1N0cmluZyk6IFNhbWUgZm9yIHVuc2ln
bmVkIG51bWJlcnMuCisgICAgICAgIChXVEY6OkhleE51bWJlcjo6YXBwZW5kVW5zaWduZWRUb1Zl
Y3Rvcik6IERpdHRvLgorICAgICAgICAoV1RGOjpIZXhOdW1iZXI6OnVzZUNvbXByZXNzZWRNb2Rl
KTogSW50ZXJuYWwgaGVscGVyLgorICAgICAgICAoV1RGOjpIZXhOdW1iZXI6OmhleERpZ2l0c0Zv
ck1vZGUpOiBEaXR0by4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOiBB
ZGQgdmFyaWFudCBmb3IgbWFrZVN0cmluZywgdGFraW5nIDkgYXJndW1lbnRzLgorICAgICAgICAo
V1RGOjp0cnlNYWtlU3RyaW5nKToKKyAgICAgICAgKFdURjo6bWFrZVN0cmluZyk6CisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6IFJlbW92ZSBhcHBlbmQoVmVjdG9yPFVDaGFyPiwgdW5z
aWduZWQgY2hhcikgZnJlZSBmdW5jdGlvbi4KKwogMjAxMS0wMy0xMSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdo
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gODA3MzIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ2OCw2ICs0NjgsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvSGFzaFRhYmxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRyYWl0
cy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hleE51bWJlci5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0xpc3RIYXNoU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTGlzdFJlZlB0ci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0xvY2tlci5o
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNp
b24gODA3MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODgsNiArMzg4LDcgQEAgX19aTjNXVEYxMmNyZWF0ZVRocmVhZEVQ
RlB2UzBfRVMwX1BLYwogX19aTjNXVEYxMmRldGFjaFRocmVhZEVqCiBfX1pOM1dURjEyaXNNYWlu
VGhyZWFkRXYKIF9fWk4zV1RGMTJyYW5kb21OdW1iZXJFdgorX19aTjNXVEYxM1N0cmluZ0J1aWxk
ZXIxNXJlc2VydmVDYXBhY2l0eUVqCiBfX1pOM1dURjEzU3RyaW5nQnVpbGRlcjExcmVpZnlTdHJp
bmdFdgogX19aTjNXVEYxM1N0cmluZ0J1aWxkZXIxMXNocmlua1RvRml0RXYKIF9fWk4zV1RGMTNT
dHJpbmdCdWlsZGVyNmFwcGVuZEVQS2NqCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNpb24gODA3MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1Nyw3IEBA
CiAgICAgICAgICAgICAnd3RmL0hhc2hTZXQuaCcsCiAgICAgICAgICAgICAnd3RmL0hhc2hUYWJs
ZS5oJywKICAgICAgICAgICAgICd3dGYvSGFzaFRyYWl0cy5oJywKKyAgICAgICAgICAgICd3dGYv
SGV4TnVtYmVyLmgnLAogICAgICAgICAgICAgJ3d0Zi9MaXN0SGFzaFNldC5oJywKICAgICAgICAg
ICAgICd3dGYvTGlzdFJlZlB0ci5oJywKICAgICAgICAgICAgICd3dGYvTG9ja2VyLmgnLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5k
ZWYJKHJldmlzaW9uIDgwNzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29w
eSkKQEAgLTI4MCw2ICsyODAsNyBAQCBFWFBPUlRTCiAgICAgP3JlZ0V4cEZsYWdzQEpTQ0BAWUE/
QVc0UmVnRXhwRmxhZ3NAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/cmVnaXN0ZXJUaHJlYWRATWFj
aGluZVN0YWNrTWFya2VyQEpTQ0BAUUFFWFhaCiAgICAgP3JlaWZ5U3RyaW5nQFN0cmluZ0J1aWxk
ZXJAV1RGQEBBQUVYWFoKKyAgICA/cmVzZXJ2ZUNhcGFjaXR5QFN0cmluZ0J1aWxkZXJAV1RGQEBR
QUVYSUBaCiAgICAgP3JlbGVhc2VEZWNvbW1pdHRlZEBPU0FsbG9jYXRvckBXVEZAQFNBWFBBWElA
WgogICAgID9yZWxlYXNlU3RhY2tATWFya1N0YWNrQEpTQ0BAQ0FYUEFYSUBaCiAgICAgP3JlcG9y
dEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlQEhlYXBASlNDQEBBQUVYSUBaCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RG
L1dURi52Y3Byb2oJKHJldmlzaW9uIDgwNzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA1
LDYgKzcwNSwxMCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHd0ZlxIZXhOdW1iZXIuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlx3dGZcTGlzdEhhc2hTZXQuaCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDgwNzMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsNyBAQAogCQk2NURGQzkzMzA4RUExNzNBMDBG
NzMwMEIgLyogSGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1REZDOTJEMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwICov
OyB9OwogCQk2NUUxQTNERjEyMkI4OTQ1MDBCMjYwOTcgLyogTm9uQ29weWluZ1NvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTFBMkY0MTIyQjg4
MEQwMEIyNjA5NyAvKiBOb25Db3B5aW5nU29ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1RkRFNDlDMEJERDFENEEwMEU4MDExMSAvKiBBc3Nl
cnRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1RTIxN0I4MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25zLmNwcCAqLzsgc2V0dGluZ3Mg
PSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby1taXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUiOyB9OyB9
OworCQk3MTg2QTZFQzEzMTAwQkE1MDA0NDc5RTEgLyogSGV4TnVtYmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTg2QTZFODEzMTAwQjU3MDA0NDc5
RTEgLyogSGV4TnVtYmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzZGQjlGMEYxMkU4NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RkI5RjBFMTJFODUxODYwMDUx
QTJFQiAvKiBTSEExLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzZGQjlGMTExMkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZGQjlGMTAxMkU4NTE5NjAwNTFB
MkVCIC8qIFNIQTEuY3BwICovOyB9OwogCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3Ry
dWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NTAsNiArODUxLDcg
QEAKIAkJNjVFQTczNjIwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2
MCAvKiBDb21tb25JZGVudGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29tbW9uSWRlbnRpZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0
RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCTcxODZBNkU4MTMxMDBCNTcw
MDQ0NzlFMSAvKiBIZXhOdW1iZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGV4TnVtYmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RkI5RjBFMTJFODUx
ODYwMDUxQTJFQiAvKiBTSEExLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNI
QTEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZGQjlGMTAxMkU4NTE5NjAwNTFB
MkVCIC8qIFNIQTEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU0hB
MS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMkM2Qzk4MEQzMUM2QjYwMDJE
NDRFMiAvKiBTY29wZUNoYWluTWFyay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY29wZUNoYWluTWFyay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU2Nyw2
ICsxNTY5LDcgQEAKIAkJCQk2NURGQzkyRDA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmNw
cCAqLywKIAkJCQk2NURGQzkyRTA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmggKi8sCiAJ
CQkJNjVERkM5MkYwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUcmFpdHMuaCAqLywKKwkJCQk3MTg2
QTZFODEzMTAwQjU3MDA0NDc5RTEgLyogSGV4TnVtYmVyLmggKi8sCiAJCQkJNjU3RUI3NDUwQjcw
OEY1NDAwNjM0NjFCIC8qIExpc3RIYXNoU2V0LmggKi8sCiAJCQkJMTQ4QTE2MjYwOTVEMTZCQjAw
NjY2RDBEIC8qIExpc3RSZWZQdHIuaCAqLywKIAkJCQlFMUVFNzkyNzBENkM5NjQ1MDBGRUEzQkEg
LyogTG9ja2VyLmggKi8sCkBAIC0yMjA1LDYgKzIyMDgsNyBAQAogCQkJCUJDMThDNDBEMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBFMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDBDREU3
MTEyREU5N0IxMDAxM0NGQzUgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzE4NkE2RUMx
MzEwMEJBNTAwNDQ3OUUxIC8qIEhleE51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDEwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgU0VUKFdURl9IRUFERVJTCiAg
ICAgSGFzaFNldC5oCiAgICAgSGFzaFRhYmxlLmgKICAgICBIYXNoVHJhaXRzLmgKKyAgICBIZXhO
dW1iZXIuaAogICAgIExpc3RIYXNoU2V0LmgKICAgICBMaXN0UmVmUHRyLmgKICAgICBMb2NrZXIu
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IZXhOdW1iZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hleE51bWJlci5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgSGV4TnVtYmVyX2gKKyNk
ZWZpbmUgSGV4TnVtYmVyX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBIZXhOdW1iZXIgeworcHVibGljOgorICAg
IGVudW0gQ29udmVyc2lvbk1vZGUgeworICAgICAgICBMb3dlckNhc2UgPSAxIDw8IDAsCisgICAg
ICAgIFVwcGVyQ2FzZSA9IDEgPDwgMSwKKyAgICAgICAgQ29tcHJlc3NlZCA9IDEgPDwgMiAvLyBl
Zy4gIzAwMCAodXNlZCBpbiB0aGUgQ1NTUGFyc2VyKQorICAgIH07CisKKyAgICBzdGF0aWMgU3Ry
aW5nIGNoYXJUb1N0cmluZyh1bnNpZ25lZCBjaGFyIG51bWJlciwgdW5zaWduZWQgbW9kZSA9IExv
d2VyQ2FzZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIqIGhleERpZ2l0cyA9IGhleERpZ2l0
c0Zvck1vZGUobW9kZSk7CisgICAgICAgIGlmICh1c2VDb21wcmVzc2VkTW9kZShtb2RlLCBudW1i
ZXIpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZygmaGV4RGlnaXRzW251bWJlciAmIDB4Rl0s
IDEpOworICAgICAgICBWZWN0b3I8VUNoYXIsIDI+IGJ1ZmZlcjsKKyAgICAgICAgYnVmZmVyLnJl
c2l6ZSgyKTsKKyAgICAgICAgYnVmZmVyWzBdID0gaGV4RGlnaXRzW251bWJlciA+PiA0XTsKKyAg
ICAgICAgYnVmZmVyWzFdID0gaGV4RGlnaXRzW251bWJlciAmIDB4Rl07CisgICAgICAgIHJldHVy
biBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIHN0YXRpYyB2b2lkIGFwcGVuZENoYXJUb1Zl
Y3Rvcih1bnNpZ25lZCBjaGFyIG51bWJlciwgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgZGVz
dGluYXRpb24sIHVuc2lnbmVkIG1vZGUgPSBMb3dlckNhc2UpCisgICAgeworICAgICAgICBjb25z
dCBjaGFyKiBoZXhEaWdpdHMgPSBoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOworICAgICAgICBpZiAo
dXNlQ29tcHJlc3NlZE1vZGUobW9kZSwgbnVtYmVyKSkgeworICAgICAgICAgICAgZGVzdGluYXRp
b24uYXBwZW5kKGhleERpZ2l0c1tudW1iZXIgJiAweEZdKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoaGV4RGlnaXRzW251bWJlciA+
PiA0XSk7CisgICAgICAgIGRlc3RpbmF0aW9uLmFwcGVuZChoZXhEaWdpdHNbbnVtYmVyICYgMHhG
XSk7CisgICAgfQorCisgICAgLy8gVGhpcyBjYW4gYmUgdXNlZCB0byByZXBsYWNlIFN0cmluZzo6
Zm9ybWF0KCIlMDN4IiwgIiUwOFgiLCAiJXgiLCAiJVgiKSwgYnkgc3BlY2lmeWluZyBlaXRoZXIg
TG93ZXJDYXNlL1VwcGVyQ2FzZQorICAgIC8vIGFuZCBieSBzZXR0aW5nIHN0b3BBZnRlckRpZ2l0
cyB0byB0aGUgZGVzaXJlZCBudW1iZXIgb2YgZGlnaXRzLgorICAgIHN0YXRpYyBTdHJpbmcgdW5z
aWduZWRUb1N0cmluZyh1bnNpZ25lZCBudW1iZXIsIGludCBzdG9wQWZ0ZXJEaWdpdHMgPSAtMSwg
dW5zaWduZWQgbW9kZSA9IExvd2VyQ2FzZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKG1vZGUg
JiBDb21wcmVzc2VkKSk7IC8vIENvbXByZXNzZWQgbW9kZSBvbmx5IGF2YWlsYWJsZSBmb3IgYXBw
ZW5kVG9WZWN0b3IoKS9jaGFyVG9TdHJpbmcoKS4KKyAgICAgICAgY29uc3QgY2hhciogaGV4RGln
aXRzID0gaGV4RGlnaXRzRm9yTW9kZShtb2RlKTsKKyAgICAgICAgVmVjdG9yPFVDaGFyLCA4PiBy
ZXN1bHQ7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgcmVz
dWx0LnByZXBlbmQoaGV4RGlnaXRzW251bWJlciAlIDE2XSk7CisgICAgICAgICAgICBudW1iZXIg
Pj49IDQ7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0gd2hpbGUgKHN0b3BBZnRlckRpZ2l0
cyA9PSAtMSA/IG51bWJlciA+IDAgOiBpIDwgc3RvcEFmdGVyRGlnaXRzKTsKKworICAgICAgICBp
ZiAoc3RvcEFmdGVyRGlnaXRzICE9IC0xKQorICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0
PGludD4ocmVzdWx0LnNpemUoKSkgPT0gc3RvcEFmdGVyRGlnaXRzKTsKKyAgICAKKyAgICAgICAg
cmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgc3RhdGljIHZvaWQgYXBwZW5kVW5z
aWduZWRUb1ZlY3Rvcih1bnNpZ25lZCBudW1iZXIsIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4m
IGRlc3RpbmF0aW9uLCBpbnQgc3RvcEFmdGVyRGlnaXRzID0gLTEsIHVuc2lnbmVkIG1vZGUgPSBM
b3dlckNhc2UpCisgICAgeworICAgICAgICAvLyBUaGlzIGNvdWxkIGJlIGVhc2lseSBvcHRpbWl6
ZWQsIGlmIHdlIHNlZSB0aGUgbmVlZCBmb3IgaXQuCisgICAgICAgIFN0cmluZyBoZXhTdHJpbmcg
PSB1bnNpZ25lZFRvU3RyaW5nKG51bWJlciwgc3RvcEFmdGVyRGlnaXRzLCBtb2RlKTsKKyAgICAg
ICAgZGVzdGluYXRpb24uYXBwZW5kKGhleFN0cmluZy5jaGFyYWN0ZXJzKCksIGhleFN0cmluZy5s
ZW5ndGgoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBib29sIHVzZUNvbXByZXNz
ZWRNb2RlKHVuc2lnbmVkIG1vZGUsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1vZGUgJiBDb21wcmVzc2VkICYmIG51bWJlciA8IDB4MTA7CisgICAgfQorCisg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGhleERpZ2l0c0Zvck1vZGUodW5zaWduZWQgbW9kZSkKKyAg
ICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIHNfbG93ZXJIZXhEaWdpdHNbMTddID0gIjAx
MjM0NTY3ODlhYmNkZWYiOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBzX3VwcGVySGV4RGln
aXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKKyAgICAgICAgcmV0dXJuIG1vZGUgJiBMb3dl
ckNhc2UgPyBzX2xvd2VySGV4RGlnaXRzIDogc191cHBlckhleERpZ2l0czsKKyAgICB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpIZXhOdW1iZXI7CisKKyNlbmRpZiAv
LyBIZXhOdW1iZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHJldmlzaW9uIDgwNzMyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxNiw2ICs0MTYsNTkgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0
cgogICAgIHJldHVybiByZXN1bHRJbXBsOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdU
eXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFt
ZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2
LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTgsIHR5cGVuYW1lIFN0
cmluZ1R5cGU5PgorUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5
cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0
cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmlu
ZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgsIFN0cmluZ1R5cGU5
IHN0cmluZzkpCit7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIx
KHN0cmluZzEpOworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihz
dHJpbmcyKTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMz4gYWRhcHRlcjMoc3Ry
aW5nMyk7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTQ+IGFkYXB0ZXI0KHN0cmlu
ZzQpOworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU1PiBhZGFwdGVyNShzdHJpbmc1
KTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNj4gYWRhcHRlcjYoc3RyaW5nNik7
CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTc+IGFkYXB0ZXI3KHN0cmluZzcpOwor
ICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU4PiBhZGFwdGVyOChzdHJpbmc4KTsKKyAg
ICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlOT4gYWRhcHRlcjkoc3RyaW5nOSk7CisKKyAg
ICBVQ2hhciogYnVmZmVyOworICAgIGJvb2wgb3ZlcmZsb3cgPSBmYWxzZTsKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSBhZGFwdGVyMS5sZW5ndGgoKTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3Ro
LCBhZGFwdGVyMi5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5n
dGgsIGFkYXB0ZXIzLmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxl
bmd0aCwgYWRhcHRlcjQubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3co
bGVuZ3RoLCBhZGFwdGVyNS5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxv
dyhsZW5ndGgsIGFkYXB0ZXI2Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJm
bG93KGxlbmd0aCwgYWRhcHRlcjcubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3Zl
cmZsb3cobGVuZ3RoLCBhZGFwdGVyOC5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhP
dmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI5Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgaWYgKG92
ZXJmbG93KQorICAgICAgICByZXR1cm4gMDsKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
c3VsdEltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVm
ZmVyKTsKKyAgICBpZiAoIXJlc3VsdEltcGwpCisgICAgICAgIHJldHVybiAwOworCisgICAgVUNo
YXIqIHJlc3VsdCA9IGJ1ZmZlcjsKKyAgICBhZGFwdGVyMS53cml0ZVRvKHJlc3VsdCk7CisgICAg
cmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOworICAgIGFkYXB0ZXIyLndyaXRlVG8ocmVzdWx0
KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjIubGVuZ3RoKCk7CisgICAgYWRhcHRlcjMud3JpdGVU
byhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyMy5sZW5ndGgoKTsKKyAgICBhZGFwdGVy
NC53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXI0Lmxlbmd0aCgpOworICAg
IGFkYXB0ZXI1LndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjUubGVuZ3Ro
KCk7CisgICAgYWRhcHRlcjYud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVy
Ni5sZW5ndGgoKTsKKyAgICBhZGFwdGVyNy53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9
IGFkYXB0ZXI3Lmxlbmd0aCgpOworICAgIGFkYXB0ZXI4LndyaXRlVG8ocmVzdWx0KTsKKyAgICBy
ZXN1bHQgKz0gYWRhcHRlcjgubGVuZ3RoKCk7CisgICAgYWRhcHRlcjkud3JpdGVUbyhyZXN1bHQp
OworCisgICAgcmV0dXJuIHJlc3VsdEltcGw7Cit9CisKKwogLy8gQ29udmVuaWVuY2Ugb25seS4K
IHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxPgogU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5n
VHlwZTEgc3RyaW5nMSkKQEAgLTQ4Niw2ICs1MzksMTUgQEAgU3RyaW5nIG1ha2VTdHJpbmcoU3Ry
aW5nVHlwZTEgc3RyaW5nMSwgUwogICAgIHJldHVybiByZXN1bHRJbXBsOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0
cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5
cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5n
VHlwZTgsIHR5cGVuYW1lIFN0cmluZ1R5cGU5PgorU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlw
ZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3Ry
aW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5n
NiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTggc3RyaW5nOCwgU3RyaW5nVHlwZTkg
c3RyaW5nOSkKK3sKKyAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlN
YWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUsIHN0
cmluZzYsIHN0cmluZzcsIHN0cmluZzgsIHN0cmluZzkpOworICAgIGlmICghcmVzdWx0SW1wbCkK
KyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gcmVzdWx0SW1wbDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6bWFrZVN0cmluZzsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHJldmlzaW9uIDgwNzMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NTksMjYgKzQ1OSw2IEBAIGlubGluZSB2b2lkIGFwcGVuZChWZWN0b3I8VUNoYXI+JiB2ZWN0b3IK
ICAgICB2ZWN0b3IuYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzKCksIHN0cmluZy5sZW5ndGgoKSk7
CiB9CiAKLWlubGluZSB2b2lkIGFwcGVuZE51bWJlcihWZWN0b3I8VUNoYXI+JiB2ZWN0b3IsIHVu
c2lnbmVkIGNoYXIgbnVtYmVyKQotewotICAgIGludCBudW1iZXJMZW5ndGggPSBudW1iZXIgPiA5
OSA/IDMgOiAobnVtYmVyID4gOSA/IDIgOiAxKTsKLSAgICBzaXplX3QgdmVjdG9yU2l6ZSA9IHZl
Y3Rvci5zaXplKCk7Ci0gICAgdmVjdG9yLmdyb3codmVjdG9yU2l6ZSArIG51bWJlckxlbmd0aCk7
Ci0KLSAgICBzd2l0Y2ggKG51bWJlckxlbmd0aCkgewotICAgIGNhc2UgMzoKLSAgICAgICAgdmVj
dG9yW3ZlY3RvclNpemUgKyAyXSA9IG51bWJlciAlIDEwICsgJzAnOwotICAgICAgICBudW1iZXIg
Lz0gMTA7Ci0KLSAgICBjYXNlIDI6Ci0gICAgICAgIHZlY3Rvclt2ZWN0b3JTaXplICsgMV0gPSBu
dW1iZXIgJSAxMCArICcwJzsKLSAgICAgICAgbnVtYmVyIC89IDEwOwotCi0gICAgY2FzZSAxOgot
ICAgICAgICB2ZWN0b3JbdmVjdG9yU2l6ZV0gPSBudW1iZXIgJSAxMCArICcwJzsKLSAgICB9Ci19
Ci0KIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gaW5saW5lIGJvb2wg
aXNBbGxTcGVjaWFsQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC01
MDksNyArNDg5LDYgQEAgdGVtcGxhdGUgPD4gc3RydWN0IFZlY3RvclRyYWl0czxTdHJpbmc+IAog
dXNpbmcgV1RGOjpDU3RyaW5nOwogdXNpbmcgV1RGOjpTdHJpbmc7CiB1c2luZyBXVEY6OmFwcGVu
ZDsKLXVzaW5nIFdURjo6YXBwZW5kTnVtYmVyOwogdXNpbmcgV1RGOjpjaGFyYWN0ZXJzQXJlQWxs
QVNDSUk7CiB1c2luZyBXVEY6OmNoYXJhY3RlcnNBcmVBbGxMYXRpbjE7CiB1c2luZyBXVEY6OmNo
YXJhY3RlcnNUb0ludFN0cmljdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwOTM0KQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAK
KzIwMTEtMDMtMTIgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFdURiBIZXhOdW1iZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MDk5CisKKyAgICAgICAgSW50cm9kdWNlIGEgY2xhc3MgdGhhdCBpcyBj
YXBhYmxlIG9mIGNvbnZlcnRpbmcgZnJvbSB1bnNpZ25lZCBjaGFyL3Vuc2lnbmVkIHRvIGEgU3Ry
aW5nCisgICAgICAgIG9yIGFwcGVuZCBvbmUvdHdvIG9yIG1vcmUgY2hhcmFjdGVycyB0byBhIFZl
Y3RvcjxjaGFyPi9WZWN0b3I8VUNoYXI+LCBpbiBvcmRlciB0byByZXBsYWNlCisgICAgICAgIHJl
cGVhdGluZyBhbnkgLT4gaGV4IGNvbnZlcnNpb25zIGFuZCBTdHJpbmc6OmZvcm1hdCgiJXgiKSB1
c2FnZXMgYWxsIG92ZXIgV2ViQ29yZS4KKworICAgICAgICBTd2l0Y2ggYSBmZXcgcGxhY2VzIGZy
b20gdXNpbmcgVmVjdG9yPFVDaGFyPiB0byBTdHJpbmdCdWlsZGVyLCB3aGljaCBpcyBtb3JlIHN1
aXRhYmxlLgorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBjc3MvQ1NTT01VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVDaGFyYWN0
ZXJBc0NvZGVQb2ludCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpxdW90ZUNTU1N0cmluZyk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKyAg
ICAgICAgKiBkb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0QXR0cmlidXRlTmFtZVRvUHJvcGVydHlOYW1lKToKKyAgICAgICAgKiBkb20vU2NyaXB0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpzY3JpcHRDb250
ZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVSZWFkYWJsZVN0cmluZ0Zyb21CaW5hcnkpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodCk6Cisg
ICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzZXRU
b29sVGlwKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFNvdXJjZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2Rl
Rm9yRmlsZU5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6S1VSTDo6cHJldHR5VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVzY2FwZWRD
aGFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VVUlELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXJpYWxpemVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQW5k
RXNjYXBlTm9uUHJpbnRhYmxlcyk6CisKIDIwMTEtMDMtMTIgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBJbnNwZWN0IEVsZW1l
bnQgYWN0aW9uIHJlZ3Jlc3Npb24gZml4LgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL0hleE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0hleE51bWJlcl9oCisjZGVmaW5lIFdl
YkNvcmVfRldEX0hleE51bWJlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGV4TnVtYmVy
Lmg+CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAJKHJldmlzaW9uIDgw
NzMyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTT01V
dGlscy5oIgogCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsNyArNTMsMTAgQEAgdm9p
ZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBWZWN0bwogCiB2b2lkIHNlcmlhbGl6ZUNo
YXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIgYywgVmVjdG9yPFVDaGFyPiYgYXBwZW5kVG8pCiB7
Ci0gICAgYXBwZW5kKGFwcGVuZFRvLCBTdHJpbmc6OmZvcm1hdCgiXFwleCAiLCBjKSk7CisgICAg
U3RyaW5nIGhleFN0cmluZyA9IEhleE51bWJlcjo6dW5zaWduZWRUb1N0cmluZyhjKTsKKyAgICBh
cHBlbmRUby5hcHBlbmQoJ1xcJyk7CisgICAgYXBwZW5kVG8uYXBwZW5kKGhleFN0cmluZy5jaGFy
YWN0ZXJzKCksIGhleFN0cmluZy5sZW5ndGgoKSk7CisgICAgYXBwZW5kVG8uYXBwZW5kKCcgJyk7
CiB9CiAKIHZvaWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IFN0cmluZyYgYXBwZW5kVG8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNp
b24gODA3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUu
aCIKICNpbmNsdWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUgPGxpbWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogCkBAIC02Mzk4LDExICs2Mzk5LDE2
IEBAIFN0cmluZyBxdW90ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmkKICAgICAgICAgICAg
IGJ1ZmZlcltpbmRleCsrXSA9IGNoOwogICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsK
ICAgICAgICAgfSBlbHNlIGlmIChjaCA8IDB4MjAgfHwgY2ggPT0gMHg3RikgeyAvLyBDb250cm9s
IGNoYXJhY3RlcnMuCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTdd
ID0gIjAxMjM0NTY3ODlhYmNkZWYiOworICAgICAgICAgICAgVmVjdG9yPGNoYXIsIDI+IGRlc3Rp
bmF0aW9uOworICAgICAgICAgICAgSGV4TnVtYmVyOjphcHBlbmRDaGFyVG9WZWN0b3I8Y2hhciwg
Mj4oY2gsIGRlc3RpbmF0aW9uLCBIZXhOdW1iZXI6Okxvd2VyQ2FzZSB8IEhleE51bWJlcjo6Q29t
cHJlc3NlZCk7CisgICAgICAgICAgICBBU1NFUlQoZGVzdGluYXRpb24uc2l6ZSgpIDw9IDIpOwog
ICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gJ1xcJzsKLSAgICAgICAgICAgIGlmIChjaCA+
PSAweDEwKQotICAgICAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1tjaCA+
PiA0XTsKLSAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1tjaCAmIDB4Rl07
CisgICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uc2l6ZSgpID09IDEpCisgICAgICAgICAgICAg
ICAgYnVmZmVyW2luZGV4KytdID0gZGVzdGluYXRpb25bMF07CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBkZXN0aW5hdGlvblswXTsKKyAgICAg
ICAgICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBkZXN0aW5hdGlvblsxXTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGFmdGVyRXNjYXBlID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIFNwYWNlIGNoYXJhY3RlciBtYXkgYmUgcmVxdWlyZWQgdG8gc2VwYXJhdGUg
YmFja3NsYXNoLWVzY2FwZSBzZXF1ZW5jZSBhbmQgbm9ybWFsIGNoYXJhY3RlcnMuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHJldmlzaW9uIDgwNzMyKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQog
I2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgpAQCAtNjMzLDU4ICs2MzUsNTggQEAgU3RyaW5n
IENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAgICAgICAgdGV4dCA9IGZv
cm1hdE51bWJlcihtX3ZhbHVlLm51bSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pICsgIiUiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSwgIiUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19FTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJl
bSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pLCAiZW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19FWFM6Ci0g
ICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJleCI7CisgICAg
ICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiZXgi
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19SRU1TOgotICAgICAgICAg
ICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicmVtIjsKKyAgICAgICAgICAg
IHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJyZW0iKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QWDoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInB4IjsKKyAgICAgICAgICAgIHRleHQgPSBt
YWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJweCIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NNOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51
bWJlcihtX3ZhbHVlLm51bSkgKyAiY20iOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmco
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImNtIik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfTU06Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFs
dWUubnVtKSArICJtbSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1i
ZXIobV92YWx1ZS5udW0pLCAibW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19JTjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsg
ImluIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSksICJpbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BUOgot
ICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHQiOworICAg
ICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgInB0
Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUEM6Ci0gICAgICAgICAg
ICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwYyI7CisgICAgICAgICAgICB0
ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAicGMiKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ERUc6Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJkZWciOworICAgICAgICAgICAgdGV4dCA9IG1h
a2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImRlZyIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pICsgInJhZCI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmlu
Zyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAicmFkIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NfR1JBRDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pICsgImdyYWQiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImdyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU19NUzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pICsgIm1zIjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJl
cihtX3ZhbHVlLm51bSksICJtcyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX1M6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJz
IjsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSksICJzIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSFo6Ci0gICAg
ICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJoeiI7CisgICAgICAg
ICAgICB0ZXh0ID0gbWFrZVN0cmluZyhmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pLCAiaHoiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4
dCA9IG1ha2VTdHJpbmcoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSwgImtoeiIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRleHQgPSBt
YWtlU3RyaW5nKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSksICJ0dXJuIik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfRElNRU5TSU9OOgogICAgICAgICAgICAgLy8gRklY
TUUKQEAgLTY5MywyMiArNjk1LDEzIEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4
dCgpIGNvbnMKICAgICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFs
dWUuc3RyaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19VUkk6Ci0g
ICAgICAgICAgICB0ZXh0ID0gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVlLnN0
cmluZykgKyAiKSI7CisgICAgICAgICAgICB0ZXh0ID0gbWFrZVN0cmluZygidXJsKCIsIHF1b3Rl
Q1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpLCAnKScpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX0lERU5UOgogICAgICAgICAgICAgdGV4dCA9IHZhbHVlT3JQcm9w
ZXJ0eU5hbWUobV92YWx1ZS5pZGVudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfQVRUUjogewotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJp
bmcsIGF0dHJQYXJlbiwgKCJhdHRyKCIpKTsKLQotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiBy
ZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg2ICsgbV92
YWx1ZS5zdHJpbmctPmxlbmd0aCgpKTsKLQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgYXR0
clBhcmVuKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIG1fdmFsdWUuc3RyaW5nKTsKLSAg
ICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoJyknKTsKLQotICAgICAgICAgICAgdGV4
dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICAgICAgICAgIHRleHQgPSBtYWtlU3RyaW5n
KCJhdHRyKCIsIFN0cmluZyhtX3ZhbHVlLnN0cmluZyksICcpJyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19DT1VOVEVSX05BTUU6CkBAIC03MTcsODYg
KzcxMCw1OCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAg
ICAgICAgICB0ZXh0ICs9ICIpIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19DT1VOVEVSOgotICAgICAgICAgICAgdGV4dCA9ICJjb3VudGVyKCI7Ci0gICAgICAgICAgICB0
ZXh0ICs9IFN0cmluZzo6bnVtYmVyKG1fdmFsdWUubnVtKTsKLSAgICAgICAgICAgIHRleHQgKz0g
IikiOworICAgICAgICAgICAgdGV4dCA9IG1ha2VTdHJpbmcoImNvdW50ZXIoIiwgU3RyaW5nOjpu
dW1iZXIobV92YWx1ZS5udW0pLCAnKScpOwogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBsaXN0
LXN0eWxlIGFuZCBzZXBhcmF0b3IKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19SRUNUOiB7Ci0gICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywg
cmVjdFBhcmVuLCAoInJlY3QoIikpOwotCiAgICAgICAgICAgICBSZWN0KiByZWN0VmFsID0gZ2V0
UmVjdFZhbHVlKCk7Ci0gICAgICAgICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLSAgICAgICAg
ICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDMyKTsKLSAgICAgICAgICAgIGFwcGVu
ZChyZXN1bHQsIHJlY3RQYXJlbik7Ci0KLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJlY3RW
YWwtPnRvcCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwot
Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZWN0VmFsLT5yaWdodCgpLT5jc3NUZXh0KCkp
OwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotCi0gICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCByZWN0VmFsLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAnKTsKLQotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+bGVm
dCgpLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwotCi0gICAg
ICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4dCA9
IG1ha2VTdHJpbmcoInJlY3QoIiwgcmVjdFZhbC0+dG9wKCktPmNzc1RleHQoKSwgJyAnLCByZWN0
VmFsLT5yaWdodCgpLT5jc3NUZXh0KCksICcgJywgcmVjdFZhbC0+Ym90dG9tKCktPmNzc1RleHQo
KSwgJyAnLCByZWN0VmFsLT5sZWZ0KCktPmNzc1RleHQoKSwgJyknKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgogICAgICAgICBjYXNl
IENTU19QQVJTRVJfSEVYQ09MT1I6IHsKLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCBjb21tYVNwYWNlLCAoIiwgIikpOwotICAgICAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHJnYlBhcmVuLCAoInJnYigiKSk7Ci0gICAgICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcmdiYVBhcmVuLCAoInJnYmEoIikp
OwotCiAgICAgICAgICAgICBSR0JBMzIgcmdiQ29sb3IgPSBtX3ZhbHVlLnJnYmNvbG9yOwogICAg
ICAgICAgICAgaWYgKG1fdHlwZSA9PSBDU1NfUEFSU0VSX0hFWENPTE9SKQogICAgICAgICAgICAg
ICAgIENvbG9yOjpwYXJzZUhleENvbG9yKG1fdmFsdWUuc3RyaW5nLCByZ2JDb2xvcik7CisKICAg
ICAgICAgICAgIENvbG9yIGNvbG9yKHJnYkNvbG9yKTsKIAotICAgICAgICAgICAgVmVjdG9yPFVD
aGFyPiByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgz
Mik7CisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgICAgICBidWls
ZGVyLnJlc2VydmVDYXBhY2l0eSgzMik7CiAgICAgICAgICAgICBpZiAoY29sb3IuaGFzQWxwaGEo
KSkKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZ2JhUGFyZW4pOworICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJyZ2JhKCIpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJnYlBhcmVuKTsKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgicmdiKCIpOwogCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5yZWQoKSkpOwotICAgICAgICAgICAgYXBw
ZW5kKHJlc3VsdCwgY29tbWFTcGFjZSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKFN0cmluZzo6bnVtYmVyKGNvbG9yLnJlZCgpKSwgIiwgIikpOworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhTdHJpbmc6Om51bWJlcihjb2xvci5ncmVlbigpKSwg
IiwgIikpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIoY29sb3Iu
Ymx1ZSgpKSk7CiAKLSAgICAgICAgICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGNvbG9yLmdyZWVuKCkpKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1
bHQsIGNvbW1hU3BhY2UpOwotCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5ibHVlKCkpKTsKLSAgICAgICAgICAgIGlmIChj
b2xvci5oYXNBbHBoYSgpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29tbWFT
cGFjZSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIoY29s
b3IuYWxwaGEoKSAvIDI1Ni4wZikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNv
bG9yLmhhc0FscGhhKCkpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
ZygiLCAiLCBTdHJpbmc6Om51bWJlcihjb2xvci5hbHBoYSgpIC8gMjU2LjBmKSkpOwogCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjph
ZG9wdChyZXN1bHQpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICAgICAg
ICAgIHRleHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU19QQUlSOgotICAgICAgICAgICAgdGV4dCA9IG1fdmFsdWUu
cGFpci0+Zmlyc3QoKS0+Y3NzVGV4dCgpOwotICAgICAgICAgICAgdGV4dCArPSAiICI7Ci0gICAg
ICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKTsKKyAgICAg
ICAgICAgIHRleHQgPSBtYWtlU3RyaW5nKG1fdmFsdWUucGFpci0+Zmlyc3QoKS0+Y3NzVGV4dCgp
LCAnICcsIG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgIGNhc2UgQ1NTX0RB
U0hCT0FSRF9SRUdJT046CisgICAgICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046IHsKKyAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgICAgIGZvciAoRGFzaGJv
YXJkUmVnaW9uKiByZWdpb24gPSBnZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOyByZWdpb247IHJl
Z2lvbiA9IHJlZ2lvbi0+bV9uZXh0LmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZXh0
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAg
ICAgICAgICAgICB0ZXh0ICs9ICJkYXNoYm9hcmQtcmVnaW9uKCI7Ci0gICAgICAgICAgICAgICAg
dGV4dCArPSByZWdpb24tPm1fbGFiZWw7CisgICAgICAgICAgICAgICAgaWYgKCFidWlsZGVyLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJkYXNoYm9hcmQtcmVnaW9uKCIs
IHJlZ2lvbi0+bV9sYWJlbCkpOwogICAgICAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJj
bGUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiBjaXJjbGUiOworICAgICAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGNpcmNsZSIpOwogICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAi
IHJlY3RhbmdsZSI7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiIHJlY3RhbmdsZSIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICB0ZXh0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHJl
Z2lvbi0+dG9wKCktPm1fdHlwZSA9PSBDU1NfSURFTlQgJiYgcmVnaW9uLT50b3AoKS0+Z2V0SWRl
bnQoKSA9PSBDU1NWYWx1ZUludmFsaWQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJl
Z2lvbi0+cmlnaHQoKS0+bV90eXBlID09IENTU19JREVOVCk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChyZWdpb24tPmJvdHRvbSgpLT5tX3R5cGUgPT0gQ1NTX0lERU5UKTsKQEAgLTgwNSwx
NSArNzcwLDE3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+Ym90dG9tKCktPmdldElkZW50KCkgPT0g
Q1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bGVm
dCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAg
ICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0g
ICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpICsg
IiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0
KCk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcocmVnaW9uLT50b3AoKS0+Y3NzVGV4
dCgpLCAnICcpKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
ZyhyZWdpb24tPnJpZ2h0KCktPmNzc1RleHQoKSwgJyAnKSk7CisgICAgICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpLCAn
ICcpKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocmVnaW9uLT5sZWZ0KCkt
PmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRleHQgKz0g
IikiOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICB0ZXh0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6
IHsKICAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1fdmFsdWUuaWRlbnQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmNwcAkocmV2
aXNpb24gODA3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5
cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTEsMjMgKzUyLDIzIEBAIHN0YXRpYyBib29sIGlzVmFsaWRBdHRyaWJ1
dGVOYW1lKGNvbnN0IFMKIAogc3RhdGljIFN0cmluZyBjb252ZXJ0QXR0cmlidXRlTmFtZVRvUHJv
cGVydHlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBWZWN0b3I8VUNoYXI+IG5ld1N0
cmluZ0J1ZmZlcjsKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAKICAgICBjb25z
dCBVQ2hhciogY2hhcmFjdGVycyA9IG5hbWUuY2hhcmFjdGVycygpOwogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IG5hbWUubGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gNTsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldICE9ICctJykKLSAgICAgICAgICAg
IG5ld1N0cmluZ0J1ZmZlci5hcHBlbmQoY2hhcmFjdGVyc1tpXSk7CisgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChjaGFyYWN0ZXJzW2ldKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoKGkgKyAxIDwgbGVuZ3RoKSAmJiBpc0FTQ0lJTG93ZXIoY2hhcmFjdGVyc1tpICsg
MV0pKSB7Ci0gICAgICAgICAgICAgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZCh0b0FTQ0lJVXBw
ZXIoY2hhcmFjdGVyc1tpICsgMV0pKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCh0b0FTQ0lJVXBwZXIoY2hhcmFjdGVyc1tpICsgMV0pKTsKICAgICAgICAgICAgICAgICAr
K2k7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBuZXdTdHJpbmdCdWZmZXIu
YXBwZW5kKGNoYXJhY3RlcnNbaV0pOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGNoYXJhY3RlcnNbaV0pOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFN0cmlu
Zzo6YWRvcHQobmV3U3RyaW5nQnVmZmVyKTsKKyAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0
cmluZygpOwogfQogCiBzdGF0aWMgYm9vbCBwcm9wZXJ0eU5hbWVNYXRjaGVzQXR0cmlidXRlTmFt
ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1l
KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gODA3MzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIEVO
QUJMRShTVkcpCkBAIC0zMTMsNyArMzE0LDcgQEAgYm9vbCBTY3JpcHRFbGVtZW50Ojppc1Njcmlw
dEZvckV2ZW50U3VwcAogCiBTdHJpbmcgU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgpIGNv
bnN0CiB7Ci0gICAgVmVjdG9yPFVDaGFyPiB2YWw7CisgICAgU3RyaW5nQnVpbGRlciBjb250ZW50
OwogICAgIFRleHQqIGZpcnN0VGV4dE5vZGUgPSAwOwogICAgIGJvb2wgZm91bmRNdWx0aXBsZVRl
eHROb2RlcyA9IGZhbHNlOwogCkBAIC0zMjMsMTAgKzMyNCwxMCBAQCBTdHJpbmcgU2NyaXB0RWxl
bWVudDo6c2NyaXB0Q29udGVudCgpIGNvCiAKICAgICAgICAgVGV4dCogdCA9IHN0YXRpY19jYXN0
PFRleHQqPihuKTsKICAgICAgICAgaWYgKGZvdW5kTXVsdGlwbGVUZXh0Tm9kZXMpCi0gICAgICAg
ICAgICBhcHBlbmQodmFsLCB0LT5kYXRhKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQo
dC0+ZGF0YSgpKTsKICAgICAgICAgZWxzZSBpZiAoZmlyc3RUZXh0Tm9kZSkgewotICAgICAgICAg
ICAgYXBwZW5kKHZhbCwgZmlyc3RUZXh0Tm9kZS0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGFwcGVu
ZCh2YWwsIHQtPmRhdGEoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZChmaXJzdFRleHRO
b2RlLT5kYXRhKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQodC0+ZGF0YSgpKTsKICAg
ICAgICAgICAgIGZvdW5kTXVsdGlwbGVUZXh0Tm9kZXMgPSB0cnVlOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIGZpcnN0VGV4dE5vZGUgPSB0OwpAQCAtMzM1LDcgKzMzNiw3IEBAIFN0cmlu
ZyBTY3JpcHRFbGVtZW50OjpzY3JpcHRDb250ZW50KCkgY28KICAgICBpZiAoZmlyc3RUZXh0Tm9k
ZSAmJiAhZm91bmRNdWx0aXBsZVRleHROb2RlcykKICAgICAgICAgcmV0dXJuIGZpcnN0VGV4dE5v
ZGUtPmRhdGEoKTsKIAotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHZhbCk7CisgICAgcmV0dXJu
IGNvbnRlbnQudG9TdHJpbmcoKTsKIH0KIAogU2NyaXB0RWxlbWVudCogdG9TY3JpcHRFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRl
cmNoYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50
ZXJjaGFuZ2UuY3BwCShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SFRNTEludGVyY2hhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogI2lu
Y2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTYsNyArNTgs
NyBAQCBTdHJpbmcgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hCiAgICAgaWYgKG5v
ZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+cHJlc2VydmVOZXds
aW5lKCkpCiAgICAgICAgIHJldHVybiBpbjsKIAotICAgIFZlY3RvcjxVQ2hhcj4gczsKKyAgICBT
dHJpbmdCdWlsZGVyIHM7CiAKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICB1bnNpZ25lZCBjb25z
dW1lZCA9IDA7CkBAIC03MywzMCArNzUsMjUgQEAgU3RyaW5nIGNvbnZlcnRIVE1MVGV4dFRvSW50
ZXJjaGFuZ2VGb3JtYQogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFkZCA9IGNvdW50ICUgMzsK
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFkZCkgewogICAgICAgICAgICAgICAgICAgICBjYXNl
IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQocywgY29udmVydGVkU3BhY2VTdHJp
bmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKHMsIGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcy5hcHBlbmQobWFrZVN0cmluZyhjb252ZXJ0ZWRTcGFjZVN0cmlu
ZygpLCAnICcsIGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZCA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCB8fCBp
ICsgMSA9PSBpbi5sZW5ndGgoKSkgLy8gYXQgc3RhcnQgb3IgZW5kIG9mIHN0cmluZwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChzLCBjb252ZXJ0ZWRTcGFjZVN0cmluZygpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChjb252ZXJ0ZWRTcGFjZVN0cmlu
ZygpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzLmFwcGVuZCgnICcpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
ID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgc3RhcnQgb2Ygc3Ry
aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHMsIGNvbnZlcnRlZFNwYWNl
U3RyaW5nKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCcgJyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQobWFrZVN0cmluZyhjb252ZXJ0ZWRT
cGFjZVN0cmluZygpLCAnICcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
aSArIDIgPT0gaW4ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
YXQgZW5kIG9mIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChzLCBj
b252ZXJ0ZWRTcGFjZVN0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBl
bmQocywgY29udmVydGVkU3BhY2VTdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChzLCBjb252ZXJ0ZWRT
cGFjZVN0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZCgnICcp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMuYXBwZW5kKGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMuYXBwZW5kKGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQobWFr
ZVN0cmluZyhjb252ZXJ0ZWRTcGFjZVN0cmluZygpLCAnICcpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb3VudCAt
PSBhZGQ7CkBAIC0xMDYsNyArMTAzLDcgQEAgU3RyaW5nIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJj
aGFuZ2VGb3JtYQogICAgICAgICBpICs9IGNvbnN1bWVkOwogICAgIH0KIAotICAgIHJldHVybiBT
dHJpbmc6OmFkb3B0KHMpOworICAgIHJldHVybiBzLnRvU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAJKHJldmlzaW9uIDgwNzMyKQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
aCIKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CkBAIC00NTYsMTcgKzQ1Nywx
MyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmZyYW1lRGV0YWNoCiBzdGF0aWMgU3Ry
aW5nIGNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFyeShjb25zdCB1bnNpZ25lZCBjaGFyKiB2
YWx1ZSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoID4gMCk7Ci0gICAgc3Rh
dGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLSAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IGxlbmd0aCAqIDMgLSAxOwotICAgIFN0cmluZ0J1ZmZlciBidWZm
ZXIoYnVmZmVyU2l6ZSk7Ci0gICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBWZWN0b3I8VUNoYXI+
IGJ1ZmZlcjsKKyAgICBidWZmZXIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggKiAzIC0g
MSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBp
ZiAoaSA+IDApCi0gICAgICAgICAgICBidWZmZXJbaW5kZXgrK10gPSAnOic7Ci0gICAgICAgIGJ1
ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1t2YWx1ZVtpXSA+PiA0XTsKLSAgICAgICAgYnVmZmVy
W2luZGV4KytdID0gaGV4RGlnaXRzW3ZhbHVlW2ldICYgMHhGXTsKKyAgICAgICAgICAgIGJ1ZmZl
ci5hcHBlbmQoJzonKTsKKyAgICAgICAgSGV4TnVtYmVyOjphcHBlbmRDaGFyVG9WZWN0b3I8VUNo
YXI+KHZhbHVlW2ldLCBidWZmZXIsIEhleE51bWJlcjo6VXBwZXJDYXNlKTsKICAgICB9Ci0gICAg
QVNTRVJUKGluZGV4ID09IGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1
ZmZlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSw4IEBACiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMwLDE5ICsx
MzIsMTYgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zcwogICAgIGNv
bnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJGaWVsZHMgPSByZXF1ZXN0Lmh0dHBIZWFk
ZXJGaWVsZHMoKTsKIAogICAgIGlmIChyZXF1ZXN0SGVhZGVyRmllbGRzLnNpemUoKSA+IDApIHsK
LSAgICAgICAgVmVjdG9yPFVDaGFyPiBoZWFkZXJCdWZmZXI7CisgICAgICAgIFN0cmluZ0J1aWxk
ZXIgaGVhZGVyQnVpbGRlcjsKICAgICAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSByZXF1ZXN0SGVhZGVyRmllbGRzLmJlZ2luKCk7Ci0gICAgICAgIGFwcGVuZChoZWFkZXJC
dWZmZXIsIGl0LT5maXJzdCk7CisgICAgICAgIGhlYWRlckJ1aWxkZXIuYXBwZW5kKGl0LT5maXJz
dCk7CiAgICAgICAgICsraXQ7CiAKICAgICAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gcmVxdWVzdEhlYWRlckZpZWxkcy5lbmQoKTsKLSAgICAgICAgZm9yICg7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaGVhZGVyQnVmZmVyLmFwcGVuZCgnLCcpOwotICAg
ICAgICAgICAgaGVhZGVyQnVmZmVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgYXBwZW5kKGhl
YWRlckJ1ZmZlciwgaXQtPmZpcnN0KTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKDsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICAgICAgaGVhZGVyQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygi
LCAiLCBpdC0+Zmlyc3Quc3RyaW5nKCkpKTsKIAotICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNl
dEhUVFBIZWFkZXJGaWVsZCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzIiwgU3RyaW5n
OjphZG9wdChoZWFkZXJCdWZmZXIpKTsKKyAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyIsIGhlYWRlckJ1aWxk
ZXIudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRQcmlvcml0
eShyZXF1ZXN0LnByaW9yaXR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNp
b24gODA3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKQEAgLTM5OSwxMyArNDAwLDEzIEBAIHZvaWQgQ2hyb21l
OjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXMKICAgICAgICAgICAgICAgICAgICAgRmlsZUxp
c3QqIGZpbGVzID0gaW5wdXQtPmZpbGVzKCk7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxpc3RTaXplID0gZmlsZXMtPmxlbmd0aCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAobGlz
dFNpemUgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VUNoYXI+IG5hbWVz
OworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBuYW1lczsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChuYW1lcywgZmlsZXMtPml0ZW0oaSkt
PmZpbGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZChm
aWxlcy0+aXRlbShpKS0+ZmlsZU5hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGkgIT0gbGlzdFNpemUgLSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
YW1lcy5hcHBlbmQoJ1xuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0b29sVGlwID0gU3RyaW5nOjphZG9wdChuYW1lcyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0b29sVGlwID0gbmFtZXMudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGZpbGVuYW1lIGFsd2F5cyBkaXNwbGF5IGFzIExUUi4KICAgICAgICAgICAg
ICAgICAgICAgICAgIHRvb2xUaXBEaXJlY3Rpb24gPSBMVFI7CiAgICAgICAgICAgICAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiA4
MDczMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw4IEBACiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIK
ICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zODgs
MTggKzM5MCwxNCBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuICJmaWxlOi8vIjsKICAgICB9CiAKLSAgICBWZWN0b3I8VUNoYXI+IHJlc3Vs
dDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Byb3RvY29sLmxlbmd0aCgp
ICsgbV9ob3N0Lmxlbmd0aCgpICsgMTApOwotICAgIGFwcGVuZChyZXN1bHQsIG1fcHJvdG9jb2wp
OwotICAgIGFwcGVuZChyZXN1bHQsICI6Ly8iKTsKLSAgICBhcHBlbmQocmVzdWx0LCBtX2hvc3Qp
OwotCi0gICAgaWYgKG1fcG9ydCkgewotICAgICAgICBhcHBlbmQocmVzdWx0LCAiOiIpOwotICAg
ICAgICBhcHBlbmQocmVzdWx0LCBTdHJpbmc6Om51bWJlcihtX3BvcnQpKTsKLSAgICB9CisgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShtX3Byb3Rv
Y29sLmxlbmd0aCgpICsgbV9ob3N0Lmxlbmd0aCgpICsgMTApOworICAgIHJlc3VsdC5hcHBlbmQo
bWFrZVN0cmluZyhtX3Byb3RvY29sLCAiOi8vIiwgbV9ob3N0KSk7CisKKyAgICBpZiAobV9wb3J0
KQorICAgICAgICByZXN1bHQuYXBwZW5kKG1ha2VTdHJpbmcoIjoiLCBTdHJpbmc6Om51bWJlciht
X3BvcnQpKSk7CiAKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAogUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gODA3
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKIAorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBUaGUgZm9sbG93aW5nIGxvd2VyLUFTQ0lJIGNoYXJhY3RlcnMgbmVlZCBl
c2NhcGluZyB0byBiZSB1c2VkIGluIGEgZmlsZW5hbWUKQEAgLTc1LDggKzc3LDYgQEAgc3RhdGlj
IGlubGluZSBib29sIHNob3VsZEVzY2FwZVVDaGFyKFVDaAogICAgIHJldHVybiBjID4gMTI3ID8g
ZmFsc2UgOiBuZWVkc0VzY2FwaW5nW2NdOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciBoZXhEaWdp
dHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOwotCiBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUo
Y29uc3QgU3RyaW5nJiBpbnB1dFN0cikKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dFN0
ci5sZW5ndGgoKTsKQEAgLTkwLDggKzkwLDcgQEAgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNv
bnN0IFN0cmluZyYgaQogICAgICAgICBVQ2hhciBjID0gKnN0cisrOwogICAgICAgICBpZiAoc2hv
dWxkRXNjYXBlVUNoYXIoYykpIHsKICAgICAgICAgICAgICpwKysgPSAnJSc7Ci0gICAgICAgICAg
ICAqcCsrID0gaGV4RGlnaXRzWyhjID4+IDQpICYgMHhGXTsKLSAgICAgICAgICAgICpwKysgPSBo
ZXhEaWdpdHNbYyAmIDB4Rl07CisgICAgICAgICAgICBIZXhOdW1iZXI6OmFwcGVuZENoYXJUb1Zl
Y3RvcjxVQ2hhciwgNTEyPihjLCBidWZmZXIsIEhleE51bWJlcjo6VXBwZXJDYXNlKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAqcCsrID0gYzsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmNwcAkocmV2aXNpb24gODA3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgsMTIgQEAKICNpbmNsdWRlICJL
VVJMLmgiCiAKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKICNpZiBVU0UoSUNVX1VOSUNPREUpCkBAIC04OSw4ICs5Miw2IEBAIGVudW0g
VVJMQ2hhcmFjdGVyQ2xhc3NlcyB7CiAgICAgQmFkQ2hhciA9IDEgPDwgNgogfTsKIAotc3RhdGlj
IGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLQogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyQ2xhc3NUYWJsZVsyNTZdID0gewogICAgIC8q
IDAgbnVsICovIFBhdGhTZWdtZW50RW5kQ2hhciwgICAgLyogMSBzb2ggKi8gQmFkQ2hhciwKICAg
ICAvKiAyIHN0eCAqLyBCYWRDaGFyLCAgICAvKiAzIGV0eCAqLyBCYWRDaGFyLApAQCAtODY4LDQ3
ICs4NjksMzIgQEAgU3RyaW5nIEtVUkw6OnByZXR0eVVSTCgpIGNvbnN0CiAgICAgaWYgKCFtX2lz
VmFsaWQpCiAgICAgICAgIHJldHVybiBtX3N0cmluZzsKIAotICAgIFZlY3RvcjxVQ2hhcj4gcmVz
dWx0OwotCi0gICAgYXBwZW5kKHJlc3VsdCwgcHJvdG9jb2woKSk7Ci0gICAgcmVzdWx0LmFwcGVu
ZCgnOicpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBhdXRob3JpdHk7CisgICAgU3RyaW5nQnVpbGRl
ciByZXN1bHQ7CisgICAgcmVzdWx0LmFwcGVuZChtYWtlU3RyaW5nKHByb3RvY29sKCksICc6Jykp
OwogCisgICAgU3RyaW5nQnVpbGRlciBhdXRob3JpdHk7CiAgICAgaWYgKG1faG9zdEVuZCAhPSBt
X3Bhc3N3b3JkRW5kKSB7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgIT0gbV91c2VyU3RhcnQpIHsK
LSAgICAgICAgICAgIGFwcGVuZChhdXRob3JpdHksIHVzZXIoKSk7Ci0gICAgICAgICAgICBhdXRo
b3JpdHkuYXBwZW5kKCdAJyk7Ci0gICAgICAgIH0KLSAgICAgICAgYXBwZW5kKGF1dGhvcml0eSwg
aG9zdCgpKTsKLSAgICAgICAgaWYgKGhhc1BvcnQoKSkgewotICAgICAgICAgICAgYXV0aG9yaXR5
LmFwcGVuZCgnOicpOwotICAgICAgICAgICAgYXBwZW5kKGF1dGhvcml0eSwgU3RyaW5nOjpudW1i
ZXIocG9ydCgpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBtX3VzZXJT
dGFydCkKKyAgICAgICAgICAgIGF1dGhvcml0eS5hcHBlbmQobWFrZVN0cmluZyh1c2VyKCksICdA
JykpOworICAgICAgICBhdXRob3JpdHkuYXBwZW5kKGhvc3QoKSk7CisgICAgICAgIGlmIChoYXNQ
b3J0KCkpCisgICAgICAgICAgICBhdXRob3JpdHkuYXBwZW5kKG1ha2VTdHJpbmcoJzonLCBTdHJp
bmc6Om51bWJlcihwb3J0KCkpKSk7CiAgICAgfQogCi0gICAgaWYgKCFhdXRob3JpdHkuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJy8nKTsKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnLycpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGF1dGhvcml0eSk7Ci0gICAgfSBlbHNlIGlm
IChwcm90b2NvbElzKCJmaWxlIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnLycpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kKCcvJyk7Ci0gICAgfQorICAgIGlmICghYXV0aG9yaXR5LmlzRW1w
dHkoKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtYWtlU3RyaW5nKCIvLyIsIGF1dGhvcml0eS50
b1N0cmluZygpKSk7CisgICAgZWxzZSBpZiAocHJvdG9jb2xJcygiZmlsZSIpKQorICAgICAgICBy
ZXN1bHQuYXBwZW5kKCIvLyIpOwogCi0gICAgYXBwZW5kKHJlc3VsdCwgcGF0aCgpKTsKKyAgICBy
ZXN1bHQuYXBwZW5kKHBhdGgoKSk7CiAKLSAgICBpZiAobV9wYXRoRW5kICE9IG1fcXVlcnlFbmQp
IHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnPycpOwotICAgICAgICBhcHBlbmQocmVzdWx0LCBx
dWVyeSgpKTsKLSAgICB9CisgICAgaWYgKG1fcGF0aEVuZCAhPSBtX3F1ZXJ5RW5kKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKG1ha2VTdHJpbmcoJz8nLCBxdWVyeSgpKSk7CiAKLSAgICBpZiAobV9m
cmFnbWVudEVuZCAhPSBtX3F1ZXJ5RW5kKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJyMnKTsK
LSAgICAgICAgYXBwZW5kKHJlc3VsdCwgZnJhZ21lbnRJZGVudGlmaWVyKCkpOwotICAgIH0KKyAg
ICBpZiAobV9mcmFnbWVudEVuZCAhPSBtX3F1ZXJ5RW5kKQorICAgICAgICByZXN1bHQuYXBwZW5k
KG1ha2VTdHJpbmcoJyMnLCBmcmFnbWVudElkZW50aWZpZXIoKSkpOwogCi0gICAgcmV0dXJuIFN0
cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHIpCkBAIC05
NjksOSArOTU1LDEyIEBAIFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3QK
IC8vIENhdXRpb246IFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYm91bmRzIGNoZWNrLgogc3RhdGlj
IHZvaWQgYXBwZW5kRXNjYXBlZENoYXIoY2hhciomIGJ1ZmZlciwgdW5zaWduZWQgY2hhciBjKQog
eworICAgIFZlY3RvcjxjaGFyLCAyPiBkZXN0aW5hdGlvbjsKKyAgICBIZXhOdW1iZXI6OmFwcGVu
ZENoYXJUb1ZlY3RvcjxjaGFyLCAyPihjLCBkZXN0aW5hdGlvbiwgSGV4TnVtYmVyOjpVcHBlckNh
c2UpOworICAgIEFTU0VSVChkZXN0aW5hdGlvbi5zaXplKCkgPT0gMik7CiAgICAgKmJ1ZmZlcisr
ID0gJyUnOwotICAgICpidWZmZXIrKyA9IGhleERpZ2l0c1tjID4+IDRdOwotICAgICpidWZmZXIr
KyA9IGhleERpZ2l0c1tjICYgMHhGXTsKKyAgICAqYnVmZmVyKysgPSBkZXN0aW5hdGlvblswXTsK
KyAgICAqYnVmZmVyKysgPSBkZXN0aW5hdGlvblsxXTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5k
RXNjYXBpbmdCYWRDaGFycyhjaGFyKiYgYnVmZmVyLCBjb25zdCBjaGFyKiBzdHJTdGFydCwgc2l6
ZV90IGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCShyZXZpc2lvbiA4MDcz
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVVVJRC5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAKICNpZiBQTEFURk9STShRVCkK
ICNpbmNsdWRlIDxRVXVpZD4KQEAgLTEwMCwxNyArMTAxLDE4IEBAIFN0cmluZyBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkKIAogICAgIC8vIEZvcm1hdCBhcyBWZXJzaW9uIDQgVVVJRC4KICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3Jt
YXQoIiUwOHgiLCByYW5kb21EYXRhWzBdKSk7CisgICAgYnVpbGRlci5hcHBlbmQoSGV4TnVtYmVy
Ojp1bnNpZ25lZFRvU3RyaW5nKHJhbmRvbURhdGFbMF0sIDgpKTsKICAgICBidWlsZGVyLmFwcGVu
ZCgiLSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDR4IiwgcmFuZG9t
RGF0YVsxXSA+PiAxNikpOworICAgIGJ1aWxkZXIuYXBwZW5kKEhleE51bWJlcjo6dW5zaWduZWRU
b1N0cmluZyhyYW5kb21EYXRhWzFdID4+IDE2LCA0KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIi00
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiUwM3giLCByYW5kb21EYXRh
WzFdICYgMHgwMDAwMGZmZikpOworICAgIGJ1aWxkZXIuYXBwZW5kKEhleE51bWJlcjo6dW5zaWdu
ZWRUb1N0cmluZyhyYW5kb21EYXRhWzFdICYgMHgwMDAwMGZmZiwgMykpOwogICAgIGJ1aWxkZXIu
YXBwZW5kKCItIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIiV4IiwgKHJh
bmRvbURhdGFbMl0gPj4gMzApIHwgMHg4KSk7IC8vIENvbmRlbnNlIHRoaXMgYnl0ZSB0byA4LCA5
LCBhLCBhbmQgYi4KLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTAzeCIsIChy
YW5kb21EYXRhWzJdID4+IDE2KSAmIDB4MDAwMDBmZmYpKTsKKyAgICBidWlsZGVyLmFwcGVuZChI
ZXhOdW1iZXI6OnVuc2lnbmVkVG9TdHJpbmcoKHJhbmRvbURhdGFbMl0gPj4gMzApIHwgMHg4LCAx
KSk7CisgICAgYnVpbGRlci5hcHBlbmQoSGV4TnVtYmVyOjp1bnNpZ25lZFRvU3RyaW5nKChyYW5k
b21EYXRhWzJdID4+IDE2KSAmIDB4MDAwMDBmZmYsIDMpKTsKICAgICBidWlsZGVyLmFwcGVuZCgi
LSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDR4IiwgcmFuZG9tRGF0
YVsyXSAmIDB4MDAwMGZmZmYpKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgi
JTA4eCIsIHJhbmRvbURhdGFbM10pKTsKKyAgICBidWlsZGVyLmFwcGVuZChIZXhOdW1iZXI6OnVu
c2lnbmVkVG9TdHJpbmcocmFuZG9tRGF0YVsyXSAmIDB4MDAwMGZmZmYsIDQpKTsKKyAgICBidWls
ZGVyLmFwcGVuZChIZXhOdW1iZXI6OnVuc2lnbmVkVG9TdHJpbmcocmFuZG9tRGF0YVszXSwgOCkp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCJcbiIpOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiA4MDczMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTAgKzI3LDExIEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKIAogI2luY2x1ZGUgIkhhc2hUb29scy5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAtMTgwLDQ5ICsxODEsMjMgQEAgQ29s
b3I6OkNvbG9yKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQgYXBwZW5kSGV4TnVtYmVyKFVDaGFyKiBkZXN0aW5hdGlvbiwgdWludDhfdCBudW1iZXIpCi17
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5YWJjZGVm
IjsKLQotICAgIGRlc3RpbmF0aW9uWzBdID0gaGV4RGlnaXRzW251bWJlciA+PiA0XTsKLSAgICBk
ZXN0aW5hdGlvblsxXSA9IGhleERpZ2l0c1tudW1iZXIgJiAweEZdOwotfQotCiBTdHJpbmcgQ29s
b3I6OnNlcmlhbGl6ZWQoKSBjb25zdAogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RyaW5nLCBjb21tYVNwYWNlLCAoIiwgIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCByZ2JhUGFyZW4sICgicmdiYSgiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHplcm9Qb2ludFplcm8sICgiMC4wIikpOwotCi0gICAgaWYgKCFoYXNB
bHBoYSgpKSB7Ci0gICAgICAgIFVDaGFyKiBjaGFyYWN0ZXJzOwotICAgICAgICBTdHJpbmcgcmVz
dWx0ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKDcsIGNoYXJhY3RlcnMpOwotICAgICAg
ICBjaGFyYWN0ZXJzWzBdID0gJyMnOwotICAgICAgICBhcHBlbmRIZXhOdW1iZXIoY2hhcmFjdGVy
cyArIDEsIHJlZCgpKTsKLSAgICAgICAgYXBwZW5kSGV4TnVtYmVyKGNoYXJhY3RlcnMgKyAzLCBn
cmVlbigpKTsKLSAgICAgICAgYXBwZW5kSGV4TnVtYmVyKGNoYXJhY3RlcnMgKyA1LCBibHVlKCkp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIFZlY3RvcjxVQ2hhcj4gcmVz
dWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDI4KTsKKyAgICBpZiAoIWhh
c0FscGhhKCkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywgSGV4TnVtYmVyOjpjaGFy
VG9TdHJpbmcocmVkKCkpLCBIZXhOdW1iZXI6OmNoYXJUb1N0cmluZyhncmVlbigpKSwgSGV4TnVt
YmVyOjpjaGFyVG9TdHJpbmcoYmx1ZSgpKSk7CiAKLSAgICBhcHBlbmQocmVzdWx0LCByZ2JhUGFy
ZW4pOwotICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHJlZCgpKTsKLSAgICBhcHBlbmQocmVzdWx0
LCBjb21tYVNwYWNlKTsKLSAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBncmVlbigpKTsKLSAgICBh
cHBlbmQocmVzdWx0LCBjb21tYVNwYWNlKTsKLSAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBibHVl
KCkpOwotICAgIGFwcGVuZChyZXN1bHQsIGNvbW1hU3BhY2UpOworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eSgyOCk7CisgICAgYnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygicmdiYSgiLCBTdHJpbmc6Om51bWJlcihyZWQoKSksICIsICIsIFN0
cmluZzo6bnVtYmVyKGdyZWVuKCkpLCAiLCAiLCBTdHJpbmc6Om51bWJlcihibHVlKCkpLCAiLCAi
KSk7CiAKICAgICAvLyBNYXRjaCBHZWNrbyAoIjAuMCIgZm9yIHplcm8sIDUgZGVjaW1hbHMgZm9y
IGFueXRoaW5nIGVsc2UpCiAgICAgaWYgKCFhbHBoYSgpKQotICAgICAgICBhcHBlbmQocmVzdWx0
LCB6ZXJvUG9pbnRaZXJvKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiMC4w
IikpOwogICAgIGVsc2UKLSAgICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpmb3JtYXQoIiUu
NWYiLCBhbHBoYSgpIC8gMjU1LjBmKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6
Zm9ybWF0KCIlLjVmIiwgYWxwaGEoKSAvIDI1NS4wZikpOwogCi0gICAgcmVzdWx0LmFwcGVuZCgn
KScpOwotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgYnVpbGRlci5hcHBl
bmQoJyknKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCiBTdHJpbmcgQ29s
b3I6Om5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAJKHJldmlzaW9u
IDgwNzMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlIDxsaW1p
dHM+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21O
dW1iZXIuaD4KIApAQCAtMTkyLDggKzE5Myw2IEBAIHZvaWQgRm9ybURhdGFCdWlsZGVyOjphZGRL
ZXlWYWx1ZVBhaXJBc0YKIAogdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9y
bURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOwot
CiAgICAgLy8gU2FtZSBzYWZlIGNoYXJhY3RlcnMgYXMgTmV0c2NhcGUgZm9yIGNvbXBhdGliaWxp
dHkuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgc2FmZUNoYXJhY3RlcnNbXSA9ICItLl8qIjsKIApA
QCAtMjEwLDggKzIwOSw3IEBAIHZvaWQgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zv
cm0KICAgICAgICAgICAgIGFwcGVuZChidWZmZXIsICIlMEQlMEEiKTsKICAgICAgICAgZWxzZSBp
ZiAoYyAhPSAnXHInKSB7CiAgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCAnJScpOwotICAgICAg
ICAgICAgYXBwZW5kKGJ1ZmZlciwgaGV4RGlnaXRzW2MgPj4gNF0pOwotICAgICAgICAgICAgYXBw
ZW5kKGJ1ZmZlciwgaGV4RGlnaXRzW2MgJiAweEZdKTsKKyAgICAgICAgICAgIEhleE51bWJlcjo6
YXBwZW5kQ2hhclRvVmVjdG9yPGNoYXI+KGMsIGJ1ZmZlciwgSGV4TnVtYmVyOjpVcHBlckNhc2Up
OwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24gODA3MzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0
LmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9IZXhO
dW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTIwOSwx
MSArMjEwLDExIEBAIFN0cmluZyBxdW90ZUFuZEVzY2FwZU5vblByaW50YWJsZXMoY29uc3QKICAg
ICAgICAgICAgIGlmIChjID49IDB4MjAgJiYgYyA8IDB4N0YpCiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChjKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHUgPSBjOwotICAgICAgICAgICAgICAgIFN0cmluZyBoZXggPSBTdHJpbmc6OmZvcm1hdCgi
XFx4eyVYfSIsIHUpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbiA9IGhleC5sZW5ndGgo
KTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpCi0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4W2ldKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3gn
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd7Jyk7CisgICAgICAgICAgICAgICAg
SGV4TnVtYmVyOjphcHBlbmRVbnNpZ25lZFRvVmVjdG9yPFVDaGFyPihjLCByZXN1bHQsIC0xLCBI
ZXhOdW1iZXI6OlVwcGVyQ2FzZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfScp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQo=
</data>
<flag name="review"
          id="77730"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86045</attachid>
            <date>2011-03-17 04:43:10 -0700</date>
            <delta_ts>2011-03-19 05:16:59 -0700</delta_ts>
            <desc>Patch v6</desc>
            <filename>HexNumber-v2.patch</filename>
            <type>text/plain</type>
            <size>24278</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODEzNDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTEtMDMtMTcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFdURiBIZXhOdW1iZXIuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTYwOTkKKworICAgICAgICBJbnRyb2R1Y2UgYSBzZXQgb2YgZnVuY3Rpb25zIHRo
YXQgZWFzZSBjb252ZXJ0aW5nIGZyb20gYSBieWUgb3IgYSBudW1iZXIgdG8gYSBoZXggc3RyaW5n
LAorICAgICAgICByZXBsYWNpbmcgc2V2ZXJhbCBvZiB0aGVzZSBjb252ZXJzaW9ucyBhbmQgU3Ry
aW5nOjpmb3JtYXQoIiV4IikgdXNhZ2VzIGFsbCBvdmVyIFdlYkNvcmUuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbTogQWRkIEhleE51bWJlci5oIHRvIGJ1aWxkLgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLmV4cDogRXhwb3J0IFN0cmluZ0J1aWxkZXI6OnJlc2VydmVDYXBhY2l0eS4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOiBBZGQgSGV4TnVtYmVyLmggdG8gYnVpbGQuCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZjogRXhwb3J0IFN0cmluZ0J1aWxkZXI6OnJlc2VydmVDYXBhY2l0eS4KKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2o6IEFkZCBIZXhOdW1iZXIuaCB0
byBidWlsZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBEaXR0by4KKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6IERpdHRvLgorICAgICAg
ICAqIHd0Zi9IZXhOdW1iZXIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkludGVybmFsOjpoZXhE
aWdpdHNGb3JNb2RlKTogSW50ZXJuYWwgaGVscGVyLgorICAgICAgICAoV1RGOjphcHBlbmRCeXRl
QXNIZXgpOiBGcmVlIGZ1bmN0aW9uLCB0aGF0IGFwcGVuZHMgYSBieXRlIGFzIGhleCBzdHJpbmcg
aW50byBhIGRlc3RpbmF0aW9uLgorICAgICAgICAoV1RGOjpwbGFjZUJ5dGVBc0hleCk6IERpdHRv
LCBidXQgcGxhY2VzIHRoZSByZXN1bHQgdXNpbmcgKmZvbysrID0gJy4uJyBvciBmb29baW5kZXgr
K10gPSAnLi4nCisgICAgICAgIChXVEY6OmFwcGVuZFVuc2lnbmVkQXNIZXgpOiBGcmVlIGZ1bmN0
aW9uLCB0aGF0IGFwcGVuZHMgYSBudW1iZXIgYXMgaGV4IHN0cmluZyBpbnRvIGEgZGVzdGluYXRp
b24uCisKIDIwMTEtMDMtMTcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRml4IHRoZSBpbnRlcnByZXRlciBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDgxMjczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00NzAsNiArNDcwLDcgQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9I
YXNoVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUcmFpdHMuaCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9IZXhOdW1iZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9M
aXN0SGFzaFNldC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0xpc3RSZWZQdHIuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Mb2NrZXIuaCBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDgxMjczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMzg2
LDYgKzM4Niw3IEBAIF9fWk4zV1RGMTJjcmVhdGVUaHJlYWRFUEZQdlMwX0VTMF9QS2MKIF9fWk4z
V1RGMTJkZXRhY2hUaHJlYWRFagogX19aTjNXVEYxMmlzTWFpblRocmVhZEV2CiBfX1pOM1dURjEy
cmFuZG9tTnVtYmVyRXYKK19fWk4zV1RGMTNTdHJpbmdCdWlsZGVyMTVyZXNlcnZlQ2FwYWNpdHlF
agogX19aTjNXVEYxM1N0cmluZ0J1aWxkZXIxMXJlaWZ5U3RyaW5nRXYKIF9fWk4zV1RGMTNTdHJp
bmdCdWlsZGVyMTFzaHJpbmtUb0ZpdEV2CiBfX1pOM1dURjEzU3RyaW5nQnVpbGRlcjZhcHBlbmRF
UEtjagpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJl
dmlzaW9uIDgxMjczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsNyBAQAogICAgICAgICAgICAgJ3d0Zi9I
YXNoU2V0LmgnLAogICAgICAgICAgICAgJ3d0Zi9IYXNoVGFibGUuaCcsCiAgICAgICAgICAgICAn
d3RmL0hhc2hUcmFpdHMuaCcsCisgICAgICAgICAgICAnd3RmL0hleE51bWJlci5oJywKICAgICAg
ICAgICAgICd3dGYvTGlzdEhhc2hTZXQuaCcsCiAgICAgICAgICAgICAnd3RmL0xpc3RSZWZQdHIu
aCcsCiAgICAgICAgICAgICAnd3RmL0xvY2tlci5oJywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiA4MTI3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsNiArMjc4LDcg
QEAgRVhQT1JUUwogICAgID9yZWdFeHBGbGFnc0BKU0NAQFlBP0FXNFJlZ0V4cEZsYWdzQDFAQUJW
VVN0cmluZ0AxQEBaCiAgICAgP2FkZEN1cnJlbnRUaHJlYWRATWFjaGluZVRocmVhZHNASlNDQEBR
QUVYWFoKICAgICA/cmVpZnlTdHJpbmdAU3RyaW5nQnVpbGRlckBXVEZAQEFBRVhYWgorICAgID9y
ZXNlcnZlQ2FwYWNpdHlAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhJQFoKICAgICA/cmVsZWFzZURl
Y29tbWl0dGVkQE9TQWxsb2NhdG9yQFdURkBAU0FYUEFYSUBaCiAgICAgP3JlbGVhc2VTdGFja0BN
YXJrU3RhY2tASlNDQEBDQVhQQVhJQFoKICAgICA/cmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nh
c2VASGVhcEBKU0NAQEFBRVhJQFoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagkocmV2aXNpb24g
ODEyNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dU
Ri9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MDUsNiArNzA1LDEwIEBACiAJCQk+CiAJ
CTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXEhleE51bWJlci5o
IgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxM
aXN0SGFzaFNldC5oIgogCQkJPgogCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gODEyNzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjEx
LDYgKzIxMSw3IEBACiAJCTY1REZDOTMzMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVERkM5MkQw
OEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5jcHAgKi87IH07CiAJCTY1RTFBM0RGMTIyQjg5
NDUwMEIyNjA5NyAvKiBOb25Db3B5aW5nU29ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFMUEyRjQxMjJCODgwRDAwQjI2MDk3IC8qIE5vbkNvcHlp
bmdTb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNjVGREU0OUMwQkREMUQ0QTAwRTgwMTExIC8qIEFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFMjE3QjgwOEU3RUVDQzAwMjNF
NUY2IC8qIEFzc2VydGlvbnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICIt
V25vLW1pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSI7IH07IH07CisJCTcxODZBNkVDMTMxMDBCQTUw
MDQ0NzlFMSAvKiBIZXhOdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcxODZBNkU4MTMxMDBCNTcwMDQ0NzlFMSAvKiBIZXhOdW1iZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NkZCOUYwRjEy
RTg1MTg2MDA1MUEyRUIgLyogU0hBMS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzZGQjlGMEUxMkU4NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NkZCOUYxMTEyRTg1
MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NkZCOUYxMDEyRTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAgKi87IH07
CiAJCTdFNEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MDgwRUJCNzk2MzAw
NTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg3NCw2ICs4NzUsNyBAQAogCQk2NUVBNzM2MjBCQUUzNUQx
MDAxQkI1NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbW1vbklkZW50aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjVFQTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDRGRDM1MzA1Njk3RTZEMDAzREJFRDkg
LyogQm9vbGVhbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCb29sZWFuT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgfTsKKwkJNzE4NkE2RTgxMzEwMEI1NzAwNDQ3OUUxIC8qIEhleE51bWJlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZXhOdW1iZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZGQjlGMEUxMkU4NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU0hBMS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3NkZCOUYxMDEyRTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTSEExLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0UyQzZDOTgwRDMxQzZCNjAwMkQ0NEUyIC8qIFNjb3BlQ2hhaW5NYXJr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlQ2hhaW5NYXJrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjE1LDYgKzE2MTcsNyBAQAogCQkJCTY1REZD
OTJEMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwICovLAogCQkJCTY1REZDOTJFMDhF
QTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuaCAqLywKIAkJCQk2NURGQzkyRjA4RUExNzNBMDBG
NzMwMEIgLyogSGFzaFRyYWl0cy5oICovLAorCQkJCTcxODZBNkU4MTMxMDBCNTcwMDQ0NzlFMSAv
KiBIZXhOdW1iZXIuaCAqLywKIAkJCQk2NTdFQjc0NTBCNzA4RjU0MDA2MzQ2MUIgLyogTGlzdEhh
c2hTZXQuaCAqLywKIAkJCQkxNDhBMTYyNjA5NUQxNkJCMDA2NjZEMEQgLyogTGlzdFJlZlB0ci5o
ICovLAogCQkJCUUxRUU3OTI3MEQ2Qzk2NDUwMEZFQTNCQSAvKiBMb2NrZXIuaCAqLywKQEAgLTIy
ODQsNiArMjI4Nyw3IEBACiAJCQkJQkMxOEM0MEQwRTE2RjVDRDAwQjM0NDYwIC8qIEhhc2hUYWJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MEUwRTE2RjVDRDAwQjM0NDYwIC8qIEhhc2hU
cmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MENERTcxMTJERTk3QjEwMDEzQ0ZDNSAvKiBI
ZWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MTg2QTZFQzEzMTAwQkE1MDA0NDc5RTEgLyogSGV4
TnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyog
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTAwRTE2RjVDRDAwQjM0NDYw
IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVE
MUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDgxMjczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQCBTRVQoV1RGX0hFQURFUlMKICAgICBIYXNoU2V0LmgKICAgICBIYXNo
VGFibGUuaAogICAgIEhhc2hUcmFpdHMuaAorICAgIEhleE51bWJlci5oCiAgICAgTGlzdEhhc2hT
ZXQuaAogICAgIExpc3RSZWZQdHIuaAogICAgIExvY2tlci5oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0hleE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvSGV4TnVtYmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0hleE51bWJlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaWZuZGVmIEhleE51bWJlcl9oCisjZGVmaW5lIEhleE51bWJlcl9oCisKKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworZW51bSBIZXhDb252ZXJzaW9uTW9kZSB7CisgICAgTG93ZXJjYXNlLAorICAgIFVwcGVyY2Fz
ZQorfTsKKworbmFtZXNwYWNlIEludGVybmFsIHsKKworc3RhdGljIGNvbnN0IGNoYXIqIGhleERp
Z2l0c0Zvck1vZGUoSGV4Q29udmVyc2lvbk1vZGUgbW9kZSkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciBsb3dlckhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIgdXBwZXJIZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYiOworICAg
IHJldHVybiBtb2RlICYgTG93ZXJjYXNlID8gbG93ZXJIZXhEaWdpdHMgOiB1cHBlckhleERpZ2l0
czsKK30KKworfTsgLy8gbmFtZXNwYWNlIEludGVybmFsCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitpbmxpbmUgdm9pZCBhcHBlbmRCeXRlQXNIZXgodW5zaWduZWQgY2hhciBieXRlLCBUJiBkZXN0
aW5hdGlvbiwgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVyY2FzZSkKK3sKKyAgICBjb25z
dCBjaGFyKiBoZXhEaWdpdHMgPSBJbnRlcm5hbDo6aGV4RGlnaXRzRm9yTW9kZShtb2RlKTsKKyAg
ICBkZXN0aW5hdGlvbi5hcHBlbmQoaGV4RGlnaXRzW2J5dGUgPj4gNF0pOworICAgIGRlc3RpbmF0
aW9uLmFwcGVuZChoZXhEaWdpdHNbYnl0ZSAmIDB4Rl0pOworfQorCisvLyBTcGVjaWFsIHZhcmlh
bnQgZm9yIENTU1BhcnNlciwgdGhhdCBldmVudHVhbGx5IGFwcGVuZHMganVzdCBhIHNpbmdsZSBo
ZXggZGlnaXQsIGlmIHRoZSBieXRlIGZpdHMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5l
IHZvaWQgcGxhY2VCeXRlQXNIZXgodW5zaWduZWQgY2hhciBieXRlLCBUJiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQmIGluZGV4LCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlID0gVXBwZXJjYXNlKQorewor
ICAgIGNvbnN0IGNoYXIqIGhleERpZ2l0cyA9IEludGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1v
ZGUpOworICAgIGlmIChieXRlID49IDB4MTApCisgICAgICAgIGRlc3RpbmF0aW9uW2luZGV4Kytd
ID0gaGV4RGlnaXRzW2J5dGUgPj4gNF07CisgICAgZGVzdGluYXRpb25baW5kZXgrK10gPSBoZXhE
aWdpdHNbYnl0ZSAmIDB4Rl07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9p
ZCBwbGFjZUJ5dGVBc0hleCh1bnNpZ25lZCBjaGFyIGJ5dGUsIFQmIGRlc3RpbmF0aW9uLCBIZXhD
b252ZXJzaW9uTW9kZSBtb2RlID0gVXBwZXJjYXNlKQoreworICAgIGNvbnN0IGNoYXIqIGhleERp
Z2l0cyA9IEludGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOworICAgICpkZXN0aW5hdGlv
bisrID0gaGV4RGlnaXRzW2J5dGUgPj4gNF07CisgICAgKmRlc3RpbmF0aW9uKysgPSBoZXhEaWdp
dHNbYnl0ZSAmIDB4Rl07Cit9CisKKy8vIElmIGRlc2lyZWREaWdpdHM9LTE6IGl0IHdpbGwgY3Jl
YXRlIGFzIG1hbnkgaGV4IGRpZ2l0cyBhcyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBudW1iZXIu
CisvLyBPdGhlcndoaXNlLCBpdCB1c2VzIGV4YWN0bHkgJ2Rlc2lyZWREaWdpdHMnIGZvciB0aGUg
Y29udmVyc2lvbiwgdXNlIHdpdGggY2F1dGlvbi4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citpbmxp
bmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4KHVuc2lnbmVkIG51bWJlciwgVCYgZGVzdGluYXRp
b24sIGludCBkZXNpcmVkRGlnaXRzID0gLTEsIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBl
cmNhc2UpCit7CisgICAgY29uc3QgY2hhciogaGV4RGlnaXRzID0gSW50ZXJuYWw6OmhleERpZ2l0
c0Zvck1vZGUobW9kZSk7CisgICAgVmVjdG9yPFVDaGFyLCA4PiByZXN1bHQ7CisgICAgaW50IGkg
PSAwOworICAgIGRvIHsKKyAgICAgICAgcmVzdWx0LnByZXBlbmQoaGV4RGlnaXRzW251bWJlciAl
IDE2XSk7CisgICAgICAgIG51bWJlciA+Pj0gNDsKKyAgICAgICAgKytpOworICAgIH0gd2hpbGUg
KGRlc2lyZWREaWdpdHMgPT0gLTEgPyBudW1iZXIgPiAwIDogaSA8IGRlc2lyZWREaWdpdHMpOwor
CisgICAgaWYgKGRlc2lyZWREaWdpdHMgIT0gLTEpCisgICAgICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxpbnQ+KHJlc3VsdC5zaXplKCkpID09IGRlc2lyZWREaWdpdHMpOworCisgICAgZGVzdGluYXRp
b24uYXBwZW5kKHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKKwordXNpbmcgV1RGOjphcHBlbmRCeXRlQXNIZXg7Cit1c2luZyBXVEY6OmFwcGVu
ZFVuc2lnbmVkQXNIZXg7Cit1c2luZyBXVEY6OnBsYWNlQnl0ZUFzSGV4OwordXNpbmcgV1RGOjpM
b3dlcmNhc2U7CisKKyNlbmRpZiAvLyBIZXhOdW1iZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gODEzNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzMyBAQAorMjAxMS0wMy0xNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1h
bm5AcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbnRyb2R1Y2UgV1RGIEhleE51bWJlci5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA5OQorCisgICAgICAgIEludHJvZHVjZSBhIHNldCBv
ZiBmdW5jdGlvbnMgdGhhdCBlYXNlIGNvbnZlcnRpbmcgZnJvbSBhIGJ5ZSBvciBhIG51bWJlciB0
byBhIGhleCBzdHJpbmcsCisgICAgICAgIHJlcGxhY2luZyBzZXZlcmFsIG9mIHRoZXNlIGNvbnZl
cnNpb25zIGFuZCBTdHJpbmc6OmZvcm1hdCgiJXgiKSB1c2FnZXMgYWxsIG92ZXIgV2ViQ29yZS4K
KworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IZXhOdW1iZXIuaDogQWRkZWQuCisg
ICAgICAgICogY3NzL0NTU09NVXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXpl
Q2hhcmFjdGVyQXNDb2RlUG9pbnQpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cXVvdGVDU1NTdHJpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlYWRhYmxl
U3RyaW5nRnJvbUJpbmFyeSk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjplbmNvZGVGb3JGaWxlTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0v
S1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFc2NhcGVkQ2hhcik6CisgICAgICAg
ICogcGxhdGZvcm0vVVVJRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcjo6c2VyaWFsaXplZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFCdWls
ZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdW90ZUFuZEVzY2FwZU5vblByaW50
YWJsZXMpOgorCiAyMDExLTAzLTE3ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IZXhOdW1iZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGV4TnVtYmVyLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGV4TnVtYmVy
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9IZXhO
dW1iZXJfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9IZXhOdW1iZXJfaAorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hleE51bWJlci5oPgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTT01VdGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRp
bHMuY3BwCShyZXZpc2lvbiA4MTI3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNTU09NVXRpbHMuaCIKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUzLDcgKzUzLDkgQEAgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBWZWN0bwog
CiB2b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIgYywgVmVjdG9yPFVD
aGFyPiYgYXBwZW5kVG8pCiB7Ci0gICAgYXBwZW5kKGFwcGVuZFRvLCBTdHJpbmc6OmZvcm1hdCgi
XFwleCAiLCBjKSk7CisgICAgYXBwZW5kVG8uYXBwZW5kKCdcXCcpOworICAgIGFwcGVuZFVuc2ln
bmVkQXNIZXgoYywgYXBwZW5kVG8sIExvd2VyY2FzZSk7CisgICAgYXBwZW5kVG8uYXBwZW5kKCcg
Jyk7CiB9CiAKIHZvaWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIFN0cmluZyYgYXBwZW5kVG8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2
aXNpb24gODEyNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1
bGUuaCIKICNpbmNsdWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUgPGxp
bWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogCkBAIC02NDM5LDExICs2NDQw
LDggQEAgU3RyaW5nIHF1b3RlQ1NTU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaQogICAgICAgICAg
ICAgYnVmZmVyW2luZGV4KytdID0gY2g7CiAgICAgICAgICAgICBhZnRlckVzY2FwZSA9IGZhbHNl
OwogICAgICAgICB9IGVsc2UgaWYgKGNoIDwgMHgyMCB8fCBjaCA9PSAweDdGKSB7IC8vIENvbnRy
b2wgY2hhcmFjdGVycy4KLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sx
N10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CiAgICAgICAgICAgICBidWZmZXJbaW5kZXgrK10gPSAn
XFwnOwotICAgICAgICAgICAgaWYgKGNoID49IDB4MTApCi0gICAgICAgICAgICAgICAgYnVmZmVy
W2luZGV4KytdID0gaGV4RGlnaXRzW2NoID4+IDRdOwotICAgICAgICAgICAgYnVmZmVyW2luZGV4
KytdID0gaGV4RGlnaXRzW2NoICYgMHhGXTsKKyAgICAgICAgICAgIHBsYWNlQnl0ZUFzSGV4KGNo
LCBidWZmZXIsIGluZGV4LCBMb3dlcmNhc2UpOwogICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSB0
cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gU3BhY2UgY2hhcmFjdGVyIG1h
eSBiZSByZXF1aXJlZCB0byBzZXBhcmF0ZSBiYWNrc2xhc2gtZXNjYXBlIHNlcXVlbmNlIGFuZCBu
b3JtYWwgY2hhcmFjdGVycy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAJKHJldmlzaW9uIDgxMjczKQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UuaCIKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9IZXhO
dW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CkBAIC00NTYsMTcgKzQ1
NywxMyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmZyYW1lRGV0YWNoCiBzdGF0aWMg
U3RyaW5nIGNyZWF0ZVJlYWRhYmxlU3RyaW5nRnJvbUJpbmFyeShjb25zdCB1bnNpZ25lZCBjaGFy
KiB2YWx1ZSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoID4gMCk7Ci0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLSAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IGxlbmd0aCAqIDMgLSAxOwotICAgIFN0cmluZ0J1ZmZlciBi
dWZmZXIoYnVmZmVyU2l6ZSk7Ci0gICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBWZWN0b3I8VUNo
YXI+IGJ1ZmZlcjsKKyAgICBidWZmZXIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggKiAz
IC0gMSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAg
ICBpZiAoaSA+IDApCi0gICAgICAgICAgICBidWZmZXJbaW5kZXgrK10gPSAnOic7Ci0gICAgICAg
IGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1t2YWx1ZVtpXSA+PiA0XTsKLSAgICAgICAgYnVm
ZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW3ZhbHVlW2ldICYgMHhGXTsKKyAgICAgICAgICAgIGJ1
ZmZlci5hcHBlbmQoJzonKTsKKyAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KHZhbHVlW2ldLCBidWZm
ZXIpOwogICAgIH0KLSAgICBBU1NFUlQoaW5kZXggPT0gYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJu
IFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDgxMjczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlIDx3dGYv
SGV4TnVtYmVyLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhlIGZvbGxvd2luZyBs
b3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5lZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVu
YW1lCkBAIC03NSw4ICs3Nyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFc2NhcGVVQ2hh
cihVQ2gKICAgICByZXR1cm4gYyA+IDEyNyA/IGZhbHNlIDogbmVlZHNFc2NhcGluZ1tjXTsKIH0K
IAotc3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsK
LQogU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHIpCiB7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHIubGVuZ3RoKCk7CkBAIC05MCw4ICs5MCw3IEBA
IFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGkKICAgICAgICAgVUNoYXIg
YyA9ICpzdHIrKzsKICAgICAgICAgaWYgKHNob3VsZEVzY2FwZVVDaGFyKGMpKSB7CiAgICAgICAg
ICAgICAqcCsrID0gJyUnOwotICAgICAgICAgICAgKnArKyA9IGhleERpZ2l0c1soYyA+PiA0KSAm
IDB4Rl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4RGlnaXRzW2MgJiAweEZdOworICAgICAgICAg
ICAgcGxhY2VCeXRlQXNIZXgoYywgcCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKnAr
KyA9IGM7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHJldmlzaW9uIDgx
MjczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtODksOCArOTAsNiBAQCBlbnVtIFVSTENoYXJh
Y3RlckNsYXNzZXMgewogICAgIEJhZENoYXIgPSAxIDw8IDYKIH07CiAKLXN0YXRpYyBjb25zdCBj
aGFyIGhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7Ci0KIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIGNoYXJhY3RlckNsYXNzVGFibGVbMjU2XSA9IHsKICAgICAvKiAwIG51bCAq
LyBQYXRoU2VnbWVudEVuZENoYXIsICAgIC8qIDEgc29oICovIEJhZENoYXIsCiAgICAgLyogMiBz
dHggKi8gQmFkQ2hhciwgICAgLyogMyBldHggKi8gQmFkQ2hhciwKQEAgLTk3MCw4ICs5NjksNyBA
QCBTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0CiBzdGF0aWMgdm9pZCBh
cHBlbmRFc2NhcGVkQ2hhcihjaGFyKiYgYnVmZmVyLCB1bnNpZ25lZCBjaGFyIGMpCiB7CiAgICAg
KmJ1ZmZlcisrID0gJyUnOwotICAgICpidWZmZXIrKyA9IGhleERpZ2l0c1tjID4+IDRdOwotICAg
ICpidWZmZXIrKyA9IGhleERpZ2l0c1tjICYgMHhGXTsKKyAgICBwbGFjZUJ5dGVBc0hleChjLCBi
dWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKGNoYXIqJiBi
dWZmZXIsIGNvbnN0IGNoYXIqIHN0clN0YXJ0LCBzaXplX3QgbGVuZ3RoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVVJRC5jcHAJKHJldmlzaW9uIDgxMjczKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVVJRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNlbGlmIE9T
KExJTlVYKSAmJiAhUExBVEZPUk0oQ0hST01JVU0pCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNlbGlm
IChPUyhMSU5VWCkgJiYgUExBVEZPUk0oQ0hST01JVU0pKSB8fCAoT1MoREFSV0lOKSAmJiAhVVNF
KENGKSkKKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51
bWJlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNlbmRpZgpAQCAt
MTAwLDE3ICsxMDEsMTggQEAgU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKQogCiAg
ICAgLy8gRm9ybWF0IGFzIFZlcnNpb24gNCBVVUlELgogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTA4eCIsIHJhbmRvbURhdGFb
MF0pKTsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KHJhbmRvbURhdGFbMF0sIGJ1aWxkZXIsIDgs
IExvd2VyY2FzZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIi0iKTsKLSAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmc6OmZvcm1hdCgiJTA0eCIsIHJhbmRvbURhdGFbMV0gPj4gMTYpKTsKKyAgICBhcHBl
bmRVbnNpZ25lZEFzSGV4KHJhbmRvbURhdGFbMV0gPj4gMTYsIGJ1aWxkZXIsIDQsIExvd2VyY2Fz
ZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIi00Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIiUwM3giLCByYW5kb21EYXRhWzFdICYgMHgwMDAwMGZmZikpOworICAgIGFwcGVu
ZFVuc2lnbmVkQXNIZXgocmFuZG9tRGF0YVsxXSAmIDB4MDAwMDBmZmYsIGJ1aWxkZXIsIDMsIExv
d2VyY2FzZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIi0iKTsKLSAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgiJXgiLCAocmFuZG9tRGF0YVsyXSA+PiAzMCkgfCAweDgpKTsgLy8gQ29u
ZGVuc2UgdGhpcyBieXRlIHRvIDgsIDksIGEsIGFuZCBiLgotICAgIGJ1aWxkZXIuYXBwZW5kKFN0
cmluZzo6Zm9ybWF0KCIlMDN4IiwgKHJhbmRvbURhdGFbMl0gPj4gMTYpICYgMHgwMDAwMGZmZikp
OworICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgoKHJhbmRvbURhdGFbMl0gPj4gMzApIHwgMHg4LCBi
dWlsZGVyLCAxLCBMb3dlcmNhc2UpOworICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgoKHJhbmRvbURh
dGFbMl0gPj4gMTYpICYgMHgwMDAwMGZmZiwgYnVpbGRlciwgMywgTG93ZXJjYXNlKTsKICAgICBi
dWlsZGVyLmFwcGVuZCgiLSIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIl
MDR4IiwgcmFuZG9tRGF0YVsyXSAmIDB4MDAwMGZmZmYpKTsKLSAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgiJTA4eCIsIHJhbmRvbURhdGFbM10pKTsKKyAgICBhcHBlbmRVbnNpZ25l
ZEFzSGV4KHJhbmRvbURhdGFbMl0gJiAweDAwMDBmZmZmLCBidWlsZGVyLCA0LCBMb3dlcmNhc2Up
OworICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgocmFuZG9tRGF0YVszXSwgYnVpbGRlciwgOCwgTG93
ZXJjYXNlKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiXG4iKTsKICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gODEyNzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDEzICsyNywxMiBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAKICNpbmNsdWRlICJIYXNo
VG9vbHMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPG1hdGguaD4K
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTk1LDEzICsxOTQsMTMgQEAgU3RyaW5nIENvbG9y
OjpzZXJpYWxpemVkKCkgY29uc3QKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgemVyb1BvaW50WmVybywgKCIwLjAiKSk7CiAKICAgICBpZiAoIWhhc0FscGhhKCkpIHsKLSAg
ICAgICAgVUNoYXIqIGNoYXJhY3RlcnM7Ci0gICAgICAgIFN0cmluZyByZXN1bHQgPSBTdHJpbmc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoNywgY2hhcmFjdGVycyk7Ci0gICAgICAgIGNoYXJhY3RlcnNb
MF0gPSAnIyc7Ci0gICAgICAgIGFwcGVuZEhleE51bWJlcihjaGFyYWN0ZXJzICsgMSwgcmVkKCkp
OwotICAgICAgICBhcHBlbmRIZXhOdW1iZXIoY2hhcmFjdGVycyArIDMsIGdyZWVuKCkpOwotICAg
ICAgICBhcHBlbmRIZXhOdW1iZXIoY2hhcmFjdGVycyArIDUsIGJsdWUoKSk7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVp
bGRlci5yZXNlcnZlQ2FwYWNpdHkoNyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcjJyk7Cisg
ICAgICAgIGFwcGVuZEJ5dGVBc0hleChyZWQoKSwgYnVpbGRlcik7CisgICAgICAgIGFwcGVuZEJ5
dGVBc0hleChncmVlbigpLCBidWlsZGVyKTsKKyAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGJsdWUo
KSwgYnVpbGRlcik7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQog
CiAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCShyZXZpc2lvbiA4MTI3MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzPgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+
CiAKQEAgLTE5Miw4ICsxOTMsNiBAQCB2b2lkIEZvcm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFsdWVQ
YWlyQXNGCiAKIHZvaWQgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKFZl
Y3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLQogICAgIC8v
IFNhbWUgc2FmZSBjaGFyYWN0ZXJzIGFzIE5ldHNjYXBlIGZvciBjb21wYXRpYmlsaXR5LgogICAg
IHN0YXRpYyBjb25zdCBjaGFyIHNhZmVDaGFyYWN0ZXJzW10gPSAiLS5fKiI7CiAKQEAgLTIxMCw4
ICsyMDksNyBAQCB2b2lkIEZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtCiAgICAg
ICAgICAgICBhcHBlbmQoYnVmZmVyLCAiJTBEJTBBIik7CiAgICAgICAgIGVsc2UgaWYgKGMgIT0g
J1xyJykgewogICAgICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgJyUnKTsKLSAgICAgICAgICAgIGFw
cGVuZChidWZmZXIsIGhleERpZ2l0c1tjID4+IDRdKTsKLSAgICAgICAgICAgIGFwcGVuZChidWZm
ZXIsIGhleERpZ2l0c1tjICYgMHhGXSk7CisgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoYywg
YnVmZmVyKTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHJldmlzaW9uIDgxMjczKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRl
cldpZGdldC5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDx3
dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CkBA
IC0yMTAsMTEgKzIxMSwxMSBAQCBTdHJpbmcgcXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKGNv
bnN0CiAgICAgICAgICAgICBpZiAoYyA+PSAweDIwICYmIGMgPCAweDdGKQogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoYyk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICB1bnNpZ25lZCB1ID0gYzsKLSAgICAgICAgICAgICAgICBTdHJpbmcgaGV4ID0gU3RyaW5nOjpm
b3JtYXQoIlxceHslWH0iLCB1KTsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW4gPSBoZXgu
bGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsg
KytpKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGhleFtpXSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCd4Jyk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgneycpOworICAgICAgICAg
ICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgoYywgcmVzdWx0KTsgCisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnfScpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQo=
</data>
<flag name="review"
          id="78261"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86261</attachid>
            <date>2011-03-19 05:16:59 -0700</date>
            <delta_ts>2011-03-19 05:20:53 -0700</delta_ts>
            <desc>Patch v7</desc>
            <filename>HexNumber-v3.patch</filename>
            <type>text/plain</type>
            <size>25201</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODE1NDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTEtMDMtMTkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFdURiBIZXhOdW1iZXIuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTYwOTkKKworICAgICAgICBJbnRyb2R1Y2UgYSBzZXQgb2YgZnVuY3Rpb25zIHRo
YXQgZWFzZSBjb252ZXJ0aW5nIGZyb20gYSBieWUgb3IgYSBudW1iZXIgdG8gYSBoZXggc3RyaW5n
LAorICAgICAgICByZXBsYWNpbmcgc2V2ZXJhbCBvZiB0aGVzZSBjb252ZXJzaW9ucyBhbmQgU3Ry
aW5nOjpmb3JtYXQoIiV4IikgdXNhZ2VzIGFsbCBvdmVyIFdlYkNvcmUuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbTogQWRkIEhleE51bWJlci5oIHRvIGJ1aWxkLgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLmV4cDogRXhwb3J0IFN0cmluZ0J1aWxkZXI6OnJlc2VydmVDYXBhY2l0eS4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOiBBZGQgSGV4TnVtYmVyLmggdG8gYnVpbGQuCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZjogRXhwb3J0IFN0cmluZ0J1aWxkZXI6OnJlc2VydmVDYXBhY2l0eS4KKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2o6IEFkZCBIZXhOdW1iZXIuaCB0
byBidWlsZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBEaXR0by4KKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6IERpdHRvLgorICAgICAg
ICAqIHd0Zi9IZXhOdW1iZXIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkludGVybmFsOjpoZXhE
aWdpdHNGb3JNb2RlKTogSW50ZXJuYWwgaGVscGVyLgorICAgICAgICAoV1RGOjphcHBlbmRCeXRl
QXNIZXgpOiBGcmVlIGZ1bmN0aW9uLCB0aGF0IGFwcGVuZHMgYSBieXRlIGFzIGhleCBzdHJpbmcg
aW50byBhIGRlc3RpbmF0aW9uLgorICAgICAgICAoV1RGOjpwbGFjZUJ5dGVBc0hleCk6IERpdHRv
LCBidXQgcGxhY2VzIHRoZSByZXN1bHQgdXNpbmcgKmZvbysrID0gJy4uJyBvciBmb29baW5kZXgr
K10gPSAnLi4nCisgICAgICAgIChXVEY6OmFwcGVuZFVuc2lnbmVkQXNIZXgpOiBGcmVlIGZ1bmN0
aW9uLCB0aGF0IGFwcGVuZHMgYSBudW1iZXIgYXMgaGV4IHN0cmluZyBpbnRvIGEgZGVzdGluYXRp
b24uCisKIDIwMTEtMDMtMTkgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA4MTU0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNDcwLDYgKzQ3MCw3IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFz
aFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVHJhaXRzLmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvSGV4TnVtYmVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTGlz
dEhhc2hTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9MaXN0UmVmUHRyLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTG9ja2VyLmggXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA4MTU0OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Niw2
ICszODYsNyBAQCBfX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZTMF9FUzBfUEtjCiBfX1pOM1dU
RjEyZGV0YWNoVGhyZWFkRWoKIF9fWk4zV1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJh
bmRvbU51bWJlckV2CitfX1pOM1dURjEzU3RyaW5nQnVpbGRlcjE1cmVzZXJ2ZUNhcGFjaXR5RWoK
IF9fWk4zV1RGMTNTdHJpbmdCdWlsZGVyMTFyZWlmeVN0cmluZ0V2CiBfX1pOM1dURjEzU3RyaW5n
QnVpbGRlcjExc2hyaW5rVG9GaXRFdgogX19aTjNXVEYxM1N0cmluZ0J1aWxkZXI2YXBwZW5kRVBL
Y2oKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZp
c2lvbiA4MTU0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDcgQEAKICAgICAgICAgICAgICd3dGYvSGFz
aFNldC5oJywKICAgICAgICAgICAgICd3dGYvSGFzaFRhYmxlLmgnLAogICAgICAgICAgICAgJ3d0
Zi9IYXNoVHJhaXRzLmgnLAorICAgICAgICAgICAgJ3d0Zi9IZXhOdW1iZXIuaCcsCiAgICAgICAg
ICAgICAnd3RmL0xpc3RIYXNoU2V0LmgnLAogICAgICAgICAgICAgJ3d0Zi9MaXN0UmVmUHRyLmgn
LAogICAgICAgICAgICAgJ3d0Zi9Mb2NrZXIuaCcsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
Zgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gODE1NDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBjb3B5KQpAQCAtMjc4LDYgKzI3OCw3IEBA
IEVYUE9SVFMKICAgICA/cmVnRXhwRmxhZ3NASlNDQEBZQT9BVzRSZWdFeHBGbGFnc0AxQEFCVlVT
dHJpbmdAMUBAWgogICAgID9hZGRDdXJyZW50VGhyZWFkQE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFF
WFhaCiAgICAgP3JlaWZ5U3RyaW5nQFN0cmluZ0J1aWxkZXJAV1RGQEBBQUVYWFoKKyAgICA/cmVz
ZXJ2ZUNhcGFjaXR5QFN0cmluZ0J1aWxkZXJAV1RGQEBRQUVYSUBaCiAgICAgP3JlbGVhc2VEZWNv
bW1pdHRlZEBPU0FsbG9jYXRvckBXVEZAQFNBWFBBWElAWgogICAgID9yZWxlYXNlU3RhY2tATWFy
a1N0YWNrQEpTQ0BAQ0FYUEFYSUBaCiAgICAgP3JlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNl
QEhlYXBASlNDQEBBQUVYSUBaCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHJldmlzaW9uIDgx
NTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYv
V1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA1LDYgKzcwNSwxMCBAQAogCQkJPgogCQk8
L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxIZXhOdW1iZXIuaCIK
KwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcTGlz
dEhhc2hTZXQuaCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDgxNTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2
ICsyMTEsNyBAQAogCQk2NURGQzkzMzA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1REZDOTJEMDhF
QTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwICovOyB9OwogCQk2NUUxQTNERjEyMkI4OTQ1
MDBCMjYwOTcgLyogTm9uQ29weWluZ1NvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTFBMkY0MTIyQjg4MEQwMEIyNjA5NyAvKiBOb25Db3B5aW5n
U29ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTY1RkRFNDlDMEJERDFENEEwMEU4MDExMSAvKiBBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTIxN0I4MDhFN0VFQ0MwMDIzRTVG
NiAvKiBBc3NlcnRpb25zLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVdu
by1taXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUiOyB9OyB9OworCQk3MTg2QTZFQzEzMTAwQkE1MDA0
NDc5RTEgLyogSGV4TnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MTg2QTZFODEzMTAwQjU3MDA0NDc5RTEgLyogSGV4TnVtYmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzZGQjlGMEYxMkU4
NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc2RkI5RjBFMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzZGQjlGMTExMkU4NTE5
NjAwNTFBMkVCIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzZGQjlGMTAxMkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICovOyB9Owog
CQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzA4MEVCQjc5NjMwMDU5
MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC04NzQsNiArODc1LDcgQEAKIAkJNjVFQTczNjIwQkFFMzVEMTAw
MUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVudGlmaWVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRpZmllcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8q
IEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IH07CisJCTcxODZBNkU4MTMxMDBCNTcwMDQ0NzlFMSAvKiBIZXhOdW1iZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGV4TnVtYmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc2RkI5RjBFMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNIQTEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzZGQjlGMTAxMkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU0hBMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdFMkM2Qzk4MEQzMUM2QjYwMDJENDRFMiAvKiBTY29wZUNoYWluTWFyay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZUNoYWluTWFyay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYxNSw2ICsxNjE3LDcgQEAKIAkJCQk2NURGQzky
RDA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmNwcCAqLywKIAkJCQk2NURGQzkyRTA4RUEx
NzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmggKi8sCiAJCQkJNjVERkM5MkYwOEVBMTczQTAwRjcz
MDBCIC8qIEhhc2hUcmFpdHMuaCAqLywKKwkJCQk3MTg2QTZFODEzMTAwQjU3MDA0NDc5RTEgLyog
SGV4TnVtYmVyLmggKi8sCiAJCQkJNjU3RUI3NDUwQjcwOEY1NDAwNjM0NjFCIC8qIExpc3RIYXNo
U2V0LmggKi8sCiAJCQkJMTQ4QTE2MjYwOTVEMTZCQjAwNjY2RDBEIC8qIExpc3RSZWZQdHIuaCAq
LywKIAkJCQlFMUVFNzkyNzBENkM5NjQ1MDBGRUEzQkEgLyogTG9ja2VyLmggKi8sCkBAIC0yMjg0
LDYgKzIyODcsNyBAQAogCQkJCUJDMThDNDBEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVGFibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVHJh
aXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDBDREU3MTEyREU5N0IxMDAxM0NGQzUgLyogSGVh
cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzE4NkE2RUMxMzEwMEJBNTAwNDQ3OUUxIC8qIEhleE51
bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDEwMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBJbml0aWFsaXplVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFE
M0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4MTU0OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAgU0VUKFdURl9IRUFERVJTCiAgICAgSGFzaFNldC5oCiAgICAgSGFzaFRh
YmxlLmgKICAgICBIYXNoVHJhaXRzLmgKKyAgICBIZXhOdW1iZXIuaAogICAgIExpc3RIYXNoU2V0
LmgKICAgICBMaXN0UmVmUHRyLmgKICAgICBMb2NrZXIuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9IZXhOdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0hleE51bWJlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpZm5kZWYgSGV4TnVtYmVyX2gKKyNkZWZpbmUgSGV4TnVtYmVyX2gKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKK25hbWVzcGFjZSBXVEYgewor
CitlbnVtIEhleENvbnZlcnNpb25Nb2RlIHsKKyAgICBMb3dlcmNhc2UsCisgICAgVXBwZXJjYXNl
Cit9OworCituYW1lc3BhY2UgSW50ZXJuYWwgeworCitzdGF0aWMgY29uc3QgY2hhciogaGV4RGln
aXRzRm9yTW9kZShIZXhDb252ZXJzaW9uTW9kZSBtb2RlKQoreworICAgIHN0YXRpYyBjb25zdCBj
aGFyIGxvd2VySGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciB1cHBlckhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7CisgICAg
cmV0dXJuIG1vZGUgJiBMb3dlcmNhc2UgPyBsb3dlckhleERpZ2l0cyA6IHVwcGVySGV4RGlnaXRz
OworfQorCit9OyAvLyBuYW1lc3BhY2UgSW50ZXJuYWwKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2lubGluZSB2b2lkIGFwcGVuZEJ5dGVBc0hleCh1bnNpZ25lZCBjaGFyIGJ5dGUsIFQmIGRlc3Rp
bmF0aW9uLCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlID0gVXBwZXJjYXNlKQoreworICAgIGNvbnN0
IGNoYXIqIGhleERpZ2l0cyA9IEludGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOworICAg
IGRlc3RpbmF0aW9uLmFwcGVuZChoZXhEaWdpdHNbYnl0ZSA+PiA0XSk7CisgICAgZGVzdGluYXRp
b24uYXBwZW5kKGhleERpZ2l0c1tieXRlICYgMHhGXSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitpbmxpbmUgdm9pZCBwbGFjZUJ5dGVBc0hleENvbXByZXNzSWZQb3NzaWJsZSh1bnNpZ25l
ZCBjaGFyIGJ5dGUsIFQmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCYgaW5kZXgsIEhleENvbnZlcnNp
b25Nb2RlIG1vZGUgPSBVcHBlcmNhc2UpCit7CisgICAgY29uc3QgY2hhciogaGV4RGlnaXRzID0g
SW50ZXJuYWw6OmhleERpZ2l0c0Zvck1vZGUobW9kZSk7CisgICAgaWYgKGJ5dGUgPj0gMHgxMCkK
KyAgICAgICAgZGVzdGluYXRpb25baW5kZXgrK10gPSBoZXhEaWdpdHNbYnl0ZSA+PiA0XTsKKyAg
ICBkZXN0aW5hdGlvbltpbmRleCsrXSA9IGhleERpZ2l0c1tieXRlICYgMHhGXTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHBsYWNlQnl0ZUFzSGV4KHVuc2lnbmVkIGNo
YXIgYnl0ZSwgVCYgZGVzdGluYXRpb24sIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBlcmNh
c2UpCit7CisgICAgY29uc3QgY2hhciogaGV4RGlnaXRzID0gSW50ZXJuYWw6OmhleERpZ2l0c0Zv
ck1vZGUobW9kZSk7CisgICAgKmRlc3RpbmF0aW9uKysgPSBoZXhEaWdpdHNbYnl0ZSA+PiA0XTsK
KyAgICAqZGVzdGluYXRpb24rKyA9IGhleERpZ2l0c1tieXRlICYgMHhGXTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIGFwcGVuZFVuc2lnbmVkQXNIZXgodW5zaWduZWQg
bnVtYmVyLCBUJiBkZXN0aW5hdGlvbiwgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVyY2Fz
ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBoZXhEaWdpdHMgPSBJbnRlcm5hbDo6aGV4RGlnaXRzRm9y
TW9kZShtb2RlKTsKKyAgICBWZWN0b3I8VUNoYXIsIDg+IHJlc3VsdDsKKyAgICBkbyB7CisgICAg
ICAgIHJlc3VsdC5wcmVwZW5kKGhleERpZ2l0c1tudW1iZXIgJSAxNl0pOworICAgICAgICBudW1i
ZXIgPj49IDQ7CisgICAgfSB3aGlsZSAobnVtYmVyID4gMCk7CisKKyAgICBkZXN0aW5hdGlvbi5h
cHBlbmQocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7Cit9CisKKy8vIFNhbWUgYXMgYXBw
ZW5kVXNpbmdBc0hleCwgYnV0IHVzaW5nIGV4YWN0bHkgJ2Rlc2lyZWREaWdpdHMnIGZvciB0aGUg
Y29udmVyc2lvbi4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBhcHBlbmRVbnNp
Z25lZEFzSGV4Rml4ZWRTaXplKHVuc2lnbmVkIG51bWJlciwgVCYgZGVzdGluYXRpb24sIHVuc2ln
bmVkIGRlc2lyZWREaWdpdHMsIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBlcmNhc2UpCit7
CisgICAgQVNTRVJUKGRlc2lyZWREaWdpdHMpOworCisgICAgY29uc3QgY2hhciogaGV4RGlnaXRz
ID0gSW50ZXJuYWw6OmhleERpZ2l0c0Zvck1vZGUobW9kZSk7CisgICAgVmVjdG9yPFVDaGFyLCA4
PiByZXN1bHQ7CisgICAgZG8geworICAgICAgICByZXN1bHQucHJlcGVuZChoZXhEaWdpdHNbbnVt
YmVyICUgMTZdKTsKKyAgICAgICAgbnVtYmVyID4+PSA0OworICAgIH0gd2hpbGUgKHJlc3VsdC5z
aXplKCkgPCBkZXNpcmVkRGlnaXRzKTsKKworICAgIEFTU0VSVChyZXN1bHQuc2l6ZSgpID09IGRl
c2lyZWREaWdpdHMpOworICAgIGRlc3RpbmF0aW9uLmFwcGVuZChyZXN1bHQuZGF0YSgpLCByZXN1
bHQuc2l6ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6YXBwZW5k
Qnl0ZUFzSGV4OwordXNpbmcgV1RGOjphcHBlbmRVbnNpZ25lZEFzSGV4OwordXNpbmcgV1RGOjph
cHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplOwordXNpbmcgV1RGOjpwbGFjZUJ5dGVBc0hleDsK
K3VzaW5nIFdURjo6cGxhY2VCeXRlQXNIZXhDb21wcmVzc0lmUG9zc2libGU7Cit1c2luZyBXVEY6
Okxvd2VyY2FzZTsKKworI2VuZGlmIC8vIEhleE51bWJlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MTU0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMzIEBACisyMDExLTAzLTE5ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVy
bWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSBXVEYgSGV4TnVtYmVyLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDk5CisKKyAgICAgICAgSW50cm9kdWNlIGEgc2V0
IG9mIGZ1bmN0aW9ucyB0aGF0IGVhc2UgY29udmVydGluZyBmcm9tIGEgYnllIG9yIGEgbnVtYmVy
IHRvIGEgaGV4IHN0cmluZywKKyAgICAgICAgcmVwbGFjaW5nIHNldmVyYWwgb2YgdGhlc2UgY29u
dmVyc2lvbnMgYW5kIFN0cmluZzo6Zm9ybWF0KCIleCIpIHVzYWdlcyBhbGwgb3ZlciBXZWJDb3Jl
LgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBjc3MvQ1NTT01VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxp
emVDaGFyYWN0ZXJBc0NvZGVQb2ludCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpxdW90ZUNTU1N0cmluZyk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVhZGFi
bGVTdHJpbmdGcm9tQmluYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUZvckZpbGVOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9LVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVzY2FwZWRDaGFyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9VVUlELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXJpYWxpemVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUJ1
aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQW5kRXNjYXBlTm9uUHJp
bnRhYmxlcyk6CisKIDIwMTEtMDMtMTkgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGV4TnVtYmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSGV4TnVt
YmVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSGV4TnVtYmVyX2gKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZXhOdW1iZXIuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U09NVXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxz
LmNwcAkocmV2aXNpb24gODE1NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDU1NPTVV0aWxzLmgiCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
Myw3ICs1Myw5IEBAIHZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIgYywgVmVjdG8KIAog
dm9pZCBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChVQ2hhcjMyIGMsIFZlY3RvcjxVQ2hh
cj4mIGFwcGVuZFRvKQogewotICAgIGFwcGVuZChhcHBlbmRUbywgU3RyaW5nOjpmb3JtYXQoIlxc
JXggIiwgYykpOworICAgIGFwcGVuZFRvLmFwcGVuZCgnXFwnKTsKKyAgICBhcHBlbmRVbnNpZ25l
ZEFzSGV4KGMsIGFwcGVuZFRvLCBMb3dlcmNhc2UpOworICAgIGFwcGVuZFRvLmFwcGVuZCgnICcp
OwogfQogCiB2b2lkIHNlcmlhbGl6ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBTdHJpbmcmIGFwcGVuZFRvKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlz
aW9uIDgxNTQ4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKICNpbmNsdWRlIDxsaW1p
dHMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KIApAQCAtNjQzOSwxMSArNjQ0MCw4
IEBAIFN0cmluZyBxdW90ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmkKICAgICAgICAgICAg
IGJ1ZmZlcltpbmRleCsrXSA9IGNoOwogICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsK
ICAgICAgICAgfSBlbHNlIGlmIChjaCA8IDB4MjAgfHwgY2ggPT0gMHg3RikgeyAvLyBDb250cm9s
IGNoYXJhY3RlcnMuCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTdd
ID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gJ1xc
JzsKLSAgICAgICAgICAgIGlmIChjaCA+PSAweDEwKQotICAgICAgICAgICAgICAgIGJ1ZmZlcltp
bmRleCsrXSA9IGhleERpZ2l0c1tjaCA+PiA0XTsKLSAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsr
XSA9IGhleERpZ2l0c1tjaCAmIDB4Rl07CisgICAgICAgICAgICBwbGFjZUJ5dGVBc0hleENvbXBy
ZXNzSWZQb3NzaWJsZShjaCwgYnVmZmVyLCBpbmRleCwgTG93ZXJjYXNlKTsKICAgICAgICAgICAg
IGFmdGVyRXNjYXBlID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFNw
YWNlIGNoYXJhY3RlciBtYXkgYmUgcmVxdWlyZWQgdG8gc2VwYXJhdGUgYmFja3NsYXNoLWVzY2Fw
ZSBzZXF1ZW5jZSBhbmQgbm9ybWFsIGNoYXJhY3RlcnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCShyZXZpc2lvbiA4
MTU0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsMTAgQEAKICNpbmNsdWRlICJXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZS5oIgogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDU2LDE4ICs0NTcsMTQgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpmcmFtZURldGFjaAogc3RhdGljIFN0cmluZyBjcmVhdGVSZWFkYWJsZVN0cmluZ0Zyb21CaW5h
cnkoY29uc3QgdW5zaWduZWQgY2hhciogdmFsdWUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNT
RVJUKGxlbmd0aCA+IDApOwotICAgIHN0YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAi
MDEyMzQ1Njc4OUFCQ0RFRiI7Ci0gICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBsZW5ndGggKiAzIC0g
MTsKLSAgICBTdHJpbmdCdWZmZXIgYnVmZmVyKGJ1ZmZlclNpemUpOwotICAgIHNpemVfdCBpbmRl
eCA9IDA7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCWJ1aWxkZXIucmVzZXJ2ZUNhcGFj
aXR5KGxlbmd0aCAqIDMgLSAxKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CiAgICAgICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9
ICc6JzsKLSAgICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW3ZhbHVlW2ldID4+IDRd
OwotICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBoZXhEaWdpdHNbdmFsdWVbaV0gJiAweEZdOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICAgICAgYXBwZW5kQnl0ZUFzSGV4
KHZhbHVlW2ldLCBidWlsZGVyKTsKICAgICB9Ci0gICAgQVNTRVJUKGluZGV4ID09IGJ1ZmZlclNp
emUpOwotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CisgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVh
dGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0
VVJMKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAJKHJldmlzaW9u
IDgxNTQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJzIG5l
ZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCkBAIC03NSw4ICs3Nyw2IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFc2NhcGVVQ2hhcihVQ2gKICAgICByZXR1cm4gYyA+IDEy
NyA/IGZhbHNlIDogbmVlZHNFc2NhcGluZ1tjXTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgaGV4
RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLQogU3RyaW5nIGVuY29kZUZvckZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHIpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5w
dXRTdHIubGVuZ3RoKCk7CkBAIC05MCw4ICs5MCw3IEBAIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFt
ZShjb25zdCBTdHJpbmcmIGkKICAgICAgICAgVUNoYXIgYyA9ICpzdHIrKzsKICAgICAgICAgaWYg
KHNob3VsZEVzY2FwZVVDaGFyKGMpKSB7CiAgICAgICAgICAgICAqcCsrID0gJyUnOwotICAgICAg
ICAgICAgKnArKyA9IGhleERpZ2l0c1soYyA+PiA0KSAmIDB4Rl07Ci0gICAgICAgICAgICAqcCsr
ID0gaGV4RGlnaXRzW2MgJiAweEZdOworICAgICAgICAgICAgcGxhY2VCeXRlQXNIZXgoYywgcCk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKnArKyA9IGM7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vS1VSTC5jcHAJKHJldmlzaW9uIDgxNTQ4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IApAQCAtODksOCArOTAsNiBAQCBlbnVtIFVSTENoYXJhY3RlckNsYXNzZXMgewogICAgIEJhZENo
YXIgPSAxIDw8IDYKIH07CiAKLXN0YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAiMDEy
MzQ1Njc4OUFCQ0RFRiI7Ci0KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNoYXJhY3RlckNs
YXNzVGFibGVbMjU2XSA9IHsKICAgICAvKiAwIG51bCAqLyBQYXRoU2VnbWVudEVuZENoYXIsICAg
IC8qIDEgc29oICovIEJhZENoYXIsCiAgICAgLyogMiBzdHggKi8gQmFkQ2hhciwgICAgLyogMyBl
dHggKi8gQmFkQ2hhciwKQEAgLTk3MCw4ICs5NjksNyBAQCBTdHJpbmcgZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzKGNvbnN0IFN0CiBzdGF0aWMgdm9pZCBhcHBlbmRFc2NhcGVkQ2hhcihjaGFyKiYg
YnVmZmVyLCB1bnNpZ25lZCBjaGFyIGMpCiB7CiAgICAgKmJ1ZmZlcisrID0gJyUnOwotICAgICpi
dWZmZXIrKyA9IGhleERpZ2l0c1tjID4+IDRdOwotICAgICpidWZmZXIrKyA9IGhleERpZ2l0c1tj
ICYgMHhGXTsKKyAgICBwbGFjZUJ5dGVBc0hleChjLCBidWZmZXIpOwogfQogCiBzdGF0aWMgdm9p
ZCBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKGNoYXIqJiBidWZmZXIsIGNvbnN0IGNoYXIqIHN0clN0
YXJ0LCBzaXplX3QgbGVuZ3RoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAJKHJldmlz
aW9uIDgxNTQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNlbGlmIE9TKExJTlVYKSAmJiAhUExBVEZPUk0oQ0hS
T01JVU0pCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNlbGlmIChPUyhMSU5VWCkgJiYgUExBVEZPUk0o
Q0hST01JVU0pKSB8fCAoT1MoREFSV0lOKSAmJiAhVVNFKENGKSkKKyNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNlbmRpZgpAQCAtMTAwLDE3ICsxMDEsMTggQEAgU3RyaW5n
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKQogCiAgICAgLy8gRm9ybWF0IGFzIFZlcnNpb24g
NCBVVUlELgogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgiJTA4eCIsIHJhbmRvbURhdGFbMF0pKTsKKyAgICBhcHBlbmRVbnNpZ25l
ZEFzSGV4Rml4ZWRTaXplKHJhbmRvbURhdGFbMF0sIGJ1aWxkZXIsIDgsIExvd2VyY2FzZSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoIi0iKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1h
dCgiJTA0eCIsIHJhbmRvbURhdGFbMV0gPj4gMTYpKTsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4
Rml4ZWRTaXplKHJhbmRvbURhdGFbMV0gPj4gMTYsIGJ1aWxkZXIsIDQsIExvd2VyY2FzZSk7CiAg
ICAgYnVpbGRlci5hcHBlbmQoIi00Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3Jt
YXQoIiUwM3giLCByYW5kb21EYXRhWzFdICYgMHgwMDAwMGZmZikpOworICAgIGFwcGVuZFVuc2ln
bmVkQXNIZXhGaXhlZFNpemUocmFuZG9tRGF0YVsxXSAmIDB4MDAwMDBmZmYsIGJ1aWxkZXIsIDMs
IExvd2VyY2FzZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIi0iKTsKLSAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmc6OmZvcm1hdCgiJXgiLCAocmFuZG9tRGF0YVsyXSA+PiAzMCkgfCAweDgpKTsgLy8g
Q29uZGVuc2UgdGhpcyBieXRlIHRvIDgsIDksIGEsIGFuZCBiLgotICAgIGJ1aWxkZXIuYXBwZW5k
KFN0cmluZzo6Zm9ybWF0KCIlMDN4IiwgKHJhbmRvbURhdGFbMl0gPj4gMTYpICYgMHgwMDAwMGZm
ZikpOworICAgIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUoKHJhbmRvbURhdGFbMl0gPj4g
MzApIHwgMHg4LCBidWlsZGVyLCAxLCBMb3dlcmNhc2UpOworICAgIGFwcGVuZFVuc2lnbmVkQXNI
ZXhGaXhlZFNpemUoKHJhbmRvbURhdGFbMl0gPj4gMTYpICYgMHgwMDAwMGZmZiwgYnVpbGRlciwg
MywgTG93ZXJjYXNlKTsKICAgICBidWlsZGVyLmFwcGVuZCgiLSIpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDR4IiwgcmFuZG9tRGF0YVsyXSAmIDB4MDAwMGZmZmYpKTsK
LSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTA4eCIsIHJhbmRvbURhdGFbM10p
KTsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKHJhbmRvbURhdGFbMl0gJiAweDAw
MDBmZmZmLCBidWlsZGVyLCA0LCBMb3dlcmNhc2UpOworICAgIGFwcGVuZFVuc2lnbmVkQXNIZXhG
aXhlZFNpemUocmFuZG9tRGF0YVszXSwgYnVpbGRlciwgOCwgTG93ZXJjYXNlKTsKKyAgICBidWls
ZGVyLmFwcGVuZCgiXG4iKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogI2Vsc2UK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gODE1NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywxMiBA
QAogI2luY2x1ZGUgIkNvbG9yLmgiCiAKICNpbmNsdWRlICJIYXNoVG9vbHMuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTgwLDE0ICsxNzksNiBAQCBDb2xvcjo6Q29sb3IoY29uc3QgY2hhciogbmFtZSkK
ICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRIZXhOdW1iZXIoVUNoYXIqIGRl
c3RpbmF0aW9uLCB1aW50OF90IG51bWJlcikKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhE
aWdpdHNbMTddID0gIjAxMjM0NTY3ODlhYmNkZWYiOwotCi0gICAgZGVzdGluYXRpb25bMF0gPSBo
ZXhEaWdpdHNbbnVtYmVyID4+IDRdOwotICAgIGRlc3RpbmF0aW9uWzFdID0gaGV4RGlnaXRzW251
bWJlciAmIDB4Rl07Ci19Ci0KIFN0cmluZyBDb2xvcjo6c2VyaWFsaXplZCgpIGNvbnN0CiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGNvbW1hU3BhY2UsICgiLCAiKSk7
CkBAIC0xOTUsMTMgKzE4NiwxMyBAQCBTdHJpbmcgQ29sb3I6OnNlcmlhbGl6ZWQoKSBjb25zdAog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB6ZXJvUG9pbnRaZXJvLCAoIjAu
MCIpKTsKIAogICAgIGlmICghaGFzQWxwaGEoKSkgewotICAgICAgICBVQ2hhciogY2hhcmFjdGVy
czsKLSAgICAgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZCg3
LCBjaGFyYWN0ZXJzKTsKLSAgICAgICAgY2hhcmFjdGVyc1swXSA9ICcjJzsKLSAgICAgICAgYXBw
ZW5kSGV4TnVtYmVyKGNoYXJhY3RlcnMgKyAxLCByZWQoKSk7Ci0gICAgICAgIGFwcGVuZEhleE51
bWJlcihjaGFyYWN0ZXJzICsgMywgZ3JlZW4oKSk7Ci0gICAgICAgIGFwcGVuZEhleE51bWJlcihj
aGFyYWN0ZXJzICsgNSwgYmx1ZSgpKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eSg3
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYXBwZW5kQnl0ZUFzSGV4
KHJlZCgpLCBidWlsZGVyLCBMb3dlcmNhc2UpOworICAgICAgICBhcHBlbmRCeXRlQXNIZXgoZ3Jl
ZW4oKSwgYnVpbGRlciwgTG93ZXJjYXNlKTsKKyAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGJsdWUo
KSwgYnVpbGRlciwgTG93ZXJjYXNlKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKICAgICB9CiAKICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAJKHJldmlz
aW9uIDgxNTQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1
aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlIDxs
aW1pdHM+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9SYW5k
b21OdW1iZXIuaD4KIApAQCAtMTkyLDggKzE5Myw2IEBAIHZvaWQgRm9ybURhdGFCdWlsZGVyOjph
ZGRLZXlWYWx1ZVBhaXJBc0YKIAogdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0Fz
Rm9ybURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNERUYi
OwotCiAgICAgLy8gU2FtZSBzYWZlIGNoYXJhY3RlcnMgYXMgTmV0c2NhcGUgZm9yIGNvbXBhdGli
aWxpdHkuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgc2FmZUNoYXJhY3RlcnNbXSA9ICItLl8qIjsK
IApAQCAtMjEwLDggKzIwOSw3IEBAIHZvaWQgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdB
c0Zvcm0KICAgICAgICAgICAgIGFwcGVuZChidWZmZXIsICIlMEQlMEEiKTsKICAgICAgICAgZWxz
ZSBpZiAoYyAhPSAnXHInKSB7CiAgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCAnJScpOwotICAg
ICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgaGV4RGlnaXRzW2MgPj4gNF0pOwotICAgICAgICAgICAg
YXBwZW5kKGJ1ZmZlciwgaGV4RGlnaXRzW2MgJiAweEZdKTsKKyAgICAgICAgICAgIGFwcGVuZEJ5
dGVBc0hleChjLCBidWZmZXIpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24gODE1NDgp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5j
bHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVy
TmFtZXMuaD4KQEAgLTIxMCwxMSArMjExLDExIEBAIFN0cmluZyBxdW90ZUFuZEVzY2FwZU5vblBy
aW50YWJsZXMoY29uc3QKICAgICAgICAgICAgIGlmIChjID49IDB4MjAgJiYgYyA8IDB4N0YpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKTsKICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHUgPSBjOwotICAgICAgICAgICAgICAgIFN0cmluZyBoZXgg
PSBTdHJpbmc6OmZvcm1hdCgiXFx4eyVYfSIsIHUpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxlbiA9IGhleC5sZW5ndGgoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4W2ld
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJ3gnKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd7Jyk7
CisgICAgICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleChjLCByZXN1bHQpOyAKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86262</attachid>
            <date>2011-03-19 05:20:53 -0700</date>
            <delta_ts>2011-03-19 14:42:48 -0700</delta_ts>
            <desc>Patch v8</desc>
            <filename>HexNumber-v3.patch</filename>
            <type>text/plain</type>
            <size>25204</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODE1NDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTEtMDMtMTkgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFdURiBIZXhOdW1iZXIuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTYwOTkKKworICAgICAgICBJbnRyb2R1Y2UgYSBzZXQgb2YgZnVuY3Rpb25zIHRo
YXQgZWFzZSBjb252ZXJ0aW5nIGZyb20gYSBieWUgb3IgYSBudW1iZXIgdG8gYSBoZXggc3RyaW5n
LAorICAgICAgICByZXBsYWNpbmcgc2V2ZXJhbCBvZiB0aGVzZSBjb252ZXJzaW9ucyBhbmQgU3Ry
aW5nOjpmb3JtYXQoIiV4IikgdXNhZ2VzIGFsbCBvdmVyIFdlYkNvcmUuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbTogQWRkIEhleE51bWJlci5oIHRvIGJ1aWxkLgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLmV4cDogRXhwb3J0IFN0cmluZ0J1aWxkZXI6OnJlc2VydmVDYXBhY2l0eS4KKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOiBBZGQgSGV4TnVtYmVyLmggdG8gYnVpbGQuCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZjogRXhwb3J0IFN0cmluZ0J1aWxkZXI6OnJlc2VydmVDYXBhY2l0eS4KKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2o6IEFkZCBIZXhOdW1iZXIuaCB0
byBidWlsZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBEaXR0by4KKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6IERpdHRvLgorICAgICAg
ICAqIHd0Zi9IZXhOdW1iZXIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OkludGVybmFsOjpoZXhE
aWdpdHNGb3JNb2RlKTogSW50ZXJuYWwgaGVscGVyLgorICAgICAgICAoV1RGOjphcHBlbmRCeXRl
QXNIZXgpOiBGcmVlIGZ1bmN0aW9uLCB0aGF0IGFwcGVuZHMgYSBieXRlIGFzIGhleCBzdHJpbmcg
aW50byBhIGRlc3RpbmF0aW9uLgorICAgICAgICAoV1RGOjpwbGFjZUJ5dGVBc0hleCk6IERpdHRv
LCBidXQgcGxhY2VzIHRoZSByZXN1bHQgdXNpbmcgKmZvbysrID0gJy4uJyBvciBmb29baW5kZXgr
K10gPSAnLi4nCisgICAgICAgIChXVEY6OmFwcGVuZFVuc2lnbmVkQXNIZXgpOiBGcmVlIGZ1bmN0
aW9uLCB0aGF0IGFwcGVuZHMgYSBudW1iZXIgYXMgaGV4IHN0cmluZyBpbnRvIGEgZGVzdGluYXRp
b24uCisKIDIwMTEtMDMtMTkgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA4MTU0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNDcwLDYgKzQ3MCw3IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFz
aFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVHJhaXRzLmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvSGV4TnVtYmVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTGlz
dEhhc2hTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9MaXN0UmVmUHRyLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTG9ja2VyLmggXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA4MTU0OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Niw2
ICszODYsNyBAQCBfX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZTMF9FUzBfUEtjCiBfX1pOM1dU
RjEyZGV0YWNoVGhyZWFkRWoKIF9fWk4zV1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJh
bmRvbU51bWJlckV2CitfX1pOM1dURjEzU3RyaW5nQnVpbGRlcjE1cmVzZXJ2ZUNhcGFjaXR5RWoK
IF9fWk4zV1RGMTNTdHJpbmdCdWlsZGVyMTFyZWlmeVN0cmluZ0V2CiBfX1pOM1dURjEzU3RyaW5n
QnVpbGRlcjExc2hyaW5rVG9GaXRFdgogX19aTjNXVEYxM1N0cmluZ0J1aWxkZXI2YXBwZW5kRVBL
Y2oKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZp
c2lvbiA4MTU0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDcgQEAKICAgICAgICAgICAgICd3dGYvSGFz
aFNldC5oJywKICAgICAgICAgICAgICd3dGYvSGFzaFRhYmxlLmgnLAogICAgICAgICAgICAgJ3d0
Zi9IYXNoVHJhaXRzLmgnLAorICAgICAgICAgICAgJ3d0Zi9IZXhOdW1iZXIuaCcsCiAgICAgICAg
ICAgICAnd3RmL0xpc3RIYXNoU2V0LmgnLAogICAgICAgICAgICAgJ3d0Zi9MaXN0UmVmUHRyLmgn
LAogICAgICAgICAgICAgJ3d0Zi9Mb2NrZXIuaCcsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
Zgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkocmV2aXNpb24gODE1NDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBjb3B5KQpAQCAtMjc4LDYgKzI3OCw3IEBA
IEVYUE9SVFMKICAgICA/cmVnRXhwRmxhZ3NASlNDQEBZQT9BVzRSZWdFeHBGbGFnc0AxQEFCVlVT
dHJpbmdAMUBAWgogICAgID9hZGRDdXJyZW50VGhyZWFkQE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFF
WFhaCiAgICAgP3JlaWZ5U3RyaW5nQFN0cmluZ0J1aWxkZXJAV1RGQEBBQUVYWFoKKyAgICA/cmVz
ZXJ2ZUNhcGFjaXR5QFN0cmluZ0J1aWxkZXJAV1RGQEBRQUVYSUBaCiAgICAgP3JlbGVhc2VEZWNv
bW1pdHRlZEBPU0FsbG9jYXRvckBXVEZAQFNBWFBBWElAWgogICAgID9yZWxlYXNlU3RhY2tATWFy
a1N0YWNrQEpTQ0BAQ0FYUEFYSUBaCiAgICAgP3JlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNl
QEhlYXBASlNDQEBBQUVYSUBaCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHJldmlzaW9uIDgx
NTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYv
V1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzA1LDYgKzcwNSwxMCBAQAogCQkJPgogCQk8
L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxIZXhOdW1iZXIuaCIK
KwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcTGlz
dEhhc2hTZXQuaCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDgxNTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2
ICsyMTEsNyBAQAogCQk2NURGQzkzMzA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1REZDOTJEMDhF
QTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwICovOyB9OwogCQk2NUUxQTNERjEyMkI4OTQ1
MDBCMjYwOTcgLyogTm9uQ29weWluZ1NvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTFBMkY0MTIyQjg4MEQwMEIyNjA5NyAvKiBOb25Db3B5aW5n
U29ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTY1RkRFNDlDMEJERDFENEEwMEU4MDExMSAvKiBBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTIxN0I4MDhFN0VFQ0MwMDIzRTVG
NiAvKiBBc3NlcnRpb25zLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVdu
by1taXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUiOyB9OyB9OworCQk3MTg2QTZFQzEzMTAwQkE1MDA0
NDc5RTEgLyogSGV4TnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MTg2QTZFODEzMTAwQjU3MDA0NDc5RTEgLyogSGV4TnVtYmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzZGQjlGMEYxMkU4
NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc2RkI5RjBFMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzZGQjlGMTExMkU4NTE5
NjAwNTFBMkVCIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzZGQjlGMTAxMkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICovOyB9Owog
CQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzA4MEVCQjc5NjMwMDU5
MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC04NzQsNiArODc1LDcgQEAKIAkJNjVFQTczNjIwQkFFMzVEMTAw
MUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVudGlmaWVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRpZmllcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8q
IEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IH07CisJCTcxODZBNkU4MTMxMDBCNTcwMDQ0NzlFMSAvKiBIZXhOdW1iZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGV4TnVtYmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc2RkI5RjBFMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNIQTEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzZGQjlGMTAxMkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU0hBMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdFMkM2Qzk4MEQzMUM2QjYwMDJENDRFMiAvKiBTY29wZUNoYWluTWFyay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZUNoYWluTWFyay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYxNSw2ICsxNjE3LDcgQEAKIAkJCQk2NURGQzky
RDA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmNwcCAqLywKIAkJCQk2NURGQzkyRTA4RUEx
NzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmggKi8sCiAJCQkJNjVERkM5MkYwOEVBMTczQTAwRjcz
MDBCIC8qIEhhc2hUcmFpdHMuaCAqLywKKwkJCQk3MTg2QTZFODEzMTAwQjU3MDA0NDc5RTEgLyog
SGV4TnVtYmVyLmggKi8sCiAJCQkJNjU3RUI3NDUwQjcwOEY1NDAwNjM0NjFCIC8qIExpc3RIYXNo
U2V0LmggKi8sCiAJCQkJMTQ4QTE2MjYwOTVEMTZCQjAwNjY2RDBEIC8qIExpc3RSZWZQdHIuaCAq
LywKIAkJCQlFMUVFNzkyNzBENkM5NjQ1MDBGRUEzQkEgLyogTG9ja2VyLmggKi8sCkBAIC0yMjg0
LDYgKzIyODcsNyBAQAogCQkJCUJDMThDNDBEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVGFibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBFMEUxNkY1Q0QwMEIzNDQ2MCAvKiBIYXNoVHJh
aXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDBDREU3MTEyREU5N0IxMDAxM0NGQzUgLyogSGVh
cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzE4NkE2RUMxMzEwMEJBNTAwNDQ3OUUxIC8qIEhleE51
bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDEwMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBJbml0aWFsaXplVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFE
M0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4MTU0OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAgU0VUKFdURl9IRUFERVJTCiAgICAgSGFzaFNldC5oCiAgICAgSGFzaFRh
YmxlLmgKICAgICBIYXNoVHJhaXRzLmgKKyAgICBIZXhOdW1iZXIuaAogICAgIExpc3RIYXNoU2V0
LmgKICAgICBMaXN0UmVmUHRyLmgKICAgICBMb2NrZXIuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9IZXhOdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0hleE51bWJlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9IZXhOdW1iZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpZm5kZWYgSGV4TnVtYmVyX2gKKyNkZWZpbmUgSGV4TnVtYmVyX2gKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKK25hbWVzcGFjZSBXVEYgewor
CitlbnVtIEhleENvbnZlcnNpb25Nb2RlIHsKKyAgICBMb3dlcmNhc2UsCisgICAgVXBwZXJjYXNl
Cit9OworCituYW1lc3BhY2UgSW50ZXJuYWwgeworCitzdGF0aWMgY29uc3QgY2hhciogaGV4RGln
aXRzRm9yTW9kZShIZXhDb252ZXJzaW9uTW9kZSBtb2RlKQoreworICAgIHN0YXRpYyBjb25zdCBj
aGFyIGxvd2VySGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciB1cHBlckhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OUFCQ0RFRiI7CisgICAg
cmV0dXJuIG1vZGUgJiBMb3dlcmNhc2UgPyBsb3dlckhleERpZ2l0cyA6IHVwcGVySGV4RGlnaXRz
OworfQorCit9OyAvLyBuYW1lc3BhY2UgSW50ZXJuYWwKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2lubGluZSB2b2lkIGFwcGVuZEJ5dGVBc0hleCh1bnNpZ25lZCBjaGFyIGJ5dGUsIFQmIGRlc3Rp
bmF0aW9uLCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlID0gVXBwZXJjYXNlKQoreworICAgIGNvbnN0
IGNoYXIqIGhleERpZ2l0cyA9IEludGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOworICAg
IGRlc3RpbmF0aW9uLmFwcGVuZChoZXhEaWdpdHNbYnl0ZSA+PiA0XSk7CisgICAgZGVzdGluYXRp
b24uYXBwZW5kKGhleERpZ2l0c1tieXRlICYgMHhGXSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitpbmxpbmUgdm9pZCBwbGFjZUJ5dGVBc0hleENvbXByZXNzSWZQb3NzaWJsZSh1bnNpZ25l
ZCBjaGFyIGJ5dGUsIFQmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCYgaW5kZXgsIEhleENvbnZlcnNp
b25Nb2RlIG1vZGUgPSBVcHBlcmNhc2UpCit7CisgICAgY29uc3QgY2hhciogaGV4RGlnaXRzID0g
SW50ZXJuYWw6OmhleERpZ2l0c0Zvck1vZGUobW9kZSk7CisgICAgaWYgKGJ5dGUgPj0gMHgxMCkK
KyAgICAgICAgZGVzdGluYXRpb25baW5kZXgrK10gPSBoZXhEaWdpdHNbYnl0ZSA+PiA0XTsKKyAg
ICBkZXN0aW5hdGlvbltpbmRleCsrXSA9IGhleERpZ2l0c1tieXRlICYgMHhGXTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHBsYWNlQnl0ZUFzSGV4KHVuc2lnbmVkIGNo
YXIgYnl0ZSwgVCYgZGVzdGluYXRpb24sIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBlcmNh
c2UpCit7CisgICAgY29uc3QgY2hhciogaGV4RGlnaXRzID0gSW50ZXJuYWw6OmhleERpZ2l0c0Zv
ck1vZGUobW9kZSk7CisgICAgKmRlc3RpbmF0aW9uKysgPSBoZXhEaWdpdHNbYnl0ZSA+PiA0XTsK
KyAgICAqZGVzdGluYXRpb24rKyA9IGhleERpZ2l0c1tieXRlICYgMHhGXTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIGFwcGVuZFVuc2lnbmVkQXNIZXgodW5zaWduZWQg
bnVtYmVyLCBUJiBkZXN0aW5hdGlvbiwgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVyY2Fz
ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBoZXhEaWdpdHMgPSBJbnRlcm5hbDo6aGV4RGlnaXRzRm9y
TW9kZShtb2RlKTsKKyAgICBWZWN0b3I8VUNoYXIsIDg+IHJlc3VsdDsKKyAgICBkbyB7CisgICAg
ICAgIHJlc3VsdC5wcmVwZW5kKGhleERpZ2l0c1tudW1iZXIgJSAxNl0pOworICAgICAgICBudW1i
ZXIgPj49IDQ7CisgICAgfSB3aGlsZSAobnVtYmVyID4gMCk7CisKKyAgICBkZXN0aW5hdGlvbi5h
cHBlbmQocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7Cit9CisKKy8vIFNhbWUgYXMgYXBw
ZW5kVXNpbmdBc0hleCwgYnV0IHVzaW5nIGV4YWN0bHkgJ2Rlc2lyZWREaWdpdHMnIGZvciB0aGUg
Y29udmVyc2lvbi4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBhcHBlbmRVbnNp
Z25lZEFzSGV4Rml4ZWRTaXplKHVuc2lnbmVkIG51bWJlciwgVCYgZGVzdGluYXRpb24sIHVuc2ln
bmVkIGRlc2lyZWREaWdpdHMsIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBlcmNhc2UpCit7
CisgICAgQVNTRVJUKGRlc2lyZWREaWdpdHMpOworCisgICAgY29uc3QgY2hhciogaGV4RGlnaXRz
ID0gSW50ZXJuYWw6OmhleERpZ2l0c0Zvck1vZGUobW9kZSk7CisgICAgVmVjdG9yPFVDaGFyLCA4
PiByZXN1bHQ7CisgICAgZG8geworICAgICAgICByZXN1bHQucHJlcGVuZChoZXhEaWdpdHNbbnVt
YmVyICUgMTZdKTsKKyAgICAgICAgbnVtYmVyID4+PSA0OworICAgIH0gd2hpbGUgKHJlc3VsdC5z
aXplKCkgPCBkZXNpcmVkRGlnaXRzKTsKKworICAgIEFTU0VSVChyZXN1bHQuc2l6ZSgpID09IGRl
c2lyZWREaWdpdHMpOworICAgIGRlc3RpbmF0aW9uLmFwcGVuZChyZXN1bHQuZGF0YSgpLCByZXN1
bHQuc2l6ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6YXBwZW5k
Qnl0ZUFzSGV4OwordXNpbmcgV1RGOjphcHBlbmRVbnNpZ25lZEFzSGV4OwordXNpbmcgV1RGOjph
cHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplOwordXNpbmcgV1RGOjpwbGFjZUJ5dGVBc0hleDsK
K3VzaW5nIFdURjo6cGxhY2VCeXRlQXNIZXhDb21wcmVzc0lmUG9zc2libGU7Cit1c2luZyBXVEY6
Okxvd2VyY2FzZTsKKworI2VuZGlmIC8vIEhleE51bWJlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MTU0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMzIEBACisyMDExLTAzLTE5ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVy
bWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSBXVEYgSGV4TnVtYmVyLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDk5CisKKyAgICAgICAgSW50cm9kdWNlIGEgc2V0
IG9mIGZ1bmN0aW9ucyB0aGF0IGVhc2UgY29udmVydGluZyBmcm9tIGEgYnllIG9yIGEgbnVtYmVy
IHRvIGEgaGV4IHN0cmluZywKKyAgICAgICAgcmVwbGFjaW5nIHNldmVyYWwgb2YgdGhlc2UgY29u
dmVyc2lvbnMgYW5kIFN0cmluZzo6Zm9ybWF0KCIleCIpIHVzYWdlcyBhbGwgb3ZlciBXZWJDb3Jl
LgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBjc3MvQ1NTT01VdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxp
emVDaGFyYWN0ZXJBc0NvZGVQb2ludCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpxdW90ZUNTU1N0cmluZyk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVhZGFi
bGVTdHJpbmdGcm9tQmluYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUZvckZpbGVOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9LVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVzY2FwZWRDaGFyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9VVUlELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbG9yOjpzZXJpYWxpemVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUJ1
aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQW5kRXNjYXBlTm9uUHJp
bnRhYmxlcyk6CisKIDIwMTEtMDMtMTkgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGV4TnVtYmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hleE51bWJlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSGV4TnVt
YmVyX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSGV4TnVtYmVyX2gKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZXhOdW1iZXIuaD4KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U09NVXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxz
LmNwcAkocmV2aXNpb24gODE1NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDU1NPTVV0aWxzLmgiCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
Myw3ICs1Myw5IEBAIHZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIgYywgVmVjdG8KIAog
dm9pZCBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChVQ2hhcjMyIGMsIFZlY3RvcjxVQ2hh
cj4mIGFwcGVuZFRvKQogewotICAgIGFwcGVuZChhcHBlbmRUbywgU3RyaW5nOjpmb3JtYXQoIlxc
JXggIiwgYykpOworICAgIGFwcGVuZFRvLmFwcGVuZCgnXFwnKTsKKyAgICBhcHBlbmRVbnNpZ25l
ZEFzSGV4KGMsIGFwcGVuZFRvLCBMb3dlcmNhc2UpOworICAgIGFwcGVuZFRvLmFwcGVuZCgnICcp
OwogfQogCiB2b2lkIHNlcmlhbGl6ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBTdHJpbmcmIGFwcGVuZFRvKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlz
aW9uIDgxNTQ4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKICNpbmNsdWRlIDxsaW1p
dHMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KIApAQCAtNjQzOSwxMSArNjQ0MCw4
IEBAIFN0cmluZyBxdW90ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmkKICAgICAgICAgICAg
IGJ1ZmZlcltpbmRleCsrXSA9IGNoOwogICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsK
ICAgICAgICAgfSBlbHNlIGlmIChjaCA8IDB4MjAgfHwgY2ggPT0gMHg3RikgeyAvLyBDb250cm9s
IGNoYXJhY3RlcnMuCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTdd
ID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gJ1xc
JzsKLSAgICAgICAgICAgIGlmIChjaCA+PSAweDEwKQotICAgICAgICAgICAgICAgIGJ1ZmZlcltp
bmRleCsrXSA9IGhleERpZ2l0c1tjaCA+PiA0XTsKLSAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsr
XSA9IGhleERpZ2l0c1tjaCAmIDB4Rl07CisgICAgICAgICAgICBwbGFjZUJ5dGVBc0hleENvbXBy
ZXNzSWZQb3NzaWJsZShjaCwgYnVmZmVyLCBpbmRleCwgTG93ZXJjYXNlKTsKICAgICAgICAgICAg
IGFmdGVyRXNjYXBlID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFNw
YWNlIGNoYXJhY3RlciBtYXkgYmUgcmVxdWlyZWQgdG8gc2VwYXJhdGUgYmFja3NsYXNoLWVzY2Fw
ZSBzZXF1ZW5jZSBhbmQgbm9ybWFsIGNoYXJhY3RlcnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCShyZXZpc2lvbiA4
MTU0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsOSArNjIsMTAgQEAKICNpbmNsdWRlICJXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZS5oIgogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDU2LDE4ICs0NTcsMTQgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpmcmFtZURldGFjaAogc3RhdGljIFN0cmluZyBjcmVhdGVSZWFkYWJsZVN0cmluZ0Zyb21CaW5h
cnkoY29uc3QgdW5zaWduZWQgY2hhciogdmFsdWUsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNT
RVJUKGxlbmd0aCA+IDApOwotICAgIHN0YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAi
MDEyMzQ1Njc4OUFCQ0RFRiI7Ci0gICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBsZW5ndGggKiAzIC0g
MTsKLSAgICBTdHJpbmdCdWZmZXIgYnVmZmVyKGJ1ZmZlclNpemUpOwotICAgIHNpemVfdCBpbmRl
eCA9IDA7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIucmVzZXJ2ZUNh
cGFjaXR5KGxlbmd0aCAqIDMgLSAxKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsr
XSA9ICc6JzsKLSAgICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW3ZhbHVlW2ldID4+
IDRdOwotICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBoZXhEaWdpdHNbdmFsdWVbaV0gJiAweEZd
OworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICAgICAgYXBwZW5kQnl0ZUFz
SGV4KHZhbHVlW2ldLCBidWlsZGVyKTsKICAgICB9Ci0gICAgQVNTRVJUKGluZGV4ID09IGJ1ZmZl
clNpemUpOwotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CisgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRD
cmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1
ZXN0VVJMKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAJKHJldmlz
aW9uIDgxNTQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gVGhlIGZvbGxvd2luZyBsb3dlci1BU0NJSSBjaGFyYWN0ZXJz
IG5lZWQgZXNjYXBpbmcgdG8gYmUgdXNlZCBpbiBhIGZpbGVuYW1lCkBAIC03NSw4ICs3Nyw2IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFc2NhcGVVQ2hhcihVQ2gKICAgICByZXR1cm4gYyA+
IDEyNyA/IGZhbHNlIDogbmVlZHNFc2NhcGluZ1tjXTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIg
aGV4RGlnaXRzWzE3XSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKLQogU3RyaW5nIGVuY29kZUZvckZp
bGVOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHIpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
aW5wdXRTdHIubGVuZ3RoKCk7CkBAIC05MCw4ICs5MCw3IEBAIFN0cmluZyBlbmNvZGVGb3JGaWxl
TmFtZShjb25zdCBTdHJpbmcmIGkKICAgICAgICAgVUNoYXIgYyA9ICpzdHIrKzsKICAgICAgICAg
aWYgKHNob3VsZEVzY2FwZVVDaGFyKGMpKSB7CiAgICAgICAgICAgICAqcCsrID0gJyUnOwotICAg
ICAgICAgICAgKnArKyA9IGhleERpZ2l0c1soYyA+PiA0KSAmIDB4Rl07Ci0gICAgICAgICAgICAq
cCsrID0gaGV4RGlnaXRzW2MgJiAweEZdOworICAgICAgICAgICAgcGxhY2VCeXRlQXNIZXgoYywg
cCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKnArKyA9IGM7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHJldmlzaW9uIDgxNTQ4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIApAQCAtODksOCArOTAsNiBAQCBlbnVtIFVSTENoYXJhY3RlckNsYXNzZXMgewogICAgIEJh
ZENoYXIgPSAxIDw8IDYKIH07CiAKLXN0YXRpYyBjb25zdCBjaGFyIGhleERpZ2l0c1sxN10gPSAi
MDEyMzQ1Njc4OUFCQ0RFRiI7Ci0KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNoYXJhY3Rl
ckNsYXNzVGFibGVbMjU2XSA9IHsKICAgICAvKiAwIG51bCAqLyBQYXRoU2VnbWVudEVuZENoYXIs
ICAgIC8qIDEgc29oICovIEJhZENoYXIsCiAgICAgLyogMiBzdHggKi8gQmFkQ2hhciwgICAgLyog
MyBldHggKi8gQmFkQ2hhciwKQEAgLTk3MCw4ICs5NjksNyBAQCBTdHJpbmcgZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzKGNvbnN0IFN0CiBzdGF0aWMgdm9pZCBhcHBlbmRFc2NhcGVkQ2hhcihjaGFy
KiYgYnVmZmVyLCB1bnNpZ25lZCBjaGFyIGMpCiB7CiAgICAgKmJ1ZmZlcisrID0gJyUnOwotICAg
ICpidWZmZXIrKyA9IGhleERpZ2l0c1tjID4+IDRdOwotICAgICpidWZmZXIrKyA9IGhleERpZ2l0
c1tjICYgMHhGXTsKKyAgICBwbGFjZUJ5dGVBc0hleChjLCBidWZmZXIpOwogfQogCiBzdGF0aWMg
dm9pZCBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKGNoYXIqJiBidWZmZXIsIGNvbnN0IGNoYXIqIHN0
clN0YXJ0LCBzaXplX3QgbGVuZ3RoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVVJ
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAJKHJl
dmlzaW9uIDgxNTQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNlbGlmIE9TKExJTlVYKSAmJiAhUExBVEZPUk0o
Q0hST01JVU0pCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNlbGlmIChPUyhMSU5VWCkgJiYgUExBVEZP
Uk0oQ0hST01JVU0pKSB8fCAoT1MoREFSV0lOKSAmJiAhVVNFKENGKSkKKyNpbmNsdWRlIDx3dGYv
SGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNlbmRpZgpAQCAtMTAwLDE3ICsxMDEsMTggQEAgU3Ry
aW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKQogCiAgICAgLy8gRm9ybWF0IGFzIFZlcnNp
b24gNCBVVUlELgogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmc6OmZvcm1hdCgiJTA4eCIsIHJhbmRvbURhdGFbMF0pKTsKKyAgICBhcHBlbmRVbnNp
Z25lZEFzSGV4Rml4ZWRTaXplKHJhbmRvbURhdGFbMF0sIGJ1aWxkZXIsIDgsIExvd2VyY2FzZSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoIi0iKTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZv
cm1hdCgiJTA0eCIsIHJhbmRvbURhdGFbMV0gPj4gMTYpKTsKKyAgICBhcHBlbmRVbnNpZ25lZEFz
SGV4Rml4ZWRTaXplKHJhbmRvbURhdGFbMV0gPj4gMTYsIGJ1aWxkZXIsIDQsIExvd2VyY2FzZSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoIi00Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpm
b3JtYXQoIiUwM3giLCByYW5kb21EYXRhWzFdICYgMHgwMDAwMGZmZikpOworICAgIGFwcGVuZFVu
c2lnbmVkQXNIZXhGaXhlZFNpemUocmFuZG9tRGF0YVsxXSAmIDB4MDAwMDBmZmYsIGJ1aWxkZXIs
IDMsIExvd2VyY2FzZSk7CiAgICAgYnVpbGRlci5hcHBlbmQoIi0iKTsKLSAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmc6OmZvcm1hdCgiJXgiLCAocmFuZG9tRGF0YVsyXSA+PiAzMCkgfCAweDgpKTsg
Ly8gQ29uZGVuc2UgdGhpcyBieXRlIHRvIDgsIDksIGEsIGFuZCBiLgotICAgIGJ1aWxkZXIuYXBw
ZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDN4IiwgKHJhbmRvbURhdGFbMl0gPj4gMTYpICYgMHgwMDAw
MGZmZikpOworICAgIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUoKHJhbmRvbURhdGFbMl0g
Pj4gMzApIHwgMHg4LCBidWlsZGVyLCAxLCBMb3dlcmNhc2UpOworICAgIGFwcGVuZFVuc2lnbmVk
QXNIZXhGaXhlZFNpemUoKHJhbmRvbURhdGFbMl0gPj4gMTYpICYgMHgwMDAwMGZmZiwgYnVpbGRl
ciwgMywgTG93ZXJjYXNlKTsKICAgICBidWlsZGVyLmFwcGVuZCgiLSIpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlMDR4IiwgcmFuZG9tRGF0YVsyXSAmIDB4MDAwMGZmZmYp
KTsKLSAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTA4eCIsIHJhbmRvbURhdGFb
M10pKTsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKHJhbmRvbURhdGFbMl0gJiAw
eDAwMDBmZmZmLCBidWlsZGVyLCA0LCBMb3dlcmNhc2UpOworICAgIGFwcGVuZFVuc2lnbmVkQXNI
ZXhGaXhlZFNpemUocmFuZG9tRGF0YVszXSwgYnVpbGRlciwgOCwgTG93ZXJjYXNlKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiXG4iKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogI2Vs
c2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gODE1NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywx
MiBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAKICNpbmNsdWRlICJIYXNoVG9vbHMuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMTgwLDE0ICsxNzksNiBAQCBDb2xvcjo6Q29sb3IoY29uc3QgY2hhciogbmFt
ZSkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRIZXhOdW1iZXIoVUNoYXIq
IGRlc3RpbmF0aW9uLCB1aW50OF90IG51bWJlcikKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciBo
ZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlhYmNkZWYiOwotCi0gICAgZGVzdGluYXRpb25bMF0g
PSBoZXhEaWdpdHNbbnVtYmVyID4+IDRdOwotICAgIGRlc3RpbmF0aW9uWzFdID0gaGV4RGlnaXRz
W251bWJlciAmIDB4Rl07Ci19Ci0KIFN0cmluZyBDb2xvcjo6c2VyaWFsaXplZCgpIGNvbnN0CiB7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGNvbW1hU3BhY2UsICgiLCAi
KSk7CkBAIC0xOTUsMTMgKzE4NiwxMyBAQCBTdHJpbmcgQ29sb3I6OnNlcmlhbGl6ZWQoKSBjb25z
dAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB6ZXJvUG9pbnRaZXJvLCAo
IjAuMCIpKTsKIAogICAgIGlmICghaGFzQWxwaGEoKSkgewotICAgICAgICBVQ2hhciogY2hhcmFj
dGVyczsKLSAgICAgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCg3LCBjaGFyYWN0ZXJzKTsKLSAgICAgICAgY2hhcmFjdGVyc1swXSA9ICcjJzsKLSAgICAgICAg
YXBwZW5kSGV4TnVtYmVyKGNoYXJhY3RlcnMgKyAxLCByZWQoKSk7Ci0gICAgICAgIGFwcGVuZEhl
eE51bWJlcihjaGFyYWN0ZXJzICsgMywgZ3JlZW4oKSk7Ci0gICAgICAgIGFwcGVuZEhleE51bWJl
cihjaGFyYWN0ZXJzICsgNSwgYmx1ZSgpKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0
eSg3KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgYXBwZW5kQnl0ZUFz
SGV4KHJlZCgpLCBidWlsZGVyLCBMb3dlcmNhc2UpOworICAgICAgICBhcHBlbmRCeXRlQXNIZXgo
Z3JlZW4oKSwgYnVpbGRlciwgTG93ZXJjYXNlKTsKKyAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGJs
dWUoKSwgYnVpbGRlciwgTG93ZXJjYXNlKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKICAgICB9CiAKICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAJKHJl
dmlzaW9uIDgxNTQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YUJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRl
IDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9S
YW5kb21OdW1iZXIuaD4KIApAQCAtMTkyLDggKzE5Myw2IEBAIHZvaWQgRm9ybURhdGFCdWlsZGVy
OjphZGRLZXlWYWx1ZVBhaXJBc0YKIAogdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmlu
Z0FzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykK
IHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNE
RUYiOwotCiAgICAgLy8gU2FtZSBzYWZlIGNoYXJhY3RlcnMgYXMgTmV0c2NhcGUgZm9yIGNvbXBh
dGliaWxpdHkuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgc2FmZUNoYXJhY3RlcnNbXSA9ICItLl8q
IjsKIApAQCAtMjEwLDggKzIwOSw3IEBAIHZvaWQgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJp
bmdBc0Zvcm0KICAgICAgICAgICAgIGFwcGVuZChidWZmZXIsICIlMEQlMEEiKTsKICAgICAgICAg
ZWxzZSBpZiAoYyAhPSAnXHInKSB7CiAgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCAnJScpOwot
ICAgICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgaGV4RGlnaXRzW2MgPj4gNF0pOwotICAgICAgICAg
ICAgYXBwZW5kKGJ1ZmZlciwgaGV4RGlnaXRzW2MgJiAweEZdKTsKKyAgICAgICAgICAgIGFwcGVu
ZEJ5dGVBc0hleChjLCBidWZmZXIpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24gODE1
NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAj
aW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0u
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaD4KQEAgLTIxMCwxMSArMjExLDExIEBAIFN0cmluZyBxdW90ZUFuZEVzY2FwZU5v
blByaW50YWJsZXMoY29uc3QKICAgICAgICAgICAgIGlmIChjID49IDB4MjAgJiYgYyA8IDB4N0Yp
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKTsKICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHUgPSBjOwotICAgICAgICAgICAgICAgIFN0cmluZyBo
ZXggPSBTdHJpbmc6OmZvcm1hdCgiXFx4eyVYfSIsIHUpOwotICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxlbiA9IGhleC5sZW5ndGgoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4
W2ldKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJ3gnKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd7
Jyk7CisgICAgICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleChjLCByZXN1bHQpOyAKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9Cg==
</data>
<flag name="review"
          id="78497"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>