<?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>175688</bug_id>
          
          <creation_ts>2017-08-17 14:50:52 -0700</creation_ts>
          <short_desc>Enhance MacroAssembler::probe() to allow the probe function to resize the stack frame and alter stack data in one pass.</short_desc>
          <delta_ts>2017-08-21 21:59:27 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>175725</dependson>
          <blocked>174645</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1339783</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-17 14:50:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/33436870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340258</commentid>
    <comment_count>1</comment_count>
      <attachid>318548</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-18 15:04:38 -0700</bug_when>
    <thetext>Created attachment 318548
work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340259</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-18 15:06:09 -0700</bug_when>
    <thetext>Attachment 318548 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:370:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:371:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:372:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:381:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:383:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:385:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:387:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:407:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerPrinter.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 9 in 17 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>1340345</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-18 17:54:58 -0700</bug_when>
    <thetext>I&apos;ve the patch working for x86, x86_64, and arm64 now.  There&apos;s some mysterious bug in the ARMv7 version.  So, I need to do a bit more debugging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340411</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-19 13:04:03 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; I&apos;ve the patch working for x86, x86_64, and arm64 now.  There&apos;s some
&gt; mysterious bug in the ARMv7 version.  So, I need to do a bit more debugging.

I found my issue: on ARMv7, the T1 encoding of the MOV immediate always sets the flags i.e. it&apos;s a MOVS.  This is what&apos;s messing up my flags.  The issue is technically not related to my patch, but I&apos;ll look into a fix since the probe is probably the only place where this issue matters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340450</commentid>
    <comment_count>5</comment_count>
      <attachid>318593</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-19 16:32:15 -0700</bug_when>
    <thetext>Created attachment 318593
proposed patch.

One more test to run before I set the review request bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340451</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-19 16:33:45 -0700</bug_when>
    <thetext>Attachment 318593 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:370:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:371:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:372:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:381:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:383:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:385:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:387:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:407:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 8 in 18 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>1340452</commentid>
    <comment_count>7</comment_count>
      <attachid>318593</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-19 16:38:13 -0700</bug_when>
    <thetext>Comment on attachment 318593
proposed patch.

All my tests are green.  Time to get a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340463</commentid>
    <comment_count>8</comment_count>
      <attachid>318593</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-08-19 22:55:24 -0700</bug_when>
    <thetext>Comment on attachment 318593
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.cpp:-130
&gt; -#define SAVED_PROBE_ERROR_FUNCTION_OFFSET   (PROBE_SIZE + (2 * PTR_SIZE))

I&apos;m not sure I understand this change.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.cpp:288
&gt; +static_assert(!(sizeof(LRRestorationRecord) &amp; 0xf), &quot;LRRestorationRecord must be 16-byte aligned&quot;);

Size won&apos;t guarantee alignment.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:165
&gt; +COMPILE_ASSERT((PROBE_EXECUTOR_OFFSET + PTR_SIZE) &lt;= (PROBE_SIZE + OUT_SIZE), Must_have_room_after_ProbeContext_to_stash_the_probe_handler);

Can you use staic_assert instead?

&gt; Source/JavaScriptCore/assembler/ProbeStack.cpp:82
&gt; +    return false;

return std::any_of(m_pages.begin(), m_pages.end(), [] (auto it) { return it-&gt;value=&gt;hasWritesToFlush(); });

&gt; Source/JavaScriptCore/assembler/ProbeStack.h:148
&gt; +        return bitwise_cast&lt;double&gt;(page-&gt;get&lt;uint64_t&gt;(address));

Can you just bitwise_cast to T and remove the enable_if?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340465</commentid>
    <comment_count>9</comment_count>
      <attachid>318593</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-20 00:16:35 -0700</bug_when>
    <thetext>Comment on attachment 318593
proposed patch.

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

Thanks for the review.  Looks like I have a Windows build issue.  I&apos;ll land after I resolve that.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.cpp:-130
&gt;&gt; -#define SAVED_PROBE_ERROR_FUNCTION_OFFSET   (PROBE_SIZE + (2 * PTR_SIZE))
&gt; 
&gt; I&apos;m not sure I understand this change.

I used to stash away SAVED_PROBE_LR_OFFSET so that I can determine if the client change lr or not.  However, we really don&apos;t need to do that.  If the client did not change pc, then we&apos;re turning to the generated JIT probe return site where we&apos;ll restore lr whether it changed or not.  Hence, SAVED_PROBE_LR_OFFSET is not needed anymore.

I used to stash SAVED_PROBE_ERROR_FUNCTION_OFFSET because the trampoline needed to error out by calling this error function if the client changed both pc and lr (which is not supported).  We can now do that checking in C++ code in Probe::executeProbe().  Hence, there&apos;s no more need for SAVED_PROBE_ERROR_FUNCTION_OFFSET in the trampoline.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.cpp:288
&gt;&gt; +static_assert(!(sizeof(LRRestorationRecord) &amp; 0xf), &quot;LRRestorationRecord must be 16-byte aligned&quot;);
&gt; 
&gt; Size won&apos;t guarantee alignment.

Yes, but the LRRestorationRecord is pushed on top of the stack pointer, which is supposed to be aligned.  So, together, we get alignment.  Plus WebKit code uses the term &quot;aligned&quot; to mean &quot;packed&quot; as well in lots of places (since the math for alignment is the same as the math for packing).  I used to say packed a long time ago, but just conform to using the term aligned these days.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:165
&gt;&gt; +COMPILE_ASSERT((PROBE_EXECUTOR_OFFSET + PTR_SIZE) &lt;= (PROBE_SIZE + OUT_SIZE), Must_have_room_after_ProbeContext_to_stash_the_probe_handler);
&gt; 
&gt; Can you use staic_assert instead?

COMPILE_ASSERT is static_assert (introduced back in the days before static_assert was available for use).  I had considered using straight static_assert, but was a bit wishy washy and settled on staying with COMPILE_ASSERT to be consistent with existing code.  Maybe I can do a pass later to change all the COMPILE_ASSERTs in probe code to static_assert.  I&apos;d like to leave this as is for now.

&gt;&gt; Source/JavaScriptCore/assembler/ProbeStack.cpp:82
&gt;&gt; +    return false;
&gt; 
&gt; return std::any_of(m_pages.begin(), m_pages.end(), [] (auto it) { return it-&gt;value=&gt;hasWritesToFlush(); });

Ooo ... nice.  I will land with that if I don&apos;t run into complications with it.

&gt;&gt; Source/JavaScriptCore/assembler/ProbeStack.h:148
&gt;&gt; +        return bitwise_cast&lt;double&gt;(page-&gt;get&lt;uint64_t&gt;(address));
&gt; 
&gt; Can you just bitwise_cast to T and remove the enable_if?

You might be right.  Strict aliasing issues always make my head hurt.  I think the existing code is safe.  I would like to land this as is, and give it some more thought later.  If there are no issues on further consideration, I can simplify this as you suggested in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340477</commentid>
    <comment_count>10</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-08-20 07:06:08 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #4)
&gt; (In reply to Mark Lam from comment #3)
&gt; &gt; I&apos;ve the patch working for x86, x86_64, and arm64 now.  There&apos;s some
&gt; &gt; mysterious bug in the ARMv7 version.  So, I need to do a bit more debugging.
&gt; 
&gt; I found my issue: on ARMv7, the T1 encoding of the MOV immediate always sets
&gt; the flags i.e. it&apos;s a MOVS.  This is what&apos;s messing up my flags.  The issue
&gt; is technically not related to my patch, but I&apos;ll look into a fix since the
&gt; probe is probably the only place where this issue matters.

Forgot to reply to this: IIRC on Thumb you get a MOV without S by putting it in an IT block with condition AL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340499</commentid>
    <comment_count>11</comment_count>
      <attachid>318608</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-20 17:13:53 -0700</bug_when>
    <thetext>Created attachment 318608
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340500</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-20 17:16:11 -0700</bug_when>
    <thetext>Attachment 318608 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/ProbeStack.cpp:78:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:370:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:371:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:372:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:381:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:383:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:385:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:387:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:407:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 9 in 18 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>1340509</commentid>
    <comment_count>13</comment_count>
      <attachid>318610</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-20 19:52:25 -0700</bug_when>
    <thetext>Created attachment 318610
patch for landing w/ Windows fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340510</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-20 19:53:27 -0700</bug_when>
    <thetext>Attachment 318610 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/ProbeStack.cpp:78:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:370:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:371:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:372:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:381:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:383:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:385:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:387:  Extra space before [.  [whitespace/brackets] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp:407:  Extra space before [.  [whitespace/brackets] [5]
Total errors found: 9 in 18 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>1340515</commentid>
    <comment_count>15</comment_count>
      <attachid>318610</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-20 21:11:24 -0700</bug_when>
    <thetext>Comment on attachment 318610
patch for landing w/ Windows fix.

Rejecting attachment 318610 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 318610, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ing rebase:
:040000 040000 233d6811df1f147ca443b4b394705bbb2f93cb09 db0b1ac60dc9ee2de6539d93219715a97d139bf9 M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
Current branch master is up to date.

Full output: http://webkit-queues.webkit.org/results/4351557</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340516</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-20 21:29:23 -0700</bug_when>
    <thetext>There were some tabs in MacroAssemblerARM.cpp and MacroAssemblerARMv7.cpp that were not detected by the style checker but was caught by the pre-commit hooks.  I&apos;ve fixed them.

The patch is landed in r220958: &lt;http://trac.webkit.org/r220958&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340522</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-08-20 22:38:55 -0700</bug_when>
    <thetext>It broke the cloop build:
https://build.webkit.org/builders/Apple%20El%20Capitan%20LLINT%20CLoop%20%28BuildAndTest%29/builds/4544</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340526</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-20 23:57:43 -0700</bug_when>
    <thetext>Landed fix for CLoop build in r220960: &lt;http://trac.webkit.org/r220960&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340908</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-08-21 18:35:56 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #18)
&gt; Landed fix for CLoop build in r220960: &lt;http://trac.webkit.org/r220960&gt;.

I think there is a typo in Source/WTF/wtf/Platform.h:

-#if !ENABLE(JIT) || OS(WINDOW)
+#if !ENABLE(JIT) || OS(WINDOWS)

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340956</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-21 21:59:27 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #19)
&gt; (In reply to Mark Lam from comment #18)
&gt; &gt; Landed fix for CLoop build in r220960: &lt;http://trac.webkit.org/r220960&gt;.
&gt; 
&gt; I think there is a typo in Source/WTF/wtf/Platform.h:
&gt; 
&gt; -#if !ENABLE(JIT) || OS(WINDOW)
&gt; +#if !ENABLE(JIT) || OS(WINDOWS)

Thanks.  This is fix in a follow up fix to bug 175656: see https://bugs.webkit.org/show_bug.cgi?id=175656#c6.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318548</attachid>
            <date>2017-08-18 15:04:38 -0700</date>
            <delta_ts>2017-08-19 16:32:15 -0700</delta_ts>
            <desc>work in progress.</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>98492</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDkzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNzYsNiArNzYsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmNwcAogICAgIGFzc2VtYmxlci9QcmludGVyLmNwcAorICAgIGFzc2VtYmxlci9Q
cm9iZUNvbnRleHQuY3BwCisgICAgYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCiAKICAgICBiMy9h
aXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAKICAgICBiMy9h
aXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwOTM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTI0MjksNiArMjQyOSwxMCBAQAogCQlGQTNBQjIxMUM4NDk0NTI0QUIzOTAyNjcg
LyogSlNTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY3MzkyNjkxOERDNjQzMzBBRkNERjBENyAvKiBKU1NvdXJjZUNvZGUuY3BwICov
OyB9OwogCQlGRTBENEEwNjFBQjhERDBBMDAyRjU0QkYgLyogRXhlY3V0aW9uVGltZUxpbWl0VGVz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTBE
NEEwNDFBQjhERDBBMDAyRjU0QkYgLyogRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAgKi87IH07
CiAJCUZFMEQ0QTA5MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXpl
clRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUwRDRBMDcxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVz
dC5jcHAgKi87IH07CisJCUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFQTFG
NDRENTEyMDA5REVEQzUgLyogUHJvYmVTdGFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMTBBQUVDMUY0NEQ1NDUwMDlERURDNSAvKiBQcm9i
ZVN0YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMTBBQUU5MUY0NEQ1MTAwMDlERURDNSAvKiBQcm9iZVN0YWNrLmNwcCAqLzsgfTsKKwkJRkUx
MEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRUQxRjQ0RDk0NjAwOURFREM1IC8q
IFByb2JlQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUZFMTBBQUY0MUY0NjgzOTYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRjMxRjQ2
ODI2RDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi87IH07CiAJCUZFMTIyMDI3MUJFN0Y1
OEMwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRH
ZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUxMjIwMjgxQkU3RjU5MTAwMzlFNkYyIC8qIEpJVEFkZEdl
bmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTEyMjAyNTFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCAqLzsgfTsK
IAkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlGRjFCRkJDNzND
MDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTUxMDUsNiArNTEwOSwx
MCBAQAogCQlGRTBENEEwNTFBQjhERDBBMDAyRjU0QkYgLyogRXhlY3V0aW9uVGltZUxpbWl0VGVz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFeGVjdXRpb25UaW1lTGltaXRU
ZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTBENEEwNzFBQkEyNDM3MDAyRjU0QkYgLyogR2xvYmFs
Q29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5jcHA7IHBhdGggPSBBUEkv
dGVzdHMvR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkUwRDRBMDgxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRX
aXRoRmluYWxpemVyVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHbG9i
YWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9HbG9iYWxDb250
ZXh0V2l0aEZpbmFsaXplclRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUx
MEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJvYmVTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlU3RhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkUxMEFBRUQxRjQ0RDk0NjAwOURFREM1IC8qIFByb2JlQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZUNvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxMEFBRjMxRjQ2ODI2RDAwOURFREM1IC8qIFByb2Jl
Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9iZUNv
bnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEyMjAyNTFCRTdGNTY0
MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpJVEFkZEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFMTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQWRkR2VuZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMTg3OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxH
ZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUTXVs
R2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2NzYsNiArNzY4
NCwxMCBAQAogCQkJCTg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmgg
Ki8sCiAJCQkJRkU2M0RENTUxRUE5QkM1RDAwMTAzQTY5IC8qIFByaW50ZXIuY3BwICovLAogCQkJ
CUZFNjNERDUzMUVBOUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi8sCisJCQkJRkUxMEFBRjMx
RjQ2ODI2RDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8sCisJCQkJRkUxMEFBRUQxRjQ0
RDk0NjAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oICovLAorCQkJCUZFMTBBQUU5MUY0NEQ1MTAw
MDlERURDNSAvKiBQcm9iZVN0YWNrLmNwcCAqLywKKwkJCQlGRTEwQUFFQTFGNDRENTEyMDA5REVE
QzUgLyogUHJvYmVTdGFjay5oICovLAogCQkJCUZFNTMzQ0EwMUYyMTdDMzEwMDE2QTFGRSAvKiB0
ZXN0bWFzbS5jcHAgKi8sCiAJCQkJOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2Vt
Ymxlci5oICovLAogCQkJKTsKQEAgLTg1OTEsNiArODYwMyw3IEBACiAJCQkJMEZCRjE1OEQxOUI3
QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZDM0NEMDAxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFMTBBQUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQcm9iZUNv
bnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBE
RkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAw
N0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkJEQjlBRDFBQjBGQkM2MDAwQjU3RTUgLyogREZHQ2FsbENyZWF0ZURp
cmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk2MzEs
NiArOTY0NCw3IEBACiAJCQkJQUQ0OTM3QzgxREREMEFBRTAwNzdDODA3IC8qIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0MyRDFEQjgzOEZEMDBCM0U3
MzYgLyogV2ViQXNzZW1ibHlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQkY5
MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRTEwQUFFQjFGNDRENTI4MDA5REVEQzUgLyogUHJvYmVTdGFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMUUxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFz
c2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
RDJGQ0JGQjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFGMURCNTlDQjIwMEIzRTczNiAvKiBXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTA0
NDEsNiArMTA0NTUsNyBAQAogCQkJCTBGNjlDQzg4MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96
ZW5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNzEzMjhERjgyMDAyQjJBRDcg
LyogREZHR3JhcGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkNDRjkxOEE2MDA3MDAwMUEy
N0Y4IC8qIERGR0dyYXBoU2FmZXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMTBBQUY0
MUY0NjgzOTYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZCMTc2NjAxOTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkM4NDE2ODFCQThDMzIxMDA2MTgzN0QgLyogREZHSW5mZXJyZWRUeXBlQ2hl
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwNEQ5MDUxN0EwQkFBODAwNkJBNTU0IC8qIERG
R0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA3MjksNiArMTA3
NDQsNyBAQAogCQkJCTE0N0YzOUQ2MTA3RUMzNzYwMDQyN0E0OCAvKiBKU0NKU1ZhbHVlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0NDBGQ0U0MEE1MUU0NkIwMDA1RjA2MSAvKiBKU0NsYXNzUmVm
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjE2MTY3QkFCRUUwMDZENzYwQSAvKiBKU0Nv
bnRleHQubW0gaW4gU291cmNlcyAqLywKKwkJCQlGRTEwQUFFQzFGNDRENTQ1MDA5REVEQzUgLyog
UHJvYmVTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEJENUEzMDBBM0U5MUY2MDBCQUY1
OUMgLyogSlNDb250ZXh0UmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjAyOEI2MTc5NzYw
MUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NzJBQUY3Q0QxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjIwOTM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogbmFtZXNwYWNlIFByb2JlIHsKLXN0cnVjdCBTdGF0
ZTsKLXR5cGVkZWYgdm9pZCAoKkZ1bmN0aW9uKShzdHJ1Y3QgU3RhdGUqKTsKK2NsYXNzIENvbnRl
eHQ7Cit0eXBlZGVmIHZvaWQgKCpGdW5jdGlvbikoQ29udGV4dCYpOwogfSAvLyBuYW1lc3BhY2Ug
UHJvYmUKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQogICAgIAogY2xhc3Mg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOwogY2xhc3MgRGlzYWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQogCisjaW5jbHVkZSAi
UHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMzUsMTUgKzM2LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgZG91Ymxl
IE1hY3JvQXNzZW1ibGVyOjp0d29Ub1RoZTMyID0gKGRvdWJsZSkweDEwMDAwMDAwMHVsbDsKIAog
I2lmIEVOQUJMRShNQVNNX1BST0JFKQotc3RhdGljIHZvaWQgc3RkRnVuY3Rpb25DYWxsYmFjayhQ
cm9iZTo6U3RhdGUqIHN0YXRlKQorc3RhdGljIHZvaWQgc3RkRnVuY3Rpb25DYWxsYmFjayhQcm9i
ZTo6Q29udGV4dCYgY29udGV4dCkKIHsKLSAgICBhdXRvIGZ1bmMgPSBzdGF0aWNfY2FzdDxjb25z
dCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUHJvYmU6OlN0YXRlKik+Kj4oc3RhdGUtPmFyZyk7Ci0gICAg
KCpmdW5jKShzdGF0ZSk7CisgICAgYXV0byBmdW5jID0gc3RhdGljX2Nhc3Q8Y29uc3Qgc3RkOjpm
dW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+Kj4oY29udGV4dC5hcmcpOworICAgICgqZnVu
YykoY29udGV4dCk7CiB9CiAgICAgCi12b2lkIE1hY3JvQXNzZW1ibGVyOjpwcm9iZShzdGQ6OmZ1
bmN0aW9uPHZvaWQoUHJvYmU6OlN0YXRlKik+IGZ1bmMpCit2b2lkIE1hY3JvQXNzZW1ibGVyOjpw
cm9iZShzdGQ6OmZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykKIHsKLSAgICBw
cm9iZShzdGRGdW5jdGlvbkNhbGxiYWNrLCBuZXcgc3RkOjpmdW5jdGlvbjx2b2lkKFByb2JlOjpT
dGF0ZSopPihmdW5jKSk7CisgICAgcHJvYmUoc3RkRnVuY3Rpb25DYWxsYmFjaywgbmV3IHN0ZDo6
ZnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPihmdW5jKSk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKE1BU01fUFJPQkUpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NjMsMTIgKzYzLDE0IEBAIG5hbWVzcGFjZSBKU0MgeyB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyWDgK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0cnVjdCBQcm9iZUNvbnRleHQ7CisKIG5hbWVzcGFjZSBQ
cmludGVyIHsKIAogc3RydWN0IFByaW50UmVjb3JkOwogdHlwZWRlZiBWZWN0b3I8UHJpbnRSZWNv
cmQ+IFByaW50UmVjb3JkTGlzdDsKIAotfQorfSAvLyBuYW1lc3BhY2UgUHJpbnRlcgogCiBjbGFz
cyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgewogcHVibGljOgpA
QCAtMTgyNSw4ICsxODI3LDYgQEAgcHVibGljOgogICAgIH0KIAogI2lmIEVOQUJMRShNQVNNX1BS
T0JFKQotICAgIHN0cnVjdCBDUFVTdGF0ZTsKLQogICAgIC8vIFRoaXMgZnVuY3Rpb24gZW1pdHMg
Y29kZSB0byBwcmVzZXJ2ZSB0aGUgQ1BVU3RhdGUgKGUuZy4gcmVnaXN0ZXJzKSwKICAgICAvLyBj
YWxsIGEgdXNlciBzdXBwbGllZCBwcm9iZSBmdW5jdGlvbiwgYW5kIHJlc3RvcmUgdGhlIENQVVN0
YXRlIGJlZm9yZQogICAgIC8vIGNvbnRpbnVpbmcgd2l0aCBvdGhlciBKSVQgZ2VuZXJhdGVkIGNv
ZGUuCkBAIC0xODc4LDcgKzE4NzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWFjcm9Bc3NlbWJsZXIu
CiAgICAgdm9pZCBwcm9iZShQcm9iZTo6RnVuY3Rpb24sIHZvaWQqIGFyZyk7CiAKLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHByb2JlKHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6U3RhdGUq
KT4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJvYmUoc3RkOjpmdW5jdGlvbjx2b2lk
KFByb2JlOjpDb250ZXh0Jik+KTsKIAogICAgIC8vIExldCdzIHlvdSBwcmludCBmcm9tIHlvdXIg
SklUIGdlbmVyYXRlZCBjb2RlLgogICAgIC8vIFNlZSBjb21tZW50cyBpbiBNYWNyb0Fzc2VtYmxl
clByaW50ZXIuaCBmb3IgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzLgpAQCAtMTg4OSwxNzMg
KzE4ODksNiBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiB9OwogCi0j
aWYgRU5BQkxFKE1BU01fUFJPQkUpCi1zdHJ1Y3QgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlIHsK
LSAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGdwck5hbWUoUmVnaXN0ZXJJRCBpZCkgeyBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXI6Omdwck5hbWUoaWQpOyB9Ci0gICAgc3RhdGljIGlubGluZSBj
b25zdCBjaGFyKiBzcHJOYW1lKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXI6OnNwck5hbWUoaWQpOyB9Ci0gICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBmcHJOYW1l
KEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OmZwck5hbWUoaWQpOyB9
Ci0gICAgaW5saW5lIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQpOwotICAgIGlubGluZSB1aW50
cHRyX3QmIHNwcihTUFJlZ2lzdGVySUQpOwotICAgIGlubGluZSBkb3VibGUmIGZwcihGUFJlZ2lz
dGVySUQpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBn
cHIoUmVnaXN0ZXJJRCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0
cj4KLSAgICBUIGdwcihSZWdpc3RlcklEKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBUIGZwcihGUFJlZ2lzdGVySUQpIGNvbnN0OwotCi0gICAgdm9pZComIHBjKCk7Ci0gICAgdm9p
ZComIGZwKCk7Ci0gICAgdm9pZComIHNwKCk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBw
YygpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZnAoKSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgY29uc3Q7Ci0KLSAgICB1aW50cHRyX3QgZ3Byc1tN
YWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKV07Ci0gICAgdWludHB0cl90IHNwcnNb
TWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mU1BSZWdpc3RlcnMoKV07Ci0gICAgZG91YmxlIGZwcnNb
TWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mRlBSZWdpc3RlcnMoKV07Ci19OwotCi1pbmxpbmUgdWlu
dHB0cl90JiBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OmdwcihSZWdpc3RlcklEIGlkKQotewot
ICAgIEFTU0VSVChpZCA+PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpICYmIGlkIDw9
IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKSk7Ci0gICAgcmV0dXJuIGdwcnNbaWRdOwot
fQotCi1pbmxpbmUgdWludHB0cl90JiBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OnNwcihTUFJl
Z2lzdGVySUQgaWQpCi17Ci0gICAgQVNTRVJUKGlkID49IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFNQ
UmVnaXN0ZXIoKSAmJiBpZCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFNQUmVnaXN0ZXIoKSk7Ci0g
ICAgcmV0dXJuIHNwcnNbaWRdOwotfQotCi1pbmxpbmUgZG91YmxlJiBNYWNyb0Fzc2VtYmxlcjo6
Q1BVU3RhdGU6OmZwcihGUFJlZ2lzdGVySUQgaWQpCi17Ci0gICAgQVNTRVJUKGlkID49IE1hY3Jv
QXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKSAmJiBpZCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFz
dEZQUmVnaXN0ZXIoKSk7Ci0gICAgcmV0dXJuIGZwcnNbaWRdOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1
ZT46OnR5cGUqPgotVCBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OmdwcihSZWdpc3RlcklEIGlk
KSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhp
cyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNwdS0+Z3ByKGlkKSk7Ci19Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxU
Pjo6dmFsdWU+Ojp0eXBlKj4KLVQgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpncHIoUmVnaXN0
ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0
ZSo+KHRoaXMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+Z3ByKGlkKSk7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6
ZnByKEZQUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3Rf
Y2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4oY3B1LT5m
cHIoaWQpKTsKLX0KLQotaW5saW5lIHZvaWQqJiBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OnBj
KCkKLXsKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgIHJldHVybiAqcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KCZzcHIoWDg2UmVnaXN0ZXJzOjplaXApKTsKLSNlbGlmIENQVShBUk02
NCkKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmc3ByKEFSTTY0UmVnaXN0
ZXJzOjpwYykpOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwp
Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6
OnBjKSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotI2Vsc2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgQ1BVIgotI2VuZGlmCi19Ci0KLWlubGluZSB2
b2lkKiYgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpmcCgpCi17Ci0jaWYgQ1BVKFg4NikgfHwg
Q1BVKFg4Nl82NCkKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKFg4
NlJlZ2lzdGVyczo6ZWJwKSk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk02NFJlZ2lzdGVyczo6ZnApKTsKLSNlbGlmIENQVShB
Uk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQotICAgIHJldHVybiAqcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNUmVnaXN0ZXJzOjpmcCkpOwotI2VsaWYgQ1BVKE1JUFMp
Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVnaXN0ZXJz
OjpmcCkpOwotI2Vsc2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgQ1BVIgotI2VuZGlmCi19Ci0KLWlu
bGluZSB2b2lkKiYgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpzcCgpCi17Ci0jaWYgQ1BVKFg4
NikgfHwgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
Z3ByKFg4NlJlZ2lzdGVyczo6ZXNwKSk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk02NFJlZ2lzdGVyczo6c3ApKTsKLSNlbGlm
IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQotICAgIHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNUmVnaXN0ZXJzOjpzcCkpOwotI2VsaWYgQ1BV
KE1JUFMpCi0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVn
aXN0ZXJzOjpzcCkpOwotI2Vsc2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgQ1BVIgotI2VuZGlmCi19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6cGMo
KSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhp
cyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5wYygpKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLVQgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpmcCgpIGNvbnN0
Ci17Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPmZwKCkpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotVCBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OnNwKCkgY29uc3QKLXsKLSAg
ICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+c3AoKSk7Ci19Ci0KLW5hbWVzcGFjZSBQcm9iZSB7
Ci0KLXN0cnVjdCBTdGF0ZSB7Ci0gICAgdXNpbmcgQ1BVU3RhdGUgPSBNYWNyb0Fzc2VtYmxlcjo6
Q1BVU3RhdGU7Ci0gICAgdXNpbmcgUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEOwotICAgIHVzaW5nIFNQUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpTUFJlZ2lzdGVy
SUQ7Ci0gICAgdXNpbmcgRlBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJ
RDsKLQotICAgIEZ1bmN0aW9uIHByb2JlRnVuY3Rpb247Ci0gICAgdm9pZCogYXJnOwotICAgIEZ1
bmN0aW9uIGluaXRpYWxpemVTdGFja0Z1bmN0aW9uOwotICAgIHZvaWQqIGluaXRpYWxpemVTdGFj
a0FyZzsKLSAgICBDUFVTdGF0ZSBjcHU7Ci0KLSAgICAvLyBDb252ZW5pZW5jZSBtZXRob2RzOgot
ICAgIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5ncHIoaWQpOyB9
Ci0gICAgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuc3ByKGlk
KTsgfQotICAgIGRvdWJsZSYgZnByKEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LmZwcihp
ZCk7IH0KLSAgICBjb25zdCBjaGFyKiBncHJOYW1lKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNw
dS5ncHJOYW1lKGlkKTsgfQotICAgIGNvbnN0IGNoYXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlk
KSB7IHJldHVybiBjcHUuc3ByTmFtZShpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQ
UmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LmZwck5hbWUoaWQpOyB9Ci0KLSAgICB2b2lkKiYg
cGMoKSB7IHJldHVybiBjcHUucGMoKTsgfQotICAgIHZvaWQqJiBmcCgpIHsgcmV0dXJuIGNwdS5m
cCgpOyB9Ci0gICAgdm9pZComIHNwKCkgeyByZXR1cm4gY3B1LnNwKCk7IH0KLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IFQgcGMoKSB7IHJldHVybiBjcHUucGM8VD4oKTsgfQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IFQgZnAoKSB7IHJldHVybiBjcHUuZnA8VD4oKTsgfQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IFQgc3AoKSB7IHJldHVybiBjcHUuc3A8VD4oKTsgfQotfTsKLQotfSAv
LyBuYW1lc3BhY2UgUHJvYmUKLQotI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQotCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAJKHJl
dmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBF
TkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNNjQpCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKIAorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00u
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMjYsOSArMTI3LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEFSTTY0UmVnaXN0ZXJzOwogI2RlZmluZSBQUk9CRV9TSVpFIChQUk9CRV9GSVJTVF9GUFJFR19P
RkZTRVQgKyAoMzIgKiBGUFJFR19TSVpFKSkKIAogI2RlZmluZSBTQVZFRF9QUk9CRV9SRVRVUk5f
UENfT0ZGU0VUICAgICAgICAoUFJPQkVfU0laRSArICgwICogUFRSX1NJWkUpKQotI2RlZmluZSBT
QVZFRF9QUk9CRV9MUl9PRkZTRVQgICAgICAgICAgICAgICAoUFJPQkVfU0laRSArICgxICogUFRS
X1NJWkUpKQotI2RlZmluZSBTQVZFRF9QUk9CRV9FUlJPUl9GVU5DVElPTl9PRkZTRVQgICAoUFJP
QkVfU0laRSArICgyICogUFRSX1NJWkUpKQotI2RlZmluZSBQUk9CRV9TSVpFX1BMVVNfRVhUUkFT
ICAgICAgICAgICAgICAoUFJPQkVfU0laRSArICgzICogUFRSX1NJWkUpKQorI2RlZmluZSBQUk9C
RV9TSVpFX1BMVVNfRVhUUkFTICAgICAgICAgICAgICAoUFJPQkVfU0laRSArICgyICogUFRSX1NJ
WkUpKQogCiAvLyBUaGVzZSBBU1NFUlRzIHJlbWluZCB5b3UgdGhhdCBpZiB5b3UgY2hhbmdlIHRo
ZSBsYXlvdXQgb2YgUHJvYmU6OlN0YXRlLAogLy8geW91IG5lZWQgdG8gY2hhbmdlIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUgb2Zmc2V0cyBhYm92ZSB0byBtYXRjaC4KQEAgLTIyNSwzMSArMjI0LDI5
IEBAIHN0YXRpY19hc3NlcnQoIShQUk9CRV9TSVpFX1BMVVNfRVhUUkFTICYKICNkZWZpbmUgRlBS
X09GRlNFVChmcHIpIChQUk9CRV9DUFVfIyNmcHIjI19PRkZTRVQgLSBQUk9CRV9DUFVfUTBfT0ZG
U0VUKQogCiBzdHJ1Y3QgSW5jb21pbmdQcm9iZVJlY29yZCB7Ci0gICAgdWludHB0cl90IHByb2Jl
SGFuZGxlckZ1bmN0aW9uOwotICAgIHVpbnRwdHJfdCBwcm9iZUFyZzsKKyAgICB1aW50cHRyX3Qg
eDI0OworICAgIHVpbnRwdHJfdCB4MjU7CiAgICAgdWludHB0cl90IHgyNjsKICAgICB1aW50cHRy
X3QgeDI3OwotICAgIHVpbnRwdHJfdCBscjsKLSAgICB1aW50cHRyX3Qgc3A7Ci0gICAgdWludHB0
cl90IHByb2JlRXJyb3JGdW5jdGlvbjsKLSAgICB1aW50cHRyX3QgdW51c2VkOyAvLyBQYWRkaW5n
IGZvciBhbGlnbm1lbnQuCisgICAgdWludHB0cl90IHgyODsKKyAgICB1aW50cHRyX3QgeDMwOyAv
LyBscgogfTsKIAotI2RlZmluZSBJTl9IQU5ETEVSX0ZVTkNUSU9OX09GRlNFVCAoMCAqIFBUUl9T
SVpFKQotI2RlZmluZSBJTl9BUkdfT0ZGU0VUICAgICAgICAgICAgICAoMSAqIFBUUl9TSVpFKQot
I2RlZmluZSBJTl9YMjZfT0ZGU0VUICAgICAgICAgICAgICAoMiAqIFBUUl9TSVpFKQotI2RlZmlu
ZSBJTl9YMjdfT0ZGU0VUICAgICAgICAgICAgICAoMyAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9M
Ul9PRkZTRVQgICAgICAgICAgICAgICAoNCAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9TUF9PRkZT
RVQgICAgICAgICAgICAgICAoNSAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9FUlJPUl9GVU5DVElP
Tl9PRkZTRVQgICAoNiAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9YMjRfT0ZGU0VUICgwICogUFRS
X1NJWkUpCisjZGVmaW5lIElOX1gyNV9PRkZTRVQgKDEgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5f
WDI2X09GRlNFVCAoMiAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9YMjdfT0ZGU0VUICgzICogUFRS
X1NJWkUpCisjZGVmaW5lIElOX1gyOF9PRkZTRVQgKDQgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5f
WDMwX09GRlNFVCAoNSAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9TSVpFICAgICAgICg2ICogUFRS
X1NJWkUpCiAKLXN0YXRpY19hc3NlcnQoSU5fSEFORExFUl9GVU5DVElPTl9PRkZTRVQgPT0gb2Zm
c2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgcHJvYmVIYW5kbGVyRnVuY3Rpb24pLCAiSU5fSEFO
RExFUl9GVU5DVElPTl9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElOX0FS
R19PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgcHJvYmVBcmcpLCAiSU5f
QVJHX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fWDI0X09GRlNFVCA9
PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjQpLCAiSU5fWDI0X09GRlNFVCBpcyBp
bmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fWDI1X09GRlNFVCA9PSBvZmZzZXRvZihJbmNv
bWluZ1Byb2JlUmVjb3JkLCB4MjUpLCAiSU5fWDI1X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKIHN0
YXRpY19hc3NlcnQoSU5fWDI2X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3Jk
LCB4MjYpLCAiSU5fWDI2X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKIHN0YXRpY19hc3NlcnQoSU5f
WDI3X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjcpLCAiSU5fWDI3
X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRpY19hc3NlcnQoSU5fTFJfT0ZGU0VUID09IG9m
ZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIGxyKSwgIklOX0xSX09GRlNFVCBpcyBpbmNvcnJl
Y3QiKTsKLXN0YXRpY19hc3NlcnQoSU5fU1BfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUHJv
YmVSZWNvcmQsIHNwKSwgIklOX1NQX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRpY19hc3Nl
cnQoSU5fRVJST1JfRlVOQ1RJT05fT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNv
cmQsIHByb2JlRXJyb3JGdW5jdGlvbiksICJJTl9FUlJPUl9GVU5DVElPTl9PRkZTRVQgaXMgaW5j
b3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1gyOF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21p
bmdQcm9iZVJlY29yZCwgeDI4KSwgIklOX1gyMl9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0
aWNfYXNzZXJ0KElOX1gzMF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwg
eDMwKSwgIklOX1gyM19PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1NJ
WkUgPT0gc2l6ZW9mKEluY29taW5nUHJvYmVSZWNvcmQpLCAiSU5fU0laRSBpcyBpbmNvcnJlY3Qi
KTsKIHN0YXRpY19hc3NlcnQoIShzaXplb2YoSW5jb21pbmdQcm9iZVJlY29yZCkgJiAweGYpLCAi
SW5jb21pbmdQcm9iZVN0YWNrIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkIik7CiAKIHN0cnVjdCBP
dXRnb2luZ1Byb2JlUmVjb3JkIHsKQEAgLTI3OCw5ICsyNzUsMTcgQEAgc3RhdGljX2Fzc2VydChP
VVRfTFJfT0ZGU0VUID09IG9mZnNldG9mKAogc3RhdGljX2Fzc2VydChPVVRfU0laRSA9PSBzaXpl
b2YoT3V0Z29pbmdQcm9iZVJlY29yZCksICJPVVRfU0laRSBpcyBpbmNvcnJlY3QiKTsKIHN0YXRp
Y19hc3NlcnQoIShzaXplb2YoT3V0Z29pbmdQcm9iZVJlY29yZCkgJiAweGYpLCAiT3V0Z29pbmdQ
cm9iZVN0YWNrIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkIik7CiAKLSNkZWZpbmUgU1RBVEVfUENf
Tk9UX0NIQU5HRUQgMAotI2RlZmluZSBTVEFURV9QQ19DSEFOR0VEIDEKLXN0YXRpY19hc3NlcnQo
U1RBVEVfUENfTk9UX0NIQU5HRUQgIT0gU1RBVEVfUENfQ0hBTkdFRCwgIlNUQVRFX1BDX05PVF9D
SEFOR0VEIGFuZCBTVEFURV9QQ19DSEFOR0VEIHNob3VsZCBub3QgYmUgZXF1YWwiKTsKK3N0cnVj
dCBMUlJlc3RvcmF0aW9uUmVjb3JkIHsKKyAgICB1aW50cHRyX3QgbHI7CisgICAgdWludHB0cl90
IHVudXNlZER1bW15VG9FbnN1cmVTaXplSXMxNkJ5dGVBbGlnbmVkOworfTsKKworI2RlZmluZSBM
Ul9SRVNUT1JBVElPTl9MUl9PRkZTRVQgKDAgKiBQVFJfU0laRSkKKyNkZWZpbmUgTFJfUkVTVE9S
QVRJT05fU0laRSAgICAgICgyICogUFRSX1NJWkUpCisKK3N0YXRpY19hc3NlcnQoTFJfUkVTVE9S
QVRJT05fTFJfT0ZGU0VUID09IG9mZnNldG9mKExSUmVzdG9yYXRpb25SZWNvcmQsIGxyKSwgIkxS
X1JFU1RPUkFUSU9OX0xSX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoTFJf
UkVTVE9SQVRJT05fU0laRSA9PSBzaXplb2YoTFJSZXN0b3JhdGlvblJlY29yZCksICJMUl9SRVNU
T1JBVElPTl9TSVpFIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydCghKHNpemVvZihMUlJl
c3RvcmF0aW9uUmVjb3JkKSAmIDB4ZiksICJMUlJlc3RvcmF0aW9uUmVjb3JkIG11c3QgYmUgMTYt
Ynl0ZSBhbGlnbmVkIik7CiAKIC8vIFdlIHVzZSB4MjkgYW5kIHgzMCBpbnN0ZWFkIG9mIGZwIGFu
ZCBsciBiZWNhdXNlIEdDQydzIGlubGluZSBhc3NlbWJsZXIgZG9lcyBub3QgcmVjb2duaXplIGZw
IGFuZCBsci4KIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1NTEyIGZvciBkZXRhaWxzLgpAQCAtMjkzLDYgKzI5OCwxNCBAQCBhc20gKAogCiAgICAgLy8g
TWFjcm9Bc3NlbWJsZXJBUk02NDo6cHJvYmUoKSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0
byBzdG9yZSBzb21lIHZhbHVlcyBpbiBhbgogICAgIC8vIEluY29taW5nUHJvYmVSZWNvcmQuIHNw
IHBvaW50cyB0byB0aGUgSW5jb21pbmdQcm9iZVJlY29yZC4KKyAgICAvLworICAgIC8vIEluY29t
aW5nIHJlZ2lzdGVyIHZhbHVlczoKKyAgICAvLyAgICAgeDI0OiBwcm9iZSBmdW5jdGlvbgorICAg
IC8vICAgICB4MjU6IHByb2JlIGFyZworICAgIC8vICAgICB4MjY6IHNjcmF0Y2gsIHdhcyBjdGlN
YXNtUHJvYmVUcmFtcG9saW5lCisgICAgLy8gICAgIHgyNzogc2NyYXRjaAorICAgIC8vICAgICB4
Mjg6IFByb2JlOjpleGVjdXRlUHJvYmUKKyAgICAvLyAgICAgeDMwOiByZXR1cm4gYWRkcmVzcwog
CiAgICAgIm1vdiAgICAgICB4MjYsIHNwIiAiXG4iCiAgICAgIm1vdiAgICAgICB4MjcsIHNwIiAi
XG4iCkBAIC0zMDEsNiArMzE0LDggQEAgYXNtICgKICAgICAiYmljICAgICAgIHgyNywgeDI3LCAj
MHhmIiAiXG4iIC8vIFRoZSBBUk0gRUFCSSBzcGVjaWZpZXMgdGhhdCB0aGUgc3RhY2sgbmVlZHMg
dG8gYmUgMTYgYnl0ZSBhbGlnbmVkLgogICAgICJtb3YgICAgICAgc3AsIHgyNyIgIlxuIiAvLyBT
ZXQgdGhlIHNwIHRvIHByb3RlY3QgdGhlIFByb2JlOjpTdGF0ZSBmcm9tIGludGVycnVwdHMgYmVm
b3JlIHdlIGluaXRpYWxpemUgaXQuCiAKKyAgICAic3RwICAgICAgIHgyNCwgeDI1LCBbc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4i
IC8vIFN0b3JlIHRoZSBwcm9iZSBoYW5kbGVyIGZ1bmN0aW9uIGFuZCBhcmcgKHByZWxvYWRlZCBp
bnRvIHgyNCBhbmQgeDI1CisKICAgICAic3RwICAgICAgIHgwLCB4MSwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gwX09GRlNFVCkgIl0iICJcbiIKICAgICAibXJzICAgICAg
IHgwLCBuemN2IiAiXG4iIC8vIFByZWxvYWQgbnpjdi4KICAgICAic3RwICAgICAgIHgyLCB4Mywg
W3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyX09GRlNFVCkgIl0iICJcbiIK
QEAgLTMwOSwxMCArMzI0LDEwIEBAIGFzbSAoCiAgICAgInN0cCAgICAgICB4NiwgeDcsIFtzcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YNl9PRkZTRVQpICJdIiAiXG4iCiAgICAg
InN0cCAgICAgICB4OCwgeDksIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9Y
OF9PRkZTRVQpICJdIiAiXG4iCiAKLSAgICAibGRwICAgICAgIHgyLCB4MywgW3gyNiwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKElOX0hBTkRMRVJfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIiAvLyBQ
cmVsb2FkIHByb2JlIGhhbmRsZXIgZnVuY3Rpb24gYW5kIHByb2JlIGFyZy4KLSAgICAibGRwICAg
ICAgIHg0LCB4NSwgW3gyNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1gyNl9PRkZTRVQpICJd
IiAiXG4iIC8vIFByZWxvYWQgc2F2ZWQgcjI2IGFuZCByMjcuCi0gICAgImxkcCAgICAgICB4Niwg
eDcsIFt4MjYsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9MUl9PRkZTRVQpICJdIiAiXG4iIC8v
IFByZWxvYWQgc2F2ZWQgbHIgYW5kIHNwLgotICAgICJsZHIgICAgICAgeDgsIFt4MjYsICMiIFNU
UklOR0laRV9WQUxVRV9PRihJTl9FUlJPUl9GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iIC8vIFBy
ZWxvYWQgcHJvYmUgZXJyb3IgZnVuY3Rpb24uCisgICAgImxkcCAgICAgICB4MiwgeDMsIFt4MjYs
ICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9YMjRfT0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVsb2Fk
IHNhdmVkIHgyNCBhbmQgeDI1LgorICAgICJsZHAgICAgICAgeDQsIHg1LCBbeDI2LCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoSU5fWDI2X09GRlNFVCkgIl0iICJcbiIgLy8gUHJlbG9hZCBzYXZlZCB4
MjYgYW5kIHgyNy4KKyAgICAibGRyICAgICAgIHg2LCB4NywgW3gyNiwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKElOX1gyOF9PRkZTRVQpICJdIiAiXG4iIC8vIFByZWxvYWQgc2F2ZWQgeDI4IGFuZCBs
ci4KKyAgICAiYWRkICAgICAgIHgyNiwgeDI2LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fU0la
RSkgIlxuIiAvLyBDb21wdXRlIHRoZSBzcCBiZWZvcmUgdGhlIHByb2JlLgogCiAgICAgInN0cCAg
ICAgICB4MTAsIHgxMSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gxMF9P
RkZTRVQpICJdIiAiXG4iCiAgICAgInN0cCAgICAgICB4MTIsIHgxMywgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gxMl9PRkZTRVQpICJdIiAiXG4iCkBAIC0zMjEsMTIgKzMz
NiwxMSBAQCBhc20gKAogICAgICJzdHAgICAgICAgeDE4LCB4MTksIFtzcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0NQVV9YMThfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJzdHAgICAgICAg
eDIwLCB4MjEsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YMjBfT0ZGU0VU
KSAiXSIgIlxuIgogICAgICJzdHAgICAgICAgeDIyLCB4MjMsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9YMjJfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdHAgICAgICAgeDI0
LCB4MjUsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YMjRfT0ZGU0VUKSAi
XSIgIlxuIgorICAgICJzdHAgICAgICAgeDIsIHgzLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9DUFVfWDI0X09GRlNFVCkgIl0iICJcbiIgLy8gU3RvcmUgc2F2ZWQgcjI0IGFuZCBy
MjUgKHByZWxvYWRlZCBpbnRvIHgyIGFuZCB4MyBhYm92ZSkuCiAgICAgInN0cCAgICAgICB4NCwg
eDUsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YMjZfT0ZGU0VUKSAiXSIg
IlxuIiAvLyBTdG9yZSBzYXZlZCByMjYgYW5kIHIyNyAocHJlbG9hZGVkIGludG8geDQgYW5kIHg1
IGFib3ZlKS4KLSAgICAic3RwICAgICAgIHgyOCwgeDI5LCBbc3AsICMiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfWDI4X09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RwICAgICAgIHg2LCB4
NywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0iICJc
biIgLy8gU2F2ZSB2YWx1ZXMgbHIgYW5kIHNwIChwcmVsb2FkZWQgaW50byB4NiBhbmQgeDcgYWJv
dmUpLgorICAgICJzdHAgICAgICAgeDYsIHgyOSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1gyOF9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0cCAgICAgICB4NywgeDI2LCBb
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxuIiAv
LyBTYXZlIHZhbHVlcyBsciBhbmQgc3AgKG9yaWdpbmFsIHNwIHZhbHVlIGNvbXB1dGVkIGludG8g
eDI2IGFib3ZlKS4KIAotICAgICJzdHIgICAgICAgeDYsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFNBVkVEX1BST0JFX0xSX09GRlNFVCkgIl0iICJcbiIgLy8gU2F2ZSBhIGR1cGxpY2F0ZSBj
b3B5IG9mIGxyIChpbiB4NikuCiAgICAgInN0ciAgICAgICB4MzAsIFtzcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKFNBVkVEX1BST0JFX1JFVFVSTl9QQ19PRkZTRVQpICJdIiAiXG4iIC8vIFNhdmUg
YSBkdXBsaWNhdGUgY29weSBvZiByZXR1cm4gcGMgKGluIGxyKS4KIAogICAgICJhZGQgICAgICAg
eDMwLCB4MzAsICMiIFNUUklOR0laRV9WQUxVRV9PRigyICogUFRSX1NJWkUpICJcbiIgLy8gVGhl
IFBDIGFmdGVyIHRoZSBwcm9iZSBpcyBhdCAyIGluc3RydWN0aW9ucyBwYXN0IHRoZSByZXR1cm4g
cG9pbnQuCkBAIC0zMzQsOSArMzQ4LDYgQEAgYXNtICgKIAogICAgICJzdHAgICAgICAgeDAsIHgx
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfTlpDVl9PRkZTRVQpICJdIiAi
XG4iIC8vIFN0b3JlIG56Y3YgYW5kIGZwc3IgKHByZWxvYWRlZCBpbnRvIHgwIGFuZCB4MSBhYm92
ZSkuCiAKLSAgICAic3RwICAgICAgIHgyLCB4MywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIiAvLyBTdG9yZSB0aGUgcHJvYmUg
aGFuZGxlciBmdW5jdGlvbiBhbmQgYXJnIChwcmVsb2FkZWQgaW50byB4MiBhbmQgeDMgYWJvdmUp
LgotICAgICJzdHIgICAgICAgeDgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BS
T0JFX0VSUk9SX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIgLy8gU3RvcmUgdGhlIHByb2JlIGhh
bmRsZXIgZnVuY3Rpb24gYW5kIGFyZyAocHJlbG9hZGVkIGludG8geDggYWJvdmUpLgotCiAgICAg
ImFkZCAgICAgICB4OSwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUTBfT0ZG
U0VUKSAiXG4iCiAgICAgInN0cCAgICAgICBkMCwgZDEsIFt4OSwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKEZQUl9PRkZTRVQoUTApKSAiXSIgIlxuIgogICAgICJzdHAgICAgICAgZDIsIGQzLCBbeDks
ICMiIFNUUklOR0laRV9WQUxVRV9PRihGUFJfT0ZGU0VUKFEyKSkgIl0iICJcbiIKQEAgLTM1Nywx
MyArMzY4LDEwIEBAIGFzbSAoCiAKICAgICAibW92ICAgICAgIHgyNywgc3AiICJcbiIgLy8gU2F2
ZSB0aGUgUHJvYmU6OlN0YXRlKiBpbiBhIGNhbGxlZSBzYXZlZCByZWdpc3Rlci4KIAotICAgIC8v
IEluaXRpYWxpemUgUHJvYmU6OlN0YXRlOjppbml0aWFsaXplU3RhY2tGdW5jdGlvbiB0byB6ZXJv
LgotICAgICJzdHIgICAgICAgeHpyLCBbeDI3LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
SU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCi0KICAgICAvLyBOb3RlOiB3ZSBo
YXZlbid0IGNoYW5nZWQgdGhlIHZhbHVlIG9mIGZwLiBIZW5jZSwgaXQgaXMgc3RpbGwgcG9pbnRp
bmcgdG8gdGhlIGZyYW1lIG9mCiAgICAgLy8gdGhlIGNhbGxlciBvZiB0aGUgcHJvYmUgKHdoaWNo
IGlzIHdoYXQgd2Ugd2FudCBpbiBvcmRlciB0byBwbGF5IG5pY2Ugd2l0aCBkZWJ1Z2dlcnMgZS5n
LiBsbGRiKS4KICAgICAibW92ICAgICAgIHgwLCBzcCIgIlxuIiAvLyBTZXQgdGhlIFByb2JlOjpT
dGF0ZSogYXJnLgotICAgICJibHIgICAgICAgeDIiICJcbiIgLy8gQ2FsbCB0aGUgcHJvYmUgaGFu
ZGxlciBmdW5jdGlvbiAobG9hZGVkIGludG8geDIgYWJvdmUpLgorICAgICJibHIgICAgICAgeDI4
IiAiXG4iIC8vIENhbGwgdGhlIHByb2JlIGhhbmRsZXIuCiAKICAgICAvLyBNYWtlIHN1cmUgdGhl
IFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIg
c28KICAgICAvLyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VydmVkIHdoZW4g
d2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNrCkBAIC00NDYsNjIgKzQ1NCwzNyBAQCBhc20gKAog
CiAgICAgLy8gUmVtYWluaW5nIHJlZ2lzdGVycyB0byByZXN0b3JlIGFyZTogZnBzciwgbnpjdiwg
eDI3LCB4MjgsIGZwLCBsciwgc3AsIGFuZCBwYy4KIAotICAgICJtb3YgICAgICAgeDMwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoU1RBVEVfUENfTk9UX0NIQU5HRUQpICJcbiIKLQogICAgIC8vIFRo
ZSBvbmx5IHdheSB0byBzZXQgdGhlIHBjIG9uIEFSTTY0IChmcm9tIHVzZXIgc3BhY2UpIGlzIHZp
YSBhbiBpbmRpcmVjdCBicmFuY2gKICAgICAvLyBvciBhIHJldCwgd2hpY2ggbWVhbnMgd2UnbGwg
bmVlZCBhIGZyZWUgcmVnaXN0ZXIgdG8gZG8gc28uIEZvciBvdXIgcHVycG9zZXMsIGxyCiAgICAg
Ly8gaGFwcGVucyB0byBiZSBhdmFpbGFibGUgaW4gYXBwbGljYXRpb25zIG9mIHRoZSBwcm9iZSB3
aGVyZSB3ZSBtYXkgd2FudCB0bwogICAgIC8vIGNvbnRpbnVlIGV4ZWN1dGluZyBhdCBhIGRpZmZl
cmVudCBsb2NhdGlvbiAoaS5lLiBjaGFuZ2UgdGhlIHBjKSBhZnRlciB0aGUgcHJvYmUKICAgICAv
LyByZXR1cm5zLiBTbywgdGhlIEFSTTY0IHByb2JlIGltcGxlbWVudGF0aW9uIHdpbGwgYWxsb3cg
dGhlIHByb2JlIGhhbmRsZXIgdG8KICAgICAvLyBlaXRoZXIgbW9kaWZ5IGxyIG9yIHBjLCBidXQg
bm90IGJvdGggaW4gdGhlIHNhbWUgcHJvYmUgaW52b2NhdGlvbi4gVGhlIHByb2JlCi0gICAgLy8g
bWVjaGFuaXNtIGVuc3VyZXMgdGhhdCB3ZSBuZXZlciB0cnkgdG8gbW9kaWZ5IGJvdGggbHIgYW5k
IHBjLCBlbHNlIGl0IHdpbGwKLSAgICAvLyBmYWlsIHdpdGggYSBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCBpbiBhcm02NFByb2JlRXJyb3IoKS4KKyAgICAvLyBtZWNoYW5pc20gZW5zdXJlcyB0
aGF0IHdlIG5ldmVyIHRyeSB0byBtb2RpZnkgYm90aCBsciBhbmQgcGMgd2l0aCBhIFJFTEVBU0Vf
QVNTRVJUCisgICAgLy8gaW4gUHJvYmU6OmV4ZWN1dGVQcm9iZSgpLgogCiAgICAgLy8gRGV0ZXJt
aW5lIGlmIHRoZSBwcm9iZSBoYW5kbGVyIGNoYW5nZWQgdGhlIHBjLgogICAgICJsZHIgICAgICAg
eDI3LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihTQVZFRF9QUk9CRV9SRVRVUk5fUENfT0ZG
U0VUKSAiXSIgIlxuIgogICAgICJsZHIgICAgICAgeDI4LCBbc3AsICMiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJhZGQgICAgICAgeDI3LCB4
MjcsICMiIFNUUklOR0laRV9WQUxVRV9PRigyICogUFRSX1NJWkUpICJcbiIKICAgICAiY21wICAg
ICAgIHgyNywgeDI4IiAiXG4iCi0gICAgImJlcSAgICAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoY3Rp
TWFzbVByb2JlVHJhbXBvbGluZVByZXBhcmVPdXRnb2luZ1JlY29yZHMpICJcbiIKLQotICAgIC8v
IHBjIHdhcyBjaGFuZ2VkLiBEZXRlcm1pbmUgaWYgdGhlIHByb2JlIGhhbmRsZXIgYWxzbyBjaGFu
Z2VkIGxyLgotICAgICJsZHIgICAgICAgeDI3LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihT
QVZFRF9QUk9CRV9MUl9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICB4MjgsIFtzcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4iCi0gICAg
ImNtcCAgICAgICB4MjcsIHgyOCIgIlxuIgotICAgICJibmUgICAgICIgTE9DQUxfTEFCRUxfU1RS
SU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVFcnJvcikgIlxuIgotCi0gICAgIm1vdiAgICAgICB4
MzAsICMiIFNUUklOR0laRV9WQUxVRV9PRihTVEFURV9QQ19DSEFOR0VEKSAiXG4iCi0KLSAgICBM
T0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByZXBhcmVPdXRnb2luZ1Jl
Y29yZHMpICI6IiAiXG4iCisgICAgImJuZSAgICAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFz
bVByb2JlVHJhbXBvbGluZUVuZCkgIlxuIgogCi0gICAgImxkciAgICAgICB4MjksIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX1JFVFVSTl9QQ19PRkZTRVQpICJdIiAiXG4i
IC8vIFByZWxvYWQgdGhlIHByb2JlIHJldHVybiBzaXRlIHBjLgorICAgICAvLyBXZSBkaWRuJ3Qg
Y2hhbmdlIHRoZSBQQy4gU28sIGxldCdzIHByZXBhcmUgZm9yIHNldHRpbmcgYSBwb3RlbnRpYWxs
eSBuZXcgbHIgdmFsdWUuCiAKLSAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJh
bXBvbGluZUZpbGxPdXRnb2luZ1Byb2JlUmVjb3JkcykgIjoiICJcbiIKLQotICAgICJjYm56ICAg
ICAgIHgzMCwgIiBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZUVuZCkg
IlxuIiAvLyBTa2lwIGxyIHJlc3RvcmF0aW9uIHNldHVwIGlmIHN0YXRlIChpbiBscikgPT0gU1RB
VEVfUENfQ0hBTkdFRC4KLQotICAgIC8vIEluIG9yZGVyIHRvIHJlc3RvcmUgbHIsIHdlIG5lZWQg
dG8gZG8gdGhlIHJlc3RvcmF0aW9uIGF0IHRoZSBwcm9iZSByZXR1cm4gc2l0ZS4KLSAgICAvLyBU
aGUgcHJvYmUgcmV0dXJuIHNpdGUgZXhwZWN0cyBzcCB0byBiZSBwb2ludGluZyBhdCBhbiBPdXRn
b2luZ1Byb2JlUmVjb3JkIHN1Y2ggdGhhdAotICAgIC8vIHBvcHBpbmcgdGhlIE91dGdvaW5nUHJv
YmVSZWNvcmQgd2lsbCB5aWVsZCB0aGUgZGVzaXJlZCBzcC4gVGhlIHByb2JlIHJldHVybiBzaXRl
Ci0gICAgLy8gYWxzbyBleHBlY3RzIHRoZSBsciB2YWx1ZSB0byBiZSByZXN0b3JlZCBpcyBzdGFz
aGVkIGluIHRoZSBPdXRnb2luZ1Byb2JlUmVjb3JkLgotICAgIC8vIFdlIGNhbiBtYWtlIHRoaXMg
aGFwcGVuIGJ5IHB1c2hpbmcgMiBPdXRnb2luZ1Byb2JlUmVjb3JkcyBpbnN0ZWFkIG9mIDE6Ci0g
ICAgLy8gMSBmb3IgdGhlIHByb2JlIHJldHVybiBzaXRlLCBhbmQgMSBhdCBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lRW5kIGZvciByZXR1cm5pbmcgZnJvbQotICAgIC8vIHRoaXMgcHJvYmUuCi0KLSAg
ICAvLyBGaWxsIGluIHRoZSBPdXRnb2luZ1Byb2JlU3RhY2sgZm9yIHRoZSBwcm9iZSByZXR1cm4g
c2l0ZS4KKyAgICAgLy8gMS4gTWFrZSByb29tIGZvciB0aGUgTFJSZXN0b3JhdGlvblJlY29yZC4g
VGhlIHByb2JlIHNpdGUgd2lsbCBwb3AgdGhpcyBvZmYgbGF0ZXIuCiAgICAgImxkciAgICAgICB4
MzAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAi
XG4iCi0gICAgInN1YiAgICAgICB4MzAsIHgzMCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9T
SVpFKSAiXG4iCi0KKyAgICAic3ViICAgICAgIHgzMCwgeDMwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoTFJfUkVTVE9SQVRJT05fU0laRSkgIlxuIgorICAgICAvLyAyLiBTdG9yZSB0aGUgbHAgdmFs
dWUgdG8gcmVzdG9yZSBhdCB0aGUgcHJvYmUgcmV0dXJuIHNpdGUuCiAgICAgImxkciAgICAgICB4
MjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAi
XG4iCi0gICAgInN0ciAgICAgICB4MjcsIFt4MzAsICMiIFNUUklOR0laRV9WQUxVRV9PRihPVVRf
TFJfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgLy8gU2V0IHVwIHRoZSBzcCBhbmQgcGMgdmFsdWVz
IHNvIHRoYXQgY3RpTWFzbVByb2JlVHJhbXBvbGluZUVuZCB3aWxsIHJldHVybiB0byB0aGUgcHJv
YmUgcmV0dXJuIHNpdGUuCi0gICAgInN0ciAgICAgICB4MzAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICB4Mjks
IFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9QQ19PRkZTRVQpICJdIiAiXG4i
IC8vIFN0b3JlIHRoZSBwcm9iZSByZXR1cm4gc2l0ZSBwYyAocHJlbG9hZGVkIGludG8gZnAgYWJv
dmUpLgorICAgICJzdHIgICAgICAgeDI3LCBbeDMwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoTFJf
UkVTVE9SQVRJT05fTFJfT0ZGU0VUKSAiXSIgIlxuIgorICAgICAvLyAzLiBGb3JjZSB0aGUgcmV0
dXJuIHJhbXAgdG8gcmV0dXJuIHRvIHRoZSBwcm9iZSByZXR1cm4gc2l0ZS4KKyAgICAibGRyICAg
ICAgIHgyNywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoU0FWRURfUFJPQkVfUkVUVVJOX1BD
X09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIHgyNywgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0iICJcbiIKIAogICAgIExPQ0FMX0xBQkVM
X1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lRW5kKSAiOiIgIlxuIgogCi0gICAgLy8gRmls
bCBpbiB0aGUgT3V0Z29pbmdQcm9iZVN0YWNrLgorICAgIC8vIEZpbGwgaW4gdGhlIE91dGdvaW5n
UHJvYmVSZWNvcmQuCiAgICAgImxkciAgICAgICB4MzAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iCiAgICAgInN1YiAgICAgICB4MzAsIHgz
MCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9TSVpFKSAiXG4iCiAKQEAgLTUxMCw1MiArNDkz
LDM2IEBAIGFzbSAoCiAgICAgImxkcCAgICAgICB4MjcsIHgyOCwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1gyN19PRkZTRVQpICJdIiAiXG4iCiAgICAgInN0cCAgICAgICB4
MjcsIHgyOCwgW3gzMCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9YMjdfT0ZGU0VUKSAiXSIg
IlxuIgogICAgICJsZHIgICAgICAgeDI3LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfRlBfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAgeDI4LCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIg
ICAgICAgeDI4LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VU
KSAiXSIgIlxuIiAvLyBTZXQgdXAgdGhlIG91dGdvaW5nIHJlY29yZCBzbyB0aGF0IHdlJ2xsIGp1
bXAgdG8gdGhlIG5ldyBQQy4KICAgICAic3RwICAgICAgIHgyNywgeDI4LCBbeDMwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoT1VUX0ZQX09GRlNFVCkgIl0iICJcbiIKICAgICAibW92ICAgICAgIHNw
LCB4MzAiICJcbiIKIAotICAgIC8vIFJlc3RvcmUgdGhlIHJlbWFpbmluZyByZWdpc3RlcnMgYW5k
IHBvcCB0aGUgT3V0Z29pbmdQcm9iZVN0YWNrLgorICAgIC8vIFJlc3RvcmUgdGhlIHJlbWFpbmlu
ZyByZWdpc3RlcnMgYW5kIHBvcCB0aGUgT3V0Z29pbmdQcm9iZVJlY29yZC4KICAgICAibGRwICAg
ICAgIHgyNywgeDI4LCBbc3BdLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoMiAqIFBUUl9TSVpFKSAi
XG4iCiAgICAgIm1zciAgICAgICBuemN2LCB4MjciICJcbiIKICAgICAibXNyICAgICAgIGZwc3Is
IHgyOCIgIlxuIgogICAgICJsZHAgICAgICAgeDI3LCB4MjgsIFtzcF0sICMiIFNUUklOR0laRV9W
QUxVRV9PRigyICogUFRSX1NJWkUpICJcbiIKICAgICAibGRwICAgICAgIHgyOSwgeDMwLCBbc3Bd
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoMiAqIFBUUl9TSVpFKSAiXG4iCiAgICAgInJldCIgIlxu
IgotCi0gICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVFcnJvcikg
IjoiICJcbiIKLSAgICAvLyBUaGUgcHJvYmUgaGFuZGxlciBjaGFuZ2VkIGJvdGggbHIgYW5kIHBj
LiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEFSTTY0LgotICAgICJsZHIgICAgICAgeDEsIFtz
cCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX0VSUk9SX0ZVTkNUSU9OX09GRlNF
VCkgIl0iICJcbiIKLSAgICAibW92ICAgICAgIHgwLCBzcCIgIlxuIiAvLyBTZXQgdGhlIFByb2Jl
OjpTdGF0ZSogYXJnLgotICAgICJibHIgICAgICAgeDEiICJcbiIKLSAgICAiYnJrICAgICAgICMw
eDEwMDAiIC8vIFNob3VsZCBuZXZlciByZXR1cm4gaGVyZS4KICk7CiAjZW5kaWYgLy8gQ09NUElM
RVIoR0NDX09SX0NMQU5HKQogCi1zdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGFy
bTY0UHJvYmVFcnJvcihQcm9iZTo6U3RhdGUqKQotewotICAgIGRhdGFMb2coIk1hY3JvQXNzZW1i
bGVyIHByb2JlIEVSUk9SOiBBUk02NCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBwcm9iZSBjaGFuZ2lu
ZyBib3RoIExSIGFuZCBQQy5cbiIpOwotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlv
biwgdm9pZCogYXJnKQogewogICAgIHN1YjY0KFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdQ
cm9iZVJlY29yZCkpLCBzcCk7CiAKKyAgICBzdG9yZVBhaXI2NCh4MjQsIHgyNSwgc3AsIFRydXN0
ZWRJbW0zMihvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjQpKSk7CiAgICAgc3RvcmVQ
YWlyNjQoeDI2LCB4MjcsIHNwLCBUcnVzdGVkSW1tMzIob2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJl
Y29yZCwgeDI2KSkpOwotICAgIGFkZDY0KFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdQcm9i
ZVJlY29yZCkpLCBzcCwgeDI2KTsKLSAgICBzdG9yZVBhaXI2NChsciwgeDI2LCBzcCwgVHJ1c3Rl
ZEltbTMyKG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIGxyKSkpOyAvLyBTYXZlIGxyIGFu
ZCBvcmlnaW5hbCBzcCB2YWx1ZS4KLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZnVuY3Rpb24pKSwgeDI2KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJn
KSwgeDI3KTsKLSAgICBzdG9yZVBhaXI2NCh4MjYsIHgyNywgc3AsIFRydXN0ZWRJbW0zMihvZmZz
ZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCBwcm9iZUhhbmRsZXJGdW5jdGlvbikpKTsKLSAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYXJtNjRQcm9iZUVycm9y
KSksIHgyNyk7Ci0gICAgc3RvcmU2NCh4MjcsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5n
UHJvYmVSZWNvcmQsIHByb2JlRXJyb3JGdW5jdGlvbikpKTsKLQorICAgIHN0b3JlUGFpcjY0KHgy
OCwgeDMwLCBzcCwgVHJ1c3RlZEltbTMyKG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIHgy
OCkpKTsgLy8gTm90ZTogeDMwIGlzIGxyLgogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSksIHgyNik7CisgICAgbW92
ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KFByb2JlOjpleGVjdXRlUHJv
YmUpKSwgeDI4KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oZnVuY3Rpb24pKSwgeDI0KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJnKSwgeDI1KTsK
ICAgICBtX2Fzc2VtYmxlci5ibHIoeDI2KTsKIAogICAgIC8vIGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUgc2hvdWxkIGhhdmUgcmVzdG9yZWQgZXZlcnkgcmVnaXN0ZXIgZXhjZXB0IGZvciBsciBhbmQg
dGhlIHNwLgotICAgIGxvYWQ2NChBZGRyZXNzKHNwLCBvZmZzZXRvZihPdXRnb2luZ1Byb2JlUmVj
b3JkLCBscikpLCBscik7Ci0gICAgYWRkNjQoVHJ1c3RlZEltbTMyKHNpemVvZihPdXRnb2luZ1By
b2JlUmVjb3JkKSksIHNwKTsKKyAgICBsb2FkNjQoQWRkcmVzcyhzcCwgb2Zmc2V0b2YoTFJSZXN0
b3JhdGlvblJlY29yZCwgbHIpKSwgbHIpOworICAgIGFkZDY0KFRydXN0ZWRJbW0zMihzaXplb2Yo
TFJSZXN0b3JhdGlvblJlY29yZCkpLCBzcCk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9Q
Uk9CRSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uY3BwCShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIENQVShBUk1fVFJBRElU
SU9OQUwpCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKIAorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogI2lmIE9TKExJTlVYKQpAQCAt
MjU3LDQ1ICsyNTgsNTcgQEAgYXNtICgKICAgICBJTkxJTkVfQVJNX0ZVTkNUSU9OKGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUpICJcbiIKICAgICBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUpICI6IiAiXG4iCiAKLSAgICAvLyBNYWNyb0Fzc2VtYmxlckFSTTo6cHJvYmUoKSBoYXMg
YWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0byBzdG9yZSBzb21lIHZhbHVlcy4KLSAgICAvLyBUaGUg
dG9wIG9mIHN0YWNrIG5vdyBsb29rcyBsaWtlIHRoaXM6Ci0gICAgLy8gICAgIGVzcFswICogcHRy
U2l6ZV06IHByb2JlIGhhbmRsZXIgZnVuY3Rpb24KLSAgICAvLyAgICAgZXNwWzEgKiBwdHJTaXpl
XTogcHJvYmUgYXJnCi0gICAgLy8gICAgIGVzcFsyICogcHRyU2l6ZV06IHNhdmVkIHIzIC8gUzAK
LSAgICAvLyAgICAgZXNwWzMgKiBwdHJTaXplXTogc2F2ZWQgaXAKLSAgICAvLyAgICAgZXNwWzQg
KiBwdHJTaXplXTogc2F2ZWQgbHIKLSAgICAvLyAgICAgZXNwWzUgKiBwdHJTaXplXTogc2F2ZWQg
c3AKKyAgICAvLyBNYWNyb0Fzc2VtYmxlckFSTXY3Ojpwcm9iZSgpIGhhcyBhbHJlYWR5IGdlbmVy
YXRlZCBjb2RlIHRvIHN0b3JlIHNvbWUgdmFsdWVzLgorICAgIC8vIEFmdGVyIHN0b3JpbmcgcjMg
YWJvdmUsIHRoZSB0b3Agb2Ygc3RhY2sgbm93IGxvb2tzIGxpa2UgdGhpczoKKyAgICAvLyAgICAg
c3BbMCAqIHB0clNpemVdOiBscgorICAgIC8vICAgICBzcFsxICogcHRyU2l6ZV06IGlwCisgICAg
Ly8gICAgIHNwWzIgKiBwdHJTaXplXTogcjAKKyAgICAvLyAgICAgc3BbMyAqIHB0clNpemVdOiBy
MQorICAgIC8vICAgICBzcFs1ICogcHRyU2l6ZV06IHIyCisgICAgLy8gICAgIHNwWzYgKiBwdHJT
aXplXTogUzAgaS5lLiByNgorICAgIC8vCisgICAgLy8gSW5jb21pbmcgcmVnaXN0ZXIgdmFsdWVz
OgorICAgIC8vICAgICByMDogcHJvYmUgZnVuY3Rpb24KKyAgICAvLyAgICAgcjE6IHByb2JlIGFy
ZworICAgIC8vICAgICByMjogUHJvYmU6OmV4ZWN1dGVQcm9iZQorICAgIC8vICAgICByNjogc2Ny
YXRjaAorICAgIC8vICAgICBpcDogc2NyYXRjaCwgd2FzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUK
KyAgICAvLyAgICAgbHI6IHJldHVybiBhZGRyZXNzCiAKICAgICAibW92ICAgICAgIGlwLCBzcCIg
IlxuIgotICAgICJtb3YgICAgICAgcjMsIHNwIiAiXG4iCi0gICAgInN1YiAgICAgICByMywgcjMs
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9TSVpFICsgT1VUX1NJWkUpICJcbiIKKyAgICAi
bW92ICAgICAgIHI2LCBzcCIgIlxuIgorICAgICJzdWIgICAgICAgcjYsIHI2LCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4iCiAKICAgICAvLyBUaGUgQVJN
IEVBQkkgc3BlY2lmaWVzIHRoYXQgdGhlIHN0YWNrIG5lZWRzIHRvIGJlIDE2IGJ5dGUgYWxpZ25l
ZC4KLSAgICAiYmljICAgICAgIHIzLCByMywgIzB4ZiIgIlxuIgotICAgICJtb3YgICAgICAgc3As
IHIzIiAiXG4iIC8vIFNldCB0aGUgc3AgdG8gcHJvdGVjdCB0aGUgUHJvYmU6OlN0YXRlIGZyb20g
aW50ZXJydXB0cyBiZWZvcmUgd2UgaW5pdGlhbGl6ZSBpdC4KKyAgICAiYmljICAgICAgIHI2LCBy
NiwgIzB4ZiIgIlxuIgorICAgICJtb3YgICAgICAgc3AsIHI2IiAiXG4iIC8vIFNldCB0aGUgc3Ag
dG8gcHJvdGVjdCB0aGUgUHJvYmU6OlN0YXRlIGZyb20gaW50ZXJydXB0cyBiZWZvcmUgd2UgaW5p
dGlhbGl6ZSBpdC4KIAorICAgICJzdHIgICAgICAgcjAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAg
IHIxLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9BUkdfT0ZGU0VUKSAiXSIgIlxu
IgogICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQ
VV9QQ19PRkZTRVQpICJdIiAiXG4iCi0gICAgImFkZCAgICAgICBsciwgc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfUjBfT0ZGU0VUKSAiXG4iCi0gICAgInN0bWlhICAgICBsciwg
eyByMC1yMTEgfSIgIlxuIgorCisgICAgImFkZCAgICAgICBsciwgc3AsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9DUFVfUjNfT0ZGU0VUKSAiXG4iCisgICAgInN0bWlhICAgICBsciwgeyBy
My1yMTEgfSIgIlxuIgogICAgICJtcnMgICAgICAgbHIsIEFQU1IiICJcbiIKICAgICAic3RyICAg
ICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfQVBTUl9PRkZTRVQp
ICJdIiAiXG4iCiAgICAgInZtcnMgICAgICBsciwgRlBTQ1IiICJcbiIKICAgICAic3RyICAgICAg
IGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRlBTQ1JfT0ZGU0VUKSAi
XSIgIlxuIgogCiAgICAgImxkciAgICAgICBsciwgW2lwLCAjMCAqICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBUUl9TSVpFKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKKyAgICAi
c3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfTFJfT0ZG
U0VUKSAiXSIgIlxuIgogICAgICJsZHIgICAgICAgbHIsIFtpcCwgIzEgKiAiIFNUUklOR0laRV9W
QUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9BUkdfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAg
ICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9JUF9PRkZTRVQpICJd
IiAiXG4iCiAgICAgImxkciAgICAgICBsciwgW2lwLCAjMiAqICIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBUUl9TSVpFKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0NQVV9SM19PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICBs
ciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IwX09GRlNFVCkgIl0iICJc
biIKICAgICAibGRyICAgICAgIGxyLCBbaXAsICMzICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRS
X1NJWkUpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0lQX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIGxyLCBb
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjFfT0ZGU0VUKSAiXSIgIlxuIgog
ICAgICJsZHIgICAgICAgbHIsIFtpcCwgIzQgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0la
RSkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAgICAgbHIsIFtzcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMl9PRkZTRVQpICJdIiAiXG4iCiAgICAg
ImxkciAgICAgICBsciwgW2lwLCAjNSAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAi
XSIgIlxuIgotICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1I2X09GRlNFVCkgIl0iICJcbiIKIAotICAgICJs
ZHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9QQ19PRkZT
RVQpICJdIiAiXG4iCisgICAgImFkZCAgICAgICBpcCwgaXAsICMiIFNUUklOR0laRV9WQUxVRV9P
Rig2ICogUFRSX1NJWkUpICJcbiIKKyAgICAic3RyICAgICAgIGlwLCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfU1BfT0ZGU0VUKSAiXSIgIlxuIgogCiAgICAgImFkZCAgICAg
ICBpcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRDBfT0ZGU0VUKSAiXG4i
CiAgICAgInZzdG1pYS42NCBpcCEsIHsgZDAtZDE1IH0iICJcbiIKQEAgLTMwNCwxMyArMzE3LDgg
QEAgYXNtICgKICNlbmRpZgogICAgICJtb3YgICAgICAgZnAsIHNwIiAiXG4iIC8vIFNhdmUgdGhl
IFByb2JlOjpTdGF0ZSouCiAKLSAgICAvLyBJbml0aWFsaXplIFByb2JlOjpTdGF0ZTo6aW5pdGlh
bGl6ZVN0YWNrRnVuY3Rpb24gdG8gemVyby4KLSAgICAibW92ICAgICAgIHIwLCAjMCIgIlxuIgot
ICAgICJzdHIgICAgICAgcjAsIFtmcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0lOSVRf
U1RBQ0tfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImxkciAgICAgICBpcCwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiXSIg
IlxuIgogICAgICJtb3YgICAgICAgcjAsIHNwIiAiXG4iIC8vIHRoZSBQcm9iZTo6U3RhdGUqIGFy
Zy4KLSAgICAiYmx4ICAgICAgIGlwIiAiXG4iCisgICAgImJseCAgICAgICByMiIgIlxuIiAvLyBD
YWxsIFByb2JlOjpleGVjdXRlUHJvYmUuCiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIFByb2JlOjpT
dGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgc28KICAgICAv
LyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VydmVkIHdoZW4gd2UgY2FsbCB0
aGUgaW5pdGlhbGl6ZVN0YWNrCkBAIC0zOTksMTcgKzQwNywzMiBAQCBhc20gKAogCiB2b2lkIE1h
Y3JvQXNzZW1ibGVyOjpwcm9iZShQcm9iZTo6RnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZykK
IHsKLSAgICBwdXNoKFJlZ2lzdGVySUQ6OnNwKTsKLSAgICBwdXNoKFJlZ2lzdGVySUQ6OmxyKTsK
LSAgICBwdXNoKFJlZ2lzdGVySUQ6OmlwKTsKLSAgICBwdXNoKFJlZ2lzdGVySUQ6OlMwKTsKKy8v
ICAgICBwdXNoKFJlZ2lzdGVySUQ6OnNwKTsKKy8vICAgICBwdXNoKFJlZ2lzdGVySUQ6OmxyKTsK
Ky8vICAgICBwdXNoKFJlZ2lzdGVySUQ6OmlwKTsKKy8vICAgICBwdXNoKFJlZ2lzdGVySUQ6OlMw
KTsKKy8vICAgICAvLyBUaGUgZm9sbG93aW5nIHVzZXMgUmVnaXN0ZXJJRDo6UzAuIFNvLCB0aGV5
IG11c3QgY29tZSBhZnRlciB3ZSBwdXNoIFMwIGFib3ZlLgorLy8gICAgIHB1c2godHJ1c3RlZElt
bTMyRnJvbVB0cihhcmcpKTsKKy8vICAgICBwdXNoKHRydXN0ZWRJbW0zMkZyb21QdHIoZnVuY3Rp
b24pKTsKKy8vIAorLy8gICAgIG1vdmUodHJ1c3RlZEltbTMyRnJvbVB0cihQcm9iZTo6ZXhlY3V0
ZVByb2JlKSwgUmVnaXN0ZXJJRDo6UzApOworLy8gICAgIG1fYXNzZW1ibGVyLmJseChSZWdpc3Rl
cklEOjpTMCk7CisKKyAgICAvLyBSZXNlcnZlIHNwYWNlIGxyLCBpcCwgcjAsIHIxLCByMiwgcjMu
IHIzIHdpbGwgYmUgc3RvcmVkIGJ5IHRoZSB0cmFtcG9saW5lLgorICAgIHN1YjY0KFRydXN0ZWRJ
bW0zMigyNCksIHNwKTsKKworICAgIHN0b3JlMzIobHIsIEFybUFkZHJlc3Moc3AsIDApKTsKKyAg
ICBzdG9yZTMyKGlwLCBBcm1BZGRyZXNzKHNwLCA0KSk7CisgICAgc3RvcmUzMihyMCwgQXJtQWRk
cmVzcyhzcCwgOCkpOworICAgIHN0b3JlMzIocjEsIEFybUFkZHJlc3Moc3AsIDEyKSk7CisgICAg
c3RvcmUzMihyMiwgQXJtQWRkcmVzcyhzcCwgMTYpKTsKKyAgICBzdG9yZTMyKFMwLCBBcm1BZGRy
ZXNzKHNwLCAyMCkpOyAvLyBTMCA9PSByNi4KICAgICAvLyBUaGUgZm9sbG93aW5nIHVzZXMgUmVn
aXN0ZXJJRDo6UzAuIFNvLCB0aGV5IG11c3QgY29tZSBhZnRlciB3ZSBwdXNoIFMwIGFib3ZlLgot
ICAgIHB1c2godHJ1c3RlZEltbTMyRnJvbVB0cihhcmcpKTsKLSAgICBwdXNoKHRydXN0ZWRJbW0z
MkZyb21QdHIoZnVuY3Rpb24pKTsKLQotICAgIG1vdmUodHJ1c3RlZEltbTMyRnJvbVB0cihjdGlN
YXNtUHJvYmVUcmFtcG9saW5lKSwgUmVnaXN0ZXJJRDo6UzApOwotICAgIG1fYXNzZW1ibGVyLmJs
eChSZWdpc3RlcklEOjpTMCk7Ci0KKyAgICBtb3ZlKHRydXN0ZWRJbW0zMkZyb21QdHIoZnVuY3Rp
b24pLCByMCk7CisgICAgbW92ZSh0cnVzdGVkSW1tMzJGcm9tUHRyKGFyZyksIHIxKTsKKyAgICBt
b3ZlKHRydXN0ZWRJbW0zMkZyb21QdHIoUHJvYmU6OmV4ZWN1dGVQcm9iZSksIHIyKTsKKyAgICBt
b3ZlKHRydXN0ZWRJbW0zMkZyb21QdHIoY3RpTWFzbVByb2JlVHJhbXBvbGluZSksIGlwKTsKKyAg
ICBtX2Fzc2VtYmxlci5ibHgoaXApOwogfQogI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5jcHAJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RIVU1C
MikKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0
LmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE5
NSw0NSArMTk2LDU5IEBAIGFzbSAoCiAgICAgIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJB
TShjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiXG4iCiAgICAgU1lNQk9MX1NUUklORyhjdGlNYXNt
UHJvYmVUcmFtcG9saW5lKSAiOiIgIlxuIgogCisgICAgInN0ciAgICAgIHIzLCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRig1ICogUFRSX1NJWkUpICJcbiIKKwogICAgIC8vIE1hY3JvQXNzZW1i
bGVyQVJNdjc6OnByb2JlKCkgaGFzIGFscmVhZHkgZ2VuZXJhdGVkIGNvZGUgdG8gc3RvcmUgc29t
ZSB2YWx1ZXMuCi0gICAgLy8gVGhlIHRvcCBvZiBzdGFjayBub3cgbG9va3MgbGlrZSB0aGlzOgot
ICAgIC8vICAgICBlc3BbMCAqIHB0clNpemVdOiBwcm9iZSBoYW5kbGVyIGZ1bmN0aW9uCi0gICAg
Ly8gICAgIGVzcFsxICogcHRyU2l6ZV06IHByb2JlIGFyZwotICAgIC8vICAgICBlc3BbMiAqIHB0
clNpemVdOiBzYXZlZCByMAotICAgIC8vICAgICBlc3BbMyAqIHB0clNpemVdOiBzYXZlZCBpcAot
ICAgIC8vICAgICBlc3BbNCAqIHB0clNpemVdOiBzYXZlZCBscgotICAgIC8vICAgICBlc3BbNSAq
IHB0clNpemVdOiBzYXZlZCBzcAorICAgIC8vIEFmdGVyIHN0b3JpbmcgcjMgYWJvdmUsIHRoZSB0
b3Agb2Ygc3RhY2sgbm93IGxvb2tzIGxpa2UgdGhpczoKKyAgICAvLyAgICAgc3BbMCAqIHB0clNp
emVdOiBscgorICAgIC8vICAgICBzcFsxICogcHRyU2l6ZV06IGlwCisgICAgLy8gICAgIHNwWzIg
KiBwdHJTaXplXTogcjAKKyAgICAvLyAgICAgc3BbMyAqIHB0clNpemVdOiByMQorICAgIC8vICAg
ICBzcFs1ICogcHRyU2l6ZV06IHIyCisgICAgLy8gICAgIHNwWzYgKiBwdHJTaXplXTogcjMKKyAg
ICAvLworICAgIC8vIEluY29taW5nIHJlZ2lzdGVyIHZhbHVlczoKKyAgICAvLyAgICAgcjA6IHBy
b2JlIGZ1bmN0aW9uCisgICAgLy8gICAgIHIxOiBwcm9iZSBhcmcKKyAgICAvLyAgICAgcjI6IFBy
b2JlOjpleGVjdXRlUHJvYmUKKyAgICAvLyAgICAgcjM6IHNjcmF0Y2gKKyAgICAvLyAgICAgaXA6
IHNjcmF0Y2gsIHdhcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lCisgICAgLy8gICAgIGxyOiByZXR1
cm4gYWRkcmVzcwogCiAgICAgIm1vdiAgICAgICBpcCwgc3AiICJcbiIKLSAgICAibW92ICAgICAg
IHIwLCBzcCIgIlxuIgotICAgICJzdWIgICAgICAgcjAsIHIwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4iCisgICAgIm1vdiAgICAgICByMywgc3AiICJc
biIKKyAgICAic3ViICAgICAgIHIzLCByMywgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJ
WkUgKyBPVVRfU0laRSkgIlxuIgogCiAgICAgLy8gVGhlIEFSTSBFQUJJIHNwZWNpZmllcyB0aGF0
IHRoZSBzdGFjayBuZWVkcyB0byBiZSAxNiBieXRlIGFsaWduZWQuCi0gICAgImJpYyAgICAgICBy
MCwgcjAsICMweGYiICJcbiIKLSAgICAibW92ICAgICAgIHNwLCByMCIgIlxuIiAvLyBTZXQgdGhl
IHNwIHRvIHByb3RlY3QgdGhlIFByb2JlOjpTdGF0ZSBmcm9tIGludGVycnVwdHMgYmVmb3JlIHdl
IGluaXRpYWxpemUgaXQuCisgICAgImJpYyAgICAgICByMywgcjMsICMweGYiICJcbiIKKyAgICAi
bW92ICAgICAgIHNwLCByMyIgIlxuIiAvLyBTZXQgdGhlIHNwIHRvIHByb3RlY3QgdGhlIFByb2Jl
OjpTdGF0ZSBmcm9tIGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRpYWxpemUgaXQuCiAKKyAgICAi
c3RyICAgICAgIHIwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5D
VElPTl9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICByMSwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIl0iICJcbiIKICAgICAic3RyICAgICAgIGxy
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxu
IgotICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X1IxX09GRlNFVCkgIlxuIgotICAgICJzdG1pYSAgICAgbHIsIHsgcjEtcjExIH0iICJcbiIKKwor
ICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1I0
X09GRlNFVCkgIlxuIgorICAgICJzdG1pYSAgICAgbHIsIHsgcjQtcjExIH0iICJcbiIKICAgICAi
bXJzICAgICAgIGxyLCBBUFNSIiAiXG4iCiAgICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0FQU1JfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJ2bXJz
ICAgICAgbHIsIEZQU0NSIiAiXG4iCiAgICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0ZQU0NSX09GRlNFVCkgIl0iICJcbiIKIAogICAgICJsZHIg
ICAgICAgbHIsIFtpcCwgIzAgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIl0iICJc
biIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9Q
Uk9CRV9GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICBsciwgW3NwLCAj
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0iICJcbiIKICAgICAi
bGRyICAgICAgIGxyLCBbaXAsICMxICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICJd
IiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQVJHX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfSVBfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJsZHIgICAg
ICAgbHIsIFtpcCwgIzIgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIK
ICAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
UjBfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJsZHIgICAgICAgbHIsIFtpcCwgIzMgKiAiIFNUUklO
R0laRV9WQUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfSVBfT0ZGU0VUKSAiXSIgIlxuIgorICAg
ICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMV9P
RkZTRVQpICJdIiAiXG4iCiAgICAgImxkciAgICAgICBsciwgW2lwLCAjNCAqICIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0
ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IyX09GRlNF
VCkgIl0iICJcbiIKICAgICAibGRyICAgICAgIGxyLCBbaXAsICM1ICogIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFRSX1NJWkUpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAg
ICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjNfT0ZGU0VUKSAi
XSIgIlxuIgogCi0gICAgImxkciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0iICJcbiIKKyAgICAiYWRkICAgICAgIGlwLCBpcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKDYgKiBQVFJfU0laRSkgIlxuIgorICAgICJzdHIgICAgICAgaXAs
IFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4i
CiAKICAgICAiYWRkICAgICAgIGlwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQ
VV9EMF9PRkZTRVQpICJcbiIKICAgICAidnN0bWlhLjY0IGlwISwgeyBkMC1kMTUgfSIgIlxuIgpA
QCAtMjQyLDEzICsyNTcsOCBAQCBhc20gKAogI2VuZGlmCiAgICAgIm1vdiAgICAgICBmcCwgc3Ai
ICJcbiIgLy8gU2F2ZSB0aGUgUHJvYmU6OlN0YXRlKi4KIAotICAgIC8vIEluaXRpYWxpemUgUHJv
YmU6OlN0YXRlOjppbml0aWFsaXplU3RhY2tGdW5jdGlvbiB0byB6ZXJvLgotICAgICJtb3YgICAg
ICAgcjAsICMwIiAiXG4iCi0gICAgInN0ciAgICAgICByMCwgW2ZwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCi0KLSAgICAi
bGRyICAgICAgIGlwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5D
VElPTl9PRkZTRVQpICJdIiAiXG4iCiAgICAgIm1vdiAgICAgICByMCwgc3AiICJcbiIgLy8gdGhl
IFByb2JlOjpTdGF0ZSogYXJnLgotICAgICJibHggICAgICAgaXAiICJcbiIKKyAgICAiYmx4ICAg
ICAgIHIyIiAiXG4iIC8vIENhbGwgUHJvYmU6OmV4ZWN1dGVQcm9iZS4KIAogICAgIC8vIE1ha2Ug
c3VyZSB0aGUgUHJvYmU6OlN0YXRlIGlzIGVudGlyZWx5IGJlbG93IHRoZSByZXN1bHQgc3RhY2sg
cG9pbnRlciBzbwogICAgIC8vIHRoYXQgcmVnaXN0ZXIgdmFsdWVzIGFyZSBzdGlsbCBwcmVzZXJ2
ZWQgd2hlbiB3ZSBjYWxsIHRoZSBpbml0aWFsaXplU3RhY2sKQEAgLTMzOCwyMiArMzQ4LDIyIEBA
IGFzbSAoCiAKIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5j
dGlvbiwgdm9pZCogYXJnKQogewotICAgIHB1c2goUmVnaXN0ZXJJRDo6bHIpOwotICAgIHB1c2go
UmVnaXN0ZXJJRDo6bHIpOwotICAgIGFkZDMyKFRydXN0ZWRJbW0zMig4KSwgUmVnaXN0ZXJJRDo6
c3AsIFJlZ2lzdGVySUQ6OmxyKTsKLSAgICBzdG9yZTMyKFJlZ2lzdGVySUQ6OmxyLCBBcm1BZGRy
ZXNzKFJlZ2lzdGVySUQ6OnNwLCA0KSk7Ci0gICAgcHVzaChSZWdpc3RlcklEOjppcCk7Ci0gICAg
cHVzaChSZWdpc3RlcklEOjpyMCk7Ci0gICAgLy8gVGhlIGZvbGxvd2luZyB1c2VzIFJlZ2lzdGVy
SUQ6OmlwLiBTbywgdGhleSBtdXN0IGNvbWUgYWZ0ZXIgd2UgcHVzaCBpcCBhYm92ZS4KLSAgICBw
dXNoKHRydXN0ZWRJbW0zMkZyb21QdHIoYXJnKSk7Ci0gICAgcHVzaCh0cnVzdGVkSW1tMzJGcm9t
UHRyKGZ1bmN0aW9uKSk7CisgICAgLy8gUmVzZXJ2ZSBzcGFjZSBsciwgaXAsIHIwLCByMSwgcjIs
IHIzLiByMyB3aWxsIGJlIHN0b3JlZCBieSB0aGUgdHJhbXBvbGluZS4KKyAgICBzdWI2NChUcnVz
dGVkSW1tMzIoMjQpLCBzcCk7CiAKLSAgICBtb3ZlKHRydXN0ZWRJbW0zMkZyb21QdHIoY3RpTWFz
bVByb2JlVHJhbXBvbGluZSksIFJlZ2lzdGVySUQ6OmlwKTsKLSAgICBtX2Fzc2VtYmxlci5ibHgo
UmVnaXN0ZXJJRDo6aXApOworICAgIHN0b3JlMzIobHIsIEFybUFkZHJlc3Moc3AsIDApKTsKKyAg
ICBzdG9yZTMyKGlwLCBBcm1BZGRyZXNzKHNwLCA0KSk7CisgICAgc3RvcmUzMihyMCwgQXJtQWRk
cmVzcyhzcCwgOCkpOworICAgIHN0b3JlMzIocjEsIEFybUFkZHJlc3Moc3AsIDEyKSk7CisgICAg
c3RvcmUzMihyMiwgQXJtQWRkcmVzcyhzcCwgMTYpKTsKKyAgICBtb3ZlKHRydXN0ZWRJbW0zMkZy
b21QdHIoZnVuY3Rpb24pLCByMCk7CisgICAgbW92ZSh0cnVzdGVkSW1tMzJGcm9tUHRyKGFyZyks
IHIxKTsKKyAgICBtb3ZlKHRydXN0ZWRJbW0zMkZyb21QdHIoUHJvYmU6OmV4ZWN1dGVQcm9iZSks
IHIyKTsKKyAgICBtb3ZlKHRydXN0ZWRJbW0zMkZyb21QdHIoY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZSksIGlwKTsKKyAgICBtX2Fzc2VtYmxlci5ibHgoaXApOwogfQogI2VuZGlmIC8vIEVOQUJMRShN
QVNNX1BST0JFKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmIC8vIEVOQUJMRShBU1NF
TUJMRVIpCi0KKyNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RIVU1CMikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmlu
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyUHJpbnRlci5jcHAJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsOSArMzMsMTAgQEAKICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKKwogbmFtZXNwYWNlIFByaW50ZXIgewogCi11c2luZyBDUFVTdGF0ZSA9IE1hY3Jv
QXNzZW1ibGVyOjpDUFVTdGF0ZTsKK3VzaW5nIENQVVN0YXRlID0gUHJvYmU6OkNQVVN0YXRlOwog
dXNpbmcgUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEOwogdXNpbmcgRlBS
ZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRDsKIApAQCAtMTcxLDEzICsx
NzIsMTMgQEAgdm9pZCBwcmludE1lbW9yeShQcmludFN0cmVhbSYgb3V0LCBDb250ZQogICAgICAg
ICBvdXQucHJpbnQoIlxuIik7CiB9CiAKLXZvaWQgcHJpbnRDYWxsYmFjayhQcm9iZTo6U3RhdGUq
IHByb2JlQ29udGV4dCkKK3ZvaWQgcHJpbnRDYWxsYmFjayhQcm9iZTo6Q29udGV4dCYgcHJvYmVD
b250ZXh0KQogewogICAgIGF1dG8mIG91dCA9IFdURjo6ZGF0YUZpbGUoKTsKLSAgICBQcmludFJl
Y29yZExpc3QmIGxpc3QgPSAqcmVpbnRlcnByZXRfY2FzdDxQcmludFJlY29yZExpc3QqPihwcm9i
ZUNvbnRleHQtPmFyZyk7CisgICAgUHJpbnRSZWNvcmRMaXN0JiBsaXN0ID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8UHJpbnRSZWNvcmRMaXN0Kj4ocHJvYmVDb250ZXh0LmFyZyk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGF1dG8mIHJlY29yZCA9
IGxpc3RbaV07Ci0gICAgICAgIENvbnRleHQgY29udGV4dCgqcHJvYmVDb250ZXh0LCByZWNvcmQu
ZGF0YSk7CisgICAgICAgIENvbnRleHQgY29udGV4dChwcm9iZUNvbnRleHQsIHJlY29yZC5kYXRh
KTsKICAgICAgICAgcmVjb3JkLnByaW50ZXIob3V0LCBjb250ZXh0KTsKICAgICB9CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmgJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
KyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJQcmludGVyLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMjIzLDcgKzIyNCw3IEBAIHN0cnVjdCBQcmludGVyPE1lbVdvcmQ8SW50
VHlwZT4+IDogcHVibGkKICAgICB7IH0KIH07CiAKLXZvaWQgcHJpbnRDYWxsYmFjayhQcm9iZTo6
U3RhdGUqKTsKK3ZvaWQgcHJpbnRDYWxsYmFjayhQcm9iZTo6Q29udGV4dCYpOwogCiB9IC8vIG5h
bWVzcGFjZSBQcmludGVyCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCShyZXZpc2lvbiAy
MjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJM
RShBU1NFTUJMRVIpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkKICNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlci5oIgogCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3Rm
L0lubGluZUFTTS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMSw2ICsxMDIsOCBAQCBleHRl
cm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgpCiAjZGVmaW5lIFBST0JFX1NJWkUg
KFBST0JFX0NQVV9YTU0xNV9PRkZTRVQgKyBYTU1fU0laRSkKICNlbmRpZiAvLyBDUFUoWDg2XzY0
KQogCisjZGVmaW5lIFBST0JFX0VYRUNVVE9SX09GRlNFVCBQUk9CRV9TSVpFIC8vIFN0YXNoIHRo
ZSBleGVjdXRlUHJvYmUgZnVuY3Rpb24gcG9pbnRlciBhdCB0aGUgZW5kIG9mIHRoZSBQcm9iZUNv
bnRleHQuCisKIC8vIFRoZSBvdXRnb2luZyByZWNvcmQgdG8gYmUgcG9wcGVkIG9mZiB0aGUgc3Rh
Y2sgYXQgdGhlIGVuZCBjb25zaXN0cyBvZjoKIC8vIGVmbGFncywgZWF4LCBlY3gsIGVicCwgZWlw
LgogI2RlZmluZSBPVVRfU0laRSAgICAgICAgKDUgKiBQVFJfU0laRSkKQEAgLTE1OSw2ICsxNjIs
NyBAQCBDT01QSUxFX0FTU0VSVChQUk9CRV9PRkZTRVRPRl9SRUcoY3B1LmZwCiAjZW5kaWYgLy8g
Q1BVKFg4Nl82NCkKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFByb2JlOjpTdGF0ZSkgPT0gUFJP
QkVfU0laRSwgUHJvYmVTdGF0ZV9zaXplX21hdGNoZXNfY3RpTWFzbVByb2JlVHJhbXBvbGluZSk7
CitDT01QSUxFX0FTU0VSVCgoUFJPQkVfRVhFQ1VUT1JfT0ZGU0VUICsgUFRSX1NJWkUpIDw9IChQ
Uk9CRV9TSVpFICsgT1VUX1NJWkUpLCBNdXN0X2hhdmVfcm9vbV9hZnRlcl9Qcm9iZUNvbnRleHRf
dG9fc3Rhc2hfdGhlX3Byb2JlX2hhbmRsZXIpOwogCiAjdW5kZWYgUFJPQkVfT0ZGU0VUT0YKIApA
QCAtMTc2LDEwICsxODAsMTYgQEAgYXNtICgKICAgICAvLyB0aGlzOgogICAgIC8vICAgICBlc3Bb
MCAqIHB0clNpemVdOiBlZmxhZ3MKICAgICAvLyAgICAgZXNwWzEgKiBwdHJTaXplXTogcmV0dXJu
IGFkZHJlc3MgLyBzYXZlZCBlaXAKLSAgICAvLyAgICAgZXNwWzIgKiBwdHJTaXplXTogcHJvYmUg
aGFuZGxlciBmdW5jdGlvbgotICAgIC8vICAgICBlc3BbMyAqIHB0clNpemVdOiBwcm9iZSBhcmcK
LSAgICAvLyAgICAgZXNwWzQgKiBwdHJTaXplXTogc2F2ZWQgZWF4Ci0gICAgLy8gICAgIGVzcFs1
ICogcHRyU2l6ZV06IHNhdmVkIGVzcAorICAgIC8vICAgICBlc3BbMiAqIHB0clNpemVdOiBzYXZl
ZCBlYngKKyAgICAvLyAgICAgZXNwWzMgKiBwdHJTaXplXTogc2F2ZWQgZWR4CisgICAgLy8gICAg
IGVzcFs0ICogcHRyU2l6ZV06IHNhdmVkIGVjeAorICAgIC8vICAgICBlc3BbNSAqIHB0clNpemVd
OiBzYXZlZCBlYXgKKyAgICAvLworICAgIC8vIEluY29taW5nIHJlZ2lzdGVycyBjb250YWluOgor
ICAgIC8vICAgICBlY3g6IFByb2JlOjpleGVjdXRlUHJvYmUKKyAgICAvLyAgICAgZWR4OiBwcm9i
ZSBmdW5jdGlvbgorICAgIC8vICAgICBlYng6IHByb2JlIGFyZworICAgIC8vICAgICBlYXg6IHNj
cmF0Y2ggKHdhcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKQogCiAgICAgIm1vdmwgJWVzcCwgJWVh
eCIgIlxuIgogICAgICJzdWJsICQiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9TSVpFICsgT1VU
X1NJWkUpICIsICVlc3AiICJcbiIKQEAgLTE5MCw5ICsyMDAsOSBAQCBhc20gKAogICAgICJtb3Zs
ICVlYnAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQlBfT0ZGU0VUKSAiKCVlc3Ap
IiAiXG4iCiAgICAgIm1vdmwgJWVzcCwgJWVicCIgIlxuIiAvLyBTYXZlIHRoZSBQcm9iZTo6U3Rh
dGUqLgogCi0gICAgIm1vdmwgJWVjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VD
WF9PRkZTRVQpICIoJWVicCkiICJcbiIKLSAgICAibW92bCAlZWR4LCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfRURYX09GRlNFVCkgIiglZWJwKSIgIlxuIgotICAgICJtb3ZsICVlYngs
ICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQlhfT0ZGU0VUKSAiKCVlYnApIiAiXG4i
CisgICAgIm1vdmwgJWVjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfRVhFQ1VUT1JfT0ZG
U0VUKSAiKCVlYnApIiAiXG4iCisgICAgIm1vdmwgJWVkeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiKCVlYnApIiAiXG4iCisgICAgIm1vdmwgJWVi
eCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIiglZWJwKSIgIlxuIgog
ICAgICJtb3ZsICVlc2ksICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FU0lfT0ZGU0VU
KSAiKCVlYnApIiAiXG4iCiAgICAgIm1vdmwgJWVkaSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0VESV9PRkZTRVQpICIoJWVicCkiICJcbiIKIApAQCAtMjAxLDEyICsyMTEsMTYgQEAg
YXNtICgKICAgICAibW92bCAxICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICIoJWVh
eCksICVlY3giICJcbiIKICAgICAibW92bCAlZWN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfRUlQX09GRlNFVCkgIiglZWJwKSIgIlxuIgogICAgICJtb3ZsIDIgKiAiIFNUUklOR0la
RV9WQUxVRV9PRihQVFJfU0laRSkgIiglZWF4KSwgJWVjeCIgIlxuIgotICAgICJtb3ZsICVlY3gs
ICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIiglZWJw
KSIgIlxuIgorICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9F
QlhfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAgICAgIm1vdmwgMyAqICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBUUl9TSVpFKSAiKCVlYXgpLCAlZWN4IiAiXG4iCi0gICAgIm1vdmwgJWVjeCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIiglZWJwKSIgIlxuIgorICAgICJtb3Zs
ICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FRFhfT0ZGU0VUKSAiKCVlYnAp
IiAiXG4iCiAgICAgIm1vdmwgNCAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiKCVl
YXgpLCAlZWN4IiAiXG4iCi0gICAgIm1vdmwgJWVjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0VBWF9PRkZTRVQpICIoJWVicCkiICJcbiIKKyAgICAibW92bCAlZWN4LCAiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUNYX09GRlNFVCkgIiglZWJwKSIgIlxuIgogICAgICJt
b3ZsIDUgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIiglZWF4KSwgJWVjeCIgIlxu
IgorICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQVhfT0ZG
U0VUKSAiKCVlYnApIiAiXG4iCisKKyAgICAibW92bCAlZWF4LCAlZWN4IiAiXG4iCisgICAgImFk
ZGwgJCIgU1RSSU5HSVpFX1ZBTFVFX09GKDYgKiBQVFJfU0laRSkgIiwgJWVjeCIgIlxuIgogICAg
ICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FU1BfT0ZGU0VUKSAi
KCVlYnApIiAiXG4iCiAKICAgICAibW92cSAleG1tMCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1hNTTBfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCkBAIC0yMTgsMTUgKzIzMiwxMiBAQCBh
c20gKAogICAgICJtb3ZxICV4bW02LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWE1N
Nl9PRkZTRVQpICIoJWVicCkiICJcbiIKICAgICAibW92cSAleG1tNywgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX1hNTTdfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAKLSAgICAieG9ybCAl
ZWF4LCAlZWF4IiAiXG4iCi0gICAgIm1vdmwgJWVheCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICIoJWVicCkiICJcbiIKLQogICAgIC8vIFJl
c2VydmUgc3RhY2sgc3BhY2UgZm9yIHRoZSBhcmcgd2hpbGUgbWFpbnRhaW5pbmcgdGhlIHJlcXVp
cmVkIHN0YWNrCiAgICAgLy8gcG9pbnRlciAzMiBieXRlIGFsaWdubWVudDoKICAgICAic3VibCAk
MHgyMCwgJWVzcCIgIlxuIgogICAgICJtb3ZsICVlYnAsIDAoJWVzcCkiICJcbiIgLy8gdGhlIFBy
b2JlOjpTdGF0ZSogYXJnLgogCi0gICAgImNhbGwgKiIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIiglZWJwKSIgIlxuIgorICAgICJjYWxsICoiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9FWEVDVVRPUl9PRkZTRVQpICIoJWVicCkiICJcbiIKIAogICAg
IC8vIE1ha2Ugc3VyZSB0aGUgUHJvYmU6OlN0YXRlIGlzIGVudGlyZWx5IGJlbG93IHRoZSByZXN1
bHQgc3RhY2sgcG9pbnRlciBzbwogICAgIC8vIHRoYXQgcmVnaXN0ZXIgdmFsdWVzIGFyZSBzdGls
bCBwcmVzZXJ2ZWQgd2hlbiB3ZSBjYWxsIHRoZSBpbml0aWFsaXplU3RhY2sKQEAgLTMzNiwxMCAr
MzQ3LDE2IEBAIGV4dGVybiAiQyIgX19kZWNsc3BlYyhuYWtlZCkgdm9pZCBjdGlNYXMKICAgICAg
ICAgLy8gdGhpczoKICAgICAgICAgLy8gICAgIGVzcFswICogcHRyU2l6ZV06IGVmbGFncwogICAg
ICAgICAvLyAgICAgZXNwWzEgKiBwdHJTaXplXTogcmV0dXJuIGFkZHJlc3MgLyBzYXZlZCBlaXAK
LSAgICAgICAgLy8gICAgIGVzcFsyICogcHRyU2l6ZV06IHByb2JlIGhhbmRsZXIgZnVuY3Rpb24K
LSAgICAgICAgLy8gICAgIGVzcFszICogcHRyU2l6ZV06IHByb2JlIGFyZwotICAgICAgICAvLyAg
ICAgZXNwWzQgKiBwdHJTaXplXTogc2F2ZWQgZWF4Ci0gICAgICAgIC8vICAgICBlc3BbNSAqIHB0
clNpemVdOiBzYXZlZCBlc3AKKyAgICAgICAgLy8gICAgIGVzcFsyICogcHRyU2l6ZV06IHNhdmVk
IGVieAorICAgICAgICAvLyAgICAgZXNwWzMgKiBwdHJTaXplXTogc2F2ZWQgZWR4CisgICAgICAg
IC8vICAgICBlc3BbNCAqIHB0clNpemVdOiBzYXZlZCBlY3gKKyAgICAgICAgLy8gICAgIGVzcFs1
ICogcHRyU2l6ZV06IHNhdmVkIGVheAorICAgICAgICAvLworICAgICAgICAvLyBJbmNvbWluZyBy
ZWdpc3RlcnMgY29udGFpbjoKKyAgICAgICAgLy8gICAgIGVjeDogUHJvYmU6OmV4ZWN1dGVQcm9i
ZQorICAgICAgICAvLyAgICAgZWR4OiBwcm9iZSBmdW5jdGlvbgorICAgICAgICAvLyAgICAgZWJ4
OiBwcm9iZSBhcmcKKyAgICAgICAgLy8gICAgIGVheDogc2NyYXRjaCAod2FzIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUpCiAKICAgICAgICAgbW92IGVheCwgZXNwCiAgICAgICAgIHN1YiBlc3AsIFBS
T0JFX1NJWkUgKyBPVVRfU0laRQpAQCAtMzUwLDkgKzM2Nyw5IEBAIGV4dGVybiAiQyIgX19kZWNs
c3BlYyhuYWtlZCkgdm9pZCBjdGlNYXMKICAgICAgICAgbW92IFtQUk9CRV9DUFVfRUJQX09GRlNF
VCArIGVzcF0sIGVicAogICAgICAgICBtb3YgZWJwLCBlc3AgLy8gU2F2ZSB0aGUgUHJvYmVDb250
ZXh0Ki4KIAotICAgICAgICBtb3YgW1BST0JFX0NQVV9FQ1hfT0ZGU0VUICsgZWJwXSwgZWN4Ci0g
ICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VEWF9PRkZTRVQgKyBlYnBdLCBlZHgKLSAgICAgICAgbW92
IFtQUk9CRV9DUFVfRUJYX09GRlNFVCArIGVicF0sIGVieAorICAgICAgICBtb3YgW1BST0JFX0VY
RUNVVE9SX09GRlNFVCArIGVicF0sIGVjeAorICAgICAgICBtb3YgW1BST0JFX1BST0JFX0ZVTkNU
SU9OX09GRlNFVCArIGVicF0sIGVkeAorICAgICAgICBtb3YgW1BST0JFX0FSR19PRkZTRVQgKyBl
YnBdLCBlYngKICAgICAgICAgbW92IFtQUk9CRV9DUFVfRVNJX09GRlNFVCArIGVicF0sIGVzaQog
ICAgICAgICBtb3YgW1BST0JFX0NQVV9FRElfT0ZGU0VUICsgZWJwXSwgZWRpCiAKQEAgLTM2MSwx
MiArMzc4LDE2IEBAIGV4dGVybiAiQyIgX19kZWNsc3BlYyhuYWtlZCkgdm9pZCBjdGlNYXMKICAg
ICAgICAgbW92IGVjeCwgWzEgKiBQVFJfU0laRSArIGVheF0KICAgICAgICAgbW92IFtQUk9CRV9D
UFVfRUlQX09GRlNFVCArIGVicF0sIGVjeAogICAgICAgICBtb3YgZWN4LCBbMiAqIFBUUl9TSVpF
ICsgZWF4XQotICAgICAgICBtb3YgW1BST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCArIGVicF0s
IGVjeAorICAgICAgICBtb3YgW1BST0JFX0NQVV9FQlhfT0ZGU0VUICsgZWJwXSwgZWN4CiAgICAg
ICAgIG1vdiBlY3gsIFszICogUFRSX1NJWkUgKyBlYXhdCi0gICAgICAgIG1vdiBbUFJPQkVfQVJH
X09GRlNFVCArIGVicF0sIGVjeAorICAgICAgICBtb3YgW1BST0JFX0NQVV9FRFhfT0ZGU0VUICsg
ZWJwXSwgZWN4CiAgICAgICAgIG1vdiBlY3gsIFs0ICogUFRSX1NJWkUgKyBlYXhdCi0gICAgICAg
IG1vdiBbUFJPQkVfQ1BVX0VBWF9PRkZTRVQgKyBlYnBdLCBlY3gKKyAgICAgICAgbW92IFtQUk9C
RV9DUFVfRUNYX09GRlNFVCArIGVicF0sIGVjeAogICAgICAgICBtb3YgZWN4LCBbNSAqIFBUUl9T
SVpFICsgZWF4XQorICAgICAgICBtb3YgW1BST0JFX0NQVV9FQVhfT0ZGU0VUICsgZWJwXSwgZWN4
CisKKyAgICAgICAgbW92IGVjeCwgZWF4CisgICAgICAgIGFkZCBlY3gsIDYgKiBQVFJfU0laRQog
ICAgICAgICBtb3YgW1BST0JFX0NQVV9FU1BfT0ZGU0VUICsgZWJwXSwgZWN4CiAKICAgICAgICAg
bW92cSBxd29yZCBwdHJbUFJPQkVfQ1BVX1hNTTBfT0ZGU0VUICsgZWJwXSwgeG1tMApAQCAtMzc4
LDE1ICszOTksMTIgQEAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKG5ha2VkKSB2b2lkIGN0aU1hcwog
ICAgICAgICBtb3ZxIHF3b3JkIHB0cltQUk9CRV9DUFVfWE1NNl9PRkZTRVQgKyBlYnBdLCB4bW02
CiAgICAgICAgIG1vdnEgcXdvcmQgcHRyW1BST0JFX0NQVV9YTU03X09GRlNFVCArIGVicF0sIHht
bTcKIAotICAgICAgICB4b3IgZWF4LCBlYXgKLSAgICAgICAgbW92IFtQUk9CRV9JTklUX1NUQUNL
X0ZVTkNUSU9OX09GRlNFVCArIGVicF0sIGVheAotCiAgICAgICAgIC8vIFJlc2VydmUgc3RhY2sg
c3BhY2UgZm9yIHRoZSBhcmcgd2hpbGUgbWFpbnRhaW5pbmcgdGhlIHJlcXVpcmVkIHN0YWNrCiAg
ICAgICAgIC8vIHBvaW50ZXIgMzIgYnl0ZSBhbGlnbm1lbnQ6CiAgICAgICAgIHN1YiBlc3AsIDB4
MjAKICAgICAgICAgbW92IFswICsgZXNwXSwgZWJwIC8vIHRoZSBQcm9iZUNvbnRleHQqIGFyZy4K
IAotICAgICAgICBjYWxsIFtQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQgKyBlYnBdCisgICAg
ICAgIGNhbGwgW1BST0JFX0VYRUNVVE9SX09GRlNFVCArIGVicF0KIAogICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIFByb2JlQ29udGV4dCBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNr
IHBvaW50ZXIgc28KICAgICAgICAgLy8gdGhhdCByZWdpc3RlciB2YWx1ZXMgYXJlIHN0aWxsIHBy
ZXNlcnZlZCB3aGVuIHdlIGNhbGwgdGhlIGluaXRpYWxpemVTdGFjawpAQCAtNDg0LDcgKzUwMiw3
IEBAIGV4dGVybiAiQyIgX19kZWNsc3BlYyhuYWtlZCkgdm9pZCBjdGlNYXMKICAgICAgICAgcmV0
CiAgICAgfQogfQotI2VuZGlmCisjZW5kaWYgLy8gQ09NUElMRVIoTVNWQykKIAogI2VuZGlmIC8v
IENQVShYODYpCiAKQEAgLTQ5OCwxNCArNTE2LDE5IEBAIGFzbSAoCiAgICAgInB1c2hmcSIgIlxu
IgogCiAgICAgLy8gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnByb2JlKCkgaGFzIGFscmVhZHkg
Z2VuZXJhdGVkIGNvZGUgdG8gc3RvcmUgc29tZSB2YWx1ZXMuCi0gICAgLy8gVG9nZXRoZXIgd2l0
aCB0aGUgcmZsYWdzIHB1c2hlZCBhYm92ZSwgdGhlIHRvcCBvZiBzdGFjayBub3cgbG9va3MgbGlr
ZQotICAgIC8vIHRoaXM6Ci0gICAgLy8gICAgIGVzcFswICogcHRyU2l6ZV06IHJmbGFncwotICAg
IC8vICAgICBlc3BbMSAqIHB0clNpemVdOiByZXR1cm4gYWRkcmVzcyAvIHNhdmVkIHJpcAotICAg
IC8vICAgICBlc3BbMiAqIHB0clNpemVdOiBwcm9iZSBoYW5kbGVyIGZ1bmN0aW9uCi0gICAgLy8g
ICAgIGVzcFszICogcHRyU2l6ZV06IHByb2JlIGFyZwotICAgIC8vICAgICBlc3BbNCAqIHB0clNp
emVdOiBzYXZlZCByYXgKLSAgICAvLyAgICAgZXNwWzUgKiBwdHJTaXplXTogc2F2ZWQgcnNwCisg
ICAgLy8gVG9nZXRoZXIgd2l0aCB0aGUgcmZsYWdzIHB1c2hlZCBhYm92ZSwgdGhlIHRvcCBvZiBz
dGFjayBub3cgbG9va3MgbGlrZSB0aGlzOgorICAgIC8vICAgICByc3BbMCAqIHB0clNpemVdOiBy
ZmxhZ3MKKyAgICAvLyAgICAgcnNwWzEgKiBwdHJTaXplXTogcmV0dXJuIGFkZHJlc3MgLyBzYXZl
ZCByaXAKKyAgICAvLyAgICAgcnNwWzIgKiBwdHJTaXplXTogc2F2ZWQgcmJ4CisgICAgLy8gICAg
IHJzcFszICogcHRyU2l6ZV06IHNhdmVkIHJkeAorICAgIC8vICAgICByc3BbNCAqIHB0clNpemVd
OiBzYXZlZCByY3gKKyAgICAvLyAgICAgcnNwWzUgKiBwdHJTaXplXTogc2F2ZWQgcmF4CisgICAg
Ly8KKyAgICAvLyBJbmNvbWluZyByZWdpc3RlcnMgY29udGFpbjoKKyAgICAvLyAgICAgcmN4OiBQ
cm9iZTo6ZXhlY3V0ZVByb2JlCisgICAgLy8gICAgIHJkeDogcHJvYmUgZnVuY3Rpb24KKyAgICAv
LyAgICAgcmJ4OiBwcm9iZSBhcmcKKyAgICAvLyAgICAgcmF4OiBzY3JhdGNoICh3YXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSkKIAogICAgICJtb3ZxICVyc3AsICVyYXgiICJcbiIKICAgICAic3Vi
cSAkIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiLCAlcnNwIiAi
XG4iCkBAIC01MTcsOSArNTQwLDkgQEAgYXNtICgKICAgICAibW92cSAlcmJwLCAiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfRUJQX09GRlNFVCkgIiglcnNwKSIgIlxuIgogICAgICJtb3Zx
ICVyc3AsICVyYnAiICJcbiIgLy8gU2F2ZSB0aGUgUHJvYmU6OlN0YXRlKi4KIAotICAgICJtb3Zx
ICVyY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQ1hfT0ZGU0VUKSAiKCVyYnAp
IiAiXG4iCi0gICAgIm1vdnEgJXJkeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VE
WF9PRkZTRVQpICIoJXJicCkiICJcbiIKLSAgICAibW92cSAlcmJ4LCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfRUJYX09GRlNFVCkgIiglcmJwKSIgIlxuIgorICAgICJtb3ZxICVyY3gs
ICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0VYRUNVVE9SX09GRlNFVCkgIiglcmJwKSIgIlxu
IgorICAgICJtb3ZxICVyZHgsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNU
SU9OX09GRlNFVCkgIiglcmJwKSIgIlxuIgorICAgICJtb3ZxICVyYngsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0FSR19PRkZTRVQpICIoJXJicCkiICJcbiIKICAgICAibW92cSAlcnNpLCAi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRVNJX09GRlNFVCkgIiglcmJwKSIgIlxuIgog
ICAgICJtb3ZxICVyZGksICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FRElfT0ZGU0VU
KSAiKCVyYnApIiAiXG4iCiAKQEAgLTUyOCwxMiArNTUxLDE2IEBAIGFzbSAoCiAgICAgIm1vdnEg
MSAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiKCVyYXgpLCAlcmN4IiAiXG4iCiAg
ICAgIm1vdnEgJXJjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VJUF9PRkZTRVQp
ICIoJXJicCkiICJcbiIKICAgICAibW92cSAyICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJ
WkUpICIoJXJheCksICVyY3giICJcbiIKLSAgICAibW92cSAlcmN4LCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICIoJXJicCkiICJcbiIKKyAgICAibW92
cSAlcmN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUJYX09GRlNFVCkgIiglcmJw
KSIgIlxuIgogICAgICJtb3ZxIDMgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIigl
cmF4KSwgJXJjeCIgIlxuIgotICAgICJtb3ZxICVyY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0FSR19PRkZTRVQpICIoJXJicCkiICJcbiIKKyAgICAibW92cSAlcmN4LCAiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfRURYX09GRlNFVCkgIiglcmJwKSIgIlxuIgogICAgICJtb3Zx
IDQgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIiglcmF4KSwgJXJjeCIgIlxuIgot
ICAgICJtb3ZxICVyY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQVhfT0ZGU0VU
KSAiKCVyYnApIiAiXG4iCisgICAgIm1vdnEgJXJjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0VDWF9PRkZTRVQpICIoJXJicCkiICJcbiIKICAgICAibW92cSA1ICogIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFRSX1NJWkUpICIoJXJheCksICVyY3giICJcbiIKKyAgICAibW92cSAlcmN4
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUFYX09GRlNFVCkgIiglcmJwKSIgIlxu
IgorCisgICAgIm1vdnEgJXJheCwgJXJjeCIgIlxuIgorICAgICJhZGRxICQiIFNUUklOR0laRV9W
QUxVRV9PRig2ICogUFRSX1NJWkUpICIsICVyY3giICJcbiIKICAgICAibW92cSAlcmN4LCAiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRVNQX09GRlNFVCkgIiglcmJwKSIgIlxuIgogCiAg
ICAgIm1vdnEgJXI4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjhfT0ZGU0VUKSAi
KCVyYnApIiAiXG4iCkBAIC01NjIsMTEgKzU4OSw4IEBAIGFzbSAoCiAgICAgIm1vdnEgJXhtbTE0
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWE1NMTRfT0ZGU0VUKSAiKCVyYnApIiAi
XG4iCiAgICAgIm1vdnEgJXhtbTE1LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWE1N
MTVfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCiAKLSAgICAieG9ycSAlcmF4LCAlcmF4IiAiXG4iCi0g
ICAgIm1vdnEgJXJheCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9TVEFDS19GVU5D
VElPTl9PRkZTRVQpICIoJXJicCkiICJcbiIKLQogICAgICJtb3ZxICVyYnAsICVyZGkiICJcbiIg
Ly8gdGhlIFByb2JlOjpTdGF0ZSogYXJnLgotICAgICJjYWxsICoiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICIoJXJicCkiICJcbiIKKyAgICAiY2FsbCAq
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfRVhFQ1VUT1JfT0ZGU0VUKSAiKCVyYnApIiAiXG4i
CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0
aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgc28KICAgICAvLyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBh
cmUgc3RpbGwgcHJlc2VydmVkIHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNrCkBAIC03
MzEsMTMgKzc1NSwxNCBAQCBleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgp
CiAKIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlvbiwg
dm9pZCogYXJnKQogewotICAgIHB1c2goUmVnaXN0ZXJJRDo6ZXNwKTsKLSAgICBwdXNoKFJlZ2lz
dGVySUQ6OmVheCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZyksIFJlZ2lzdGVySUQ6OmVh
eCk7Ci0gICAgcHVzaChSZWdpc3RlcklEOjplYXgpOwotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCBSZWdpc3RlcklEOjplYXgpOwogICAg
IHB1c2goUmVnaXN0ZXJJRDo6ZWF4KTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oY3RpTWFzbVByb2JlVHJhbXBvbGluZSkpLCBSZWdpc3RlcklEOjplYXgp
OworICAgIHB1c2goUmVnaXN0ZXJJRDo6ZWN4KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oUHJvYmU6OmV4ZWN1dGVQcm9iZSkpLCBSZWdpc3RlcklEOjpl
Y3gpOworICAgIHB1c2goUmVnaXN0ZXJJRDo6ZWR4KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSwgUmVnaXN0ZXJJRDo6ZWR4KTsKKyAg
ICBwdXNoKFJlZ2lzdGVySUQ6OmVieCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZyksIFJl
Z2lzdGVySUQ6OmVieCk7CiAgICAgY2FsbChSZWdpc3RlcklEOjplYXgpOwogfQogI2VuZGlmIC8v
IEVOQUJMRShNQVNNX1BST0JFKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9QcmludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9QcmludGVyLmgJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUHJpbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIFByb2JlIHsKLXN0cnVjdCBTdGF0ZTsKK2NsYXNzIENv
bnRleHQ7CiB9IC8vIG5hbWVzcGFjZSBQcm9iZQogCiBuYW1lc3BhY2UgUHJpbnRlciB7CkBAIC04
NiwxMiArODYsMTIgQEAgdW5pb24gRGF0YSB7CiB9OwogCiBzdHJ1Y3QgQ29udGV4dCB7Ci0gICAg
Q29udGV4dChQcm9iZTo6U3RhdGUmIHByb2JlQ29udGV4dCwgRGF0YSYgZGF0YSkKKyAgICBDb250
ZXh0KFByb2JlOjpDb250ZXh0JiBwcm9iZUNvbnRleHQsIERhdGEmIGRhdGEpCiAgICAgICAgIDog
cHJvYmVDb250ZXh0KHByb2JlQ29udGV4dCkKICAgICAgICAgLCBkYXRhKGRhdGEpCiAgICAgeyB9
CiAKLSAgICBQcm9iZTo6U3RhdGUmIHByb2JlQ29udGV4dDsKKyAgICBQcm9iZTo6Q29udGV4dCYg
cHJvYmVDb250ZXh0OwogICAgIERhdGEmIGRhdGE7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBQcm9iZSB7CisKK3N0YXRpYyB2
b2lkIGhhbmRsZVByb2JlU3RhY2tJbml0aWFsaXphdGlvbihTdGF0ZSopOworCit2b2lkIGV4ZWN1
dGVQcm9iZShTdGF0ZSogc3RhdGUpCit7CisgICAgQ29udGV4dCBjb250ZXh0KHN0YXRlKTsKKyNp
ZiBDUFUoQVJNNjQpCisgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgdWludHB0cl90
IG9yaWdpbmFsTFIgPSBjcHUuZ3ByKEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgdWludHB0cl90
IG9yaWdpbmFsUEMgPSBjcHUucGMoKTsKKyNlbmRpZgorCisgICAgc3RhdGUtPmluaXRpYWxpemVT
dGFja0Z1bmN0aW9uID0gbnVsbHB0cjsKKyAgICBzdGF0ZS0+aW5pdGlhbGl6ZVN0YWNrQXJnID0g
bnVsbHB0cjsKKyAgICBzdGF0ZS0+cHJvYmVGdW5jdGlvbihjb250ZXh0KTsKKworI2lmIENQVShB
Uk02NCkKKyAgICAvLyBUaGUgQVJNNjQgcHJvYmUgdHJhbXBvbGluZSBkb2VzIG5vdCBzdXBwb3J0
IGNoYW5naW5nIGJvdGggbHIgYW5kIHBjLgorICAgIFJFTEVBU0VfQVNTRVJUKG9yaWdpbmFsUEMg
PT0gY3B1LnBjKCkgfHwgb3JpZ2luYWxMUiA9PSBjcHUuZ3ByKEFSTTY0UmVnaXN0ZXJzOjpscikp
CisjZW5kaWYKKworICAgIGlmIChjb250ZXh0Lmhhc1dyaXRlc1RvRmx1c2goKSkgeworICAgICAg
ICBjb250ZXh0LnN0YWNrKCkuc2V0TmV3U3RhY2tQb2ludGVyKHN0YXRlLT5jcHUuc3AoKSk7Cisg
ICAgICAgIHN0YXRlLT5jcHUuc3AoKSA9IHN0ZDo6bWluKGNvbnRleHQuc3RhY2soKS5sb3dXYXRl
cm1hcmsoKSwgc3RhdGUtPmNwdS5zcCgpKTsKKworICAgICAgICBzdGF0ZS0+aW5pdGlhbGl6ZVN0
YWNrRnVuY3Rpb24gPSBoYW5kbGVQcm9iZVN0YWNrSW5pdGlhbGl6YXRpb247CisgICAgICAgIHN0
YXRlLT5pbml0aWFsaXplU3RhY2tBcmcgPSBjb250ZXh0LnJlbGVhc2VTdGFjaygpOworICAgIH0K
K30KKworc3RhdGljIHZvaWQgaGFuZGxlUHJvYmVTdGFja0luaXRpYWxpemF0aW9uKFN0YXRlKiBz
dGF0ZSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhY2s+IHN0YWNrKHJlaW50ZXJwcmV0X2Nh
c3Q8UHJvYmU6OlN0YWNrKj4oc3RhdGUtPmluaXRpYWxpemVTdGFja0FyZykpOworICAgIHN0YWNr
LT5mbHVzaFdyaXRlcygpOworICAgIHN0YXRlLT5jcHUuc3AoKSA9IHN0YWNrLT5uZXdTdGFja1Bv
aW50ZXIoKTsKK30KKworLy8gTm90IGZvciBnZW5lcmFsIHVzZS4gVGhpcyBzaG91bGQgb25seSBi
ZSBmb3Igd3JpdGluZyB0ZXN0cy4KK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQqIHByb2JlU3RhdGVG
b3JDb250ZXh0KENvbnRleHQmKTsKK3ZvaWQqIHByb2JlU3RhdGVGb3JDb250ZXh0KENvbnRleHQm
IGNvbnRleHQpCit7CisgICAgcmV0dXJuIGNvbnRleHQubV9zdGF0ZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgUHJvYmUKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5j
bHVkZSAiUHJvYmVTdGFjay5oIgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBQcm9iZSB7
CisKK3N0cnVjdCBDUFVTdGF0ZSB7CisgICAgdXNpbmcgUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1i
bGVyOjpSZWdpc3RlcklEOworICAgIHVzaW5nIFNQUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVy
OjpTUFJlZ2lzdGVySUQ7CisgICAgdXNpbmcgRlBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6
OkZQUmVnaXN0ZXJJRDsKKworICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogZ3ByTmFtZShS
ZWdpc3RlcklEIGlkKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6Z3ByTmFtZShpZCk7IH0KKyAg
ICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJl
dHVybiBNYWNyb0Fzc2VtYmxlcjo6c3ByTmFtZShpZCk7IH0KKyAgICBzdGF0aWMgaW5saW5lIGNv
bnN0IGNoYXIqIGZwck5hbWUoRlBSZWdpc3RlcklEIGlkKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxl
cjo6ZnByTmFtZShpZCk7IH0KKyAgICBpbmxpbmUgdWludHB0cl90JiBncHIoUmVnaXN0ZXJJRCk7
CisgICAgaW5saW5lIHVpbnRwdHJfdCYgc3ByKFNQUmVnaXN0ZXJJRCk7CisgICAgaW5saW5lIGRv
dWJsZSYgZnByKEZQUmVnaXN0ZXJJRCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0g
bnVsbHB0cj4KKyAgICBUIGdwcihSZWdpc3RlcklEKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVl
Pjo6dHlwZSogPSBudWxscHRyPgorICAgIFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IFQgZnByKEZQUmVnaXN0ZXJJRCkgY29uc3Q7CisKKyAgICB2b2lk
KiYgcGMoKTsKKyAgICB2b2lkKiYgZnAoKTsKKyAgICB2b2lkKiYgc3AoKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBUIHBjKCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBm
cCgpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgc3AoKSBjb25zdDsKKworICAg
IHVpbnRwdHJfdCBncHJzW01hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpXTsKKyAg
ICB1aW50cHRyX3Qgc3Byc1tNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZTUFJlZ2lzdGVycygpXTsK
KyAgICBkb3VibGUgZnByc1tNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygpXTsK
K307CisKK2lubGluZSB1aW50cHRyX3QmIENQVVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBpZCkKK3sK
KyAgICBBU1NFUlQoaWQgPj0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSAmJiBpZCA8
PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCkpOworICAgIHJldHVybiBncHJzW2lkXTsK
K30KKworaW5saW5lIHVpbnRwdHJfdCYgQ1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpCit7
CisgICAgQVNTRVJUKGlkID49IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFNQUmVnaXN0ZXIoKSAmJiBp
ZCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFNQUmVnaXN0ZXIoKSk7CisgICAgcmV0dXJuIHNwcnNb
aWRdOworfQorCitpbmxpbmUgZG91YmxlJiBDUFVTdGF0ZTo6ZnByKEZQUmVnaXN0ZXJJRCBpZCkK
K3sKKyAgICBBU1NFUlQoaWQgPj0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpICYm
IGlkIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpKTsKKyAgICByZXR1cm4gZnBy
c1tpZF07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSo+CitUIENQVVN0YXRlOjpncHIoUmVn
aXN0ZXJJRCBpZCkgY29uc3QKK3sKKyAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVT
dGF0ZSo+KHRoaXMpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihjcHUtPmdwcihpZCkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSo+CitUIENQVVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBp
ZCkgY29uc3QKK3sKKyAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRo
aXMpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+Z3ByKGlkKSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUIENQVVN0YXRlOjpmcHIoRlBSZWdpc3RlcklEIGlkKSBj
b25zdAoreworICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7
CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihjcHUtPmZwcihpZCkpOworfQorCitpbmxpbmUg
dm9pZComIENQVVN0YXRlOjpwYygpCit7CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAg
ICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmc3ByKFg4NlJlZ2lzdGVyczo6ZWlw
KSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4oJnNwcihBUk02NFJlZ2lzdGVyczo6cGMpKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoQVJNX1RSQURJVElPTkFMKQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KCZncHIoQVJNUmVnaXN0ZXJzOjpwYykpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIENQVSIKKyNl
bmRpZgorfQorCitpbmxpbmUgdm9pZComIENQVVN0YXRlOjpmcCgpCit7CisjaWYgQ1BVKFg4Nikg
fHwgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3By
KFg4NlJlZ2lzdGVyczo6ZWJwKSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk02NFJlZ2lzdGVyczo6ZnApKTsKKyNlbGlmIENQ
VShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQorICAgIHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNUmVnaXN0ZXJzOjpmcCkpOworI2VsaWYgQ1BVKE1J
UFMpCisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVnaXN0
ZXJzOjpmcCkpOworI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgQ1BVIgorI2VuZGlmCit9CisK
K2lubGluZSB2b2lkKiYgQ1BVU3RhdGU6OnNwKCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoWDg2UmVnaXN0
ZXJzOjplc3ApKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCoqPigmZ3ByKEFSTTY0UmVnaXN0ZXJzOjpzcCkpOworI2VsaWYgQ1BVKEFSTV9USFVN
QjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OnNwKSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKE1JUFNSZWdpc3RlcnM6OnNwKSk7
CisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBDUFUiCisjZW5kaWYKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK1QgQ1BVU3RhdGU6OnBjKCkgY29uc3QKK3sKKyAgICBDUFVTdGF0ZSogY3B1
ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFQ+KGNwdS0+cGMoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUIENQVVN0YXRl
OjpmcCgpIGNvbnN0Cit7CisgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUq
Pih0aGlzKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPmZwKCkpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVCBDUFVTdGF0ZTo6c3AoKSBjb25zdAoreworICAgIENQ
VVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5zcCgpKTsKK30KKworc3RydWN0IFN0YXRlOwordHlwZWRl
ZiB2b2lkICgqU3RhY2tJbml0aWFsaXphdGlvbkZ1bmN0aW9uKShTdGF0ZSopOworCitzdHJ1Y3Qg
U3RhdGUgeworICAgIFByb2JlOjpGdW5jdGlvbiBwcm9iZUZ1bmN0aW9uOworICAgIHZvaWQqIGFy
ZzsKKyAgICBTdGFja0luaXRpYWxpemF0aW9uRnVuY3Rpb24gaW5pdGlhbGl6ZVN0YWNrRnVuY3Rp
b247CisgICAgdm9pZCogaW5pdGlhbGl6ZVN0YWNrQXJnOworICAgIENQVVN0YXRlIGNwdTsKK307
CisKK2NsYXNzIENvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIHVzaW5nIFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRDsKKyAg
ICB1c2luZyBTUFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEOworICAg
IHVzaW5nIEZQUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ7CisKKyAg
ICBDb250ZXh0KFN0YXRlKiBzdGF0ZSkKKyAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgICAg
ICAsIGFyZyhzdGF0ZS0+YXJnKQorICAgICAgICAsIGNwdShzdGF0ZS0+Y3B1KQorICAgIHsgfQor
CisgICAgdWludHB0cl90JiBncHIoUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1
LmdwcihpZCk7IH0KKyAgICB1aW50cHRyX3QmIHNwcihTUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJu
IG1fc3RhdGUtPmNwdS5zcHIoaWQpOyB9CisgICAgZG91YmxlJiBmcHIoRlBSZWdpc3RlcklEIGlk
KSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnByKGlkKTsgfQorICAgIGNvbnN0IGNoYXIqIGdwck5h
bWUoUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1Lmdwck5hbWUoaWQpOyB9Cisg
ICAgY29uc3QgY2hhciogc3ByTmFtZShTUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUt
PmNwdS5zcHJOYW1lKGlkKTsgfQorICAgIGNvbnN0IGNoYXIqIGZwck5hbWUoRlBSZWdpc3RlcklE
IGlkKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnByTmFtZShpZCk7IH0KKworICAgIHZvaWQqJiBw
YygpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5wYygpOyB9CisgICAgdm9pZComIGZwKCkgeyByZXR1
cm4gbV9zdGF0ZS0+Y3B1LmZwKCk7IH0KKyAgICB2b2lkKiYgc3AoKSB7IHJldHVybiBtX3N0YXRl
LT5jcHUuc3AoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBwYygpIHsgcmV0dXJu
IG1fc3RhdGUtPmNwdS5wYzxUPigpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmcCgp
IHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcDxUPigpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gVCBzcCgpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5zcDxUPigpOyB9CisKKyAgICBTdGFjayYg
c3RhY2soKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc3RhY2suaXNWYWxpZCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fc3RhY2s7CisgICAgfTsKKworICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgp
IHsgcmV0dXJuIG1fc3RhY2suaGFzV3JpdGVzVG9GbHVzaCgpOyB9CisgICAgU3RhY2sqIHJlbGVh
c2VTdGFjaygpIHsgcmV0dXJuIG5ldyBTdGFjayhXVEZNb3ZlKG1fc3RhY2spKTsgfQorCitwcml2
YXRlOgorICAgIFN0YXRlKiBtX3N0YXRlOworcHVibGljOgorICAgIHZvaWQqIGFyZzsKKyAgICBD
UFVTdGF0ZSYgY3B1OworCitwcml2YXRlOgorICAgIFN0YWNrIG1fc3RhY2s7CisKKyAgICBmcmll
bmQgdm9pZCogcHJvYmVTdGF0ZUZvckNvbnRleHQoQ29udGV4dCYpOyAvLyBOb3QgZm9yIGdlbmVy
YWwgdXNlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGZvciB3cml0aW5nIHRlc3RzLgorfTsKKwordm9p
ZCBleGVjdXRlUHJvYmUoU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgUHJvYmUKKworfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2Jl
U3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVTdGFjay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Qcm9iZVN0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQcm9iZVN0YWNrLmgiCisKKyNpbmNsdWRlIDxtZW1vcnk+CisK
K25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIFByb2JlIHsKKworUGFnZTo6UGFnZSh2b2lkKiBi
YXNlQWRkcmVzcykKKyAgICA6IG1fYmFzZUxvZ2ljYWxBZGRyZXNzKGJhc2VBZGRyZXNzKQorewor
ICAgIG1lbWNweSgmbV9idWZmZXIsIGJhc2VBZGRyZXNzLCBzX3BhZ2VTaXplKTsKK30KKwordm9p
ZCBQYWdlOjpmbHVzaFdyaXRlcygpCit7CisgICAgdWludHB0cl90IGRpcnR5Qml0cyA9IG1fZGly
dHlCaXRzOworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIHdoaWxlIChkaXJ0eUJpdHMpIHsK
KyAgICAgICAgLy8gRmluZCBzdGFydC4KKyAgICAgICAgaWYgKGRpcnR5Qml0cyAmIDEpIHsKKyAg
ICAgICAgICAgIHNpemVfdCBzdGFydE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgICAgIC8vIEZp
bmQgZW5kLgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGRpcnR5Qml0cyA9IGRp
cnR5Qml0cyA+PiAxOworICAgICAgICAgICAgICAgIG9mZnNldCArPSBzX2NodW5rU2l6ZTsKKyAg
ICAgICAgICAgIH0gd2hpbGUgKGRpcnR5Qml0cyAmIDEpOworCisgICAgICAgICAgICBzaXplX3Qg
c2l6ZSA9IG9mZnNldCAtIHN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgdWludDhfdCogc3JjID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVyKSArIHN0YXJ0T2Zmc2V0OworICAg
ICAgICAgICAgdWludDhfdCogZHN0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9iYXNl
TG9naWNhbEFkZHJlc3MpICsgc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICBtZW1jcHkoZHN0LCBz
cmMsIHNpemUpOworICAgICAgICB9CisgICAgICAgIGRpcnR5Qml0cyA9IGRpcnR5Qml0cyA+PiAx
OworICAgICAgICBvZmZzZXQgKz0gc19jaHVua1NpemU7CisgICAgfQorICAgIG1fZGlydHlCaXRz
ID0gMDsKK30KKworU3RhY2s6OlN0YWNrKFN0YWNrJiYgb3RoZXIpCisgICAgOiBtX25ld1N0YWNr
UG9pbnRlcihvdGhlci5tX25ld1N0YWNrUG9pbnRlcikKKyAgICAsIG1fbG93V2F0ZXJtYXJrKG90
aGVyLm1fbG93V2F0ZXJtYXJrKQorICAgICwgbV9zdGFja0JvdW5kcyhXVEZNb3ZlKG90aGVyLm1f
c3RhY2tCb3VuZHMpKQorICAgICwgbV9wYWdlcyhXVEZNb3ZlKG90aGVyLm1fcGFnZXMpKQorewor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBvdGhlci5tX2lzVmFsaWQgPSBmYWxzZTsKKyNlbmRp
ZgorfQorCitib29sIFN0YWNrOjpoYXNXcml0ZXNUb0ZsdXNoKCkKK3sKKyAgICBmb3IgKGF1dG8g
aXQgPSBtX3BhZ2VzLmJlZ2luKCk7IGl0ICE9IG1fcGFnZXMuZW5kKCk7ICsraXQpIHsKKyAgICAg
ICAgaWYgKGl0LT52YWx1ZS0+aGFzV3JpdGVzVG9GbHVzaCgpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBTdGFjazo6Zmx1c2hX
cml0ZXMoKQoreworICAgIGZvciAoYXV0byBpdCA9IG1fcGFnZXMuYmVnaW4oKTsgaXQgIT0gbV9w
YWdlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5mbHVzaFdyaXRlc0lmTmVlZGVk
KCk7Cit9CisKK1BhZ2UqIFN0YWNrOjplbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3MpCit7Cisg
ICAgLy8gU2luY2UgdGhlIG1hY2hpbmUgc3RhY2sgaXMgYWx3YXlzIGFsbG9jYXRlZCBpbiB1bml0
cyBvZiB3aG9sZSBwYWdlcywgYXNzZXJ0aW5nCisgICAgLy8gdGhhdCB0aGUgYWRkcmVzcyBpcyBj
b250YWluZWQgaW4gdGhlIHN0YWNrIGlzIHN1ZmZpY2llbnQgdG8gaW5mZXIgdGhhdCBpdHMgcGFn
ZQorICAgIC8vIGlzIGFsc28gY29udGFpbmVkIGluIHRoZSBzdGFjay4KKyAgICBSRUxFQVNFX0FT
U0VSVChtX3N0YWNrQm91bmRzLmNvbnRhaW5zKGFkZHJlc3MpKTsKKworICAgIC8vIFdlIG1heSBo
YXZlIGdvdHRlbiBoZXJlIGJlY2F1c2Ugb2YgYSBjYWNoZSBtaXNzLiBTbywgbG9vayB1cCB0aGUg
cGFnZSBmaXJzdAorICAgIC8vIGJlZm9yZSBhbGxvY2F0aW5nIGEgbmV3IG9uZSwKKyAgICB2b2lk
KiBiYXNlQWRkcmVzcyA9IFBhZ2U6OmJhc2VBZGRyZXNzRm9yKGFkZHJlc3MpOworICAgIGF1dG8g
aXQgPSBtX3BhZ2VzLmZpbmQoYmFzZUFkZHJlc3MpOworICAgIGlmIChMSUtFTFkoaXQgIT0gbV9w
YWdlcy5lbmQoKSkpCisgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IGl0LT52YWx1ZS5nZXQo
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNzKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBt
X3BhZ2VzLmFkZChiYXNlQWRkcmVzcywgV1RGTW92ZShwYWdlKSk7CisgICAgICAgIG1fbGFzdEFj
Y2Vzc2VkUGFnZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgfQorICAgIG1f
bGFzdEFjY2Vzc2VkUGFnZUJhc2VBZGRyZXNzID0gYmFzZUFkZHJlc3M7CisgICAgcmV0dXJuIG1f
bGFzdEFjY2Vzc2VkUGFnZTsKK30KKworfSAvLyBuYW1lc3BhY2UgUHJvYmUKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0
YWNrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Q
cm9iZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBQcm9iZUNv
bnRleHQ7CisKK25hbWVzcGFjZSBQcm9iZSB7CisKK2NsYXNzIFBhZ2UgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFBhZ2Uodm9pZCogYmFzZUFkZHJlc3MpOwor
CisgICAgc3RhdGljIHZvaWQqIGJhc2VBZGRyZXNzRm9yKHZvaWQqIHApCisgICAgeworICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHApICYgfnNfcGFnZU1hc2spOworICAgIH0KKyAgICBzdGF0aWMgdm9pZCogY2h1bmtBZGRy
ZXNzRm9yKHZvaWQqIHApCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHApICYgfnNfY2h1bmtNYXNrKTsKKyAg
ICB9CisKKyAgICB2b2lkKiBiYXNlQWRkcmVzcygpIHsgcmV0dXJuIG1fYmFzZUxvZ2ljYWxBZGRy
ZXNzOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFQgZ2V0KHZvaWQqIGxvZ2lj
YWxBZGRyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuICpwaHlzaWNhbEFkZHJlc3NGb3I8VCo+
KGxvZ2ljYWxBZGRyZXNzKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IHZvaWQgc2V0KHZvaWQqIGxvZ2ljYWxBZGRyZXNzLCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAg
bV9kaXJ0eUJpdHMgfD0gZGlydHlCaXRGb3IobG9naWNhbEFkZHJlc3MpOworICAgICAgICAqcGh5
c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRkcmVzcykgPSB2YWx1ZTsKKyAgICB9CisKKyAg
ICBib29sIGhhc1dyaXRlc1RvRmx1c2goKSBjb25zdCB7IHJldHVybiAhIW1fZGlydHlCaXRzOyB9
CisgICAgdm9pZCBmbHVzaFdyaXRlc0lmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlmIChtX2Rp
cnR5Qml0cykKKyAgICAgICAgICAgIGZsdXNoV3JpdGVzKCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHVpbnRwdHJfdCBkaXJ0eUJpdEZvcih2b2lkKiBsb2dpY2FsQWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIHVpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obG9n
aWNhbEFkZHJlc3MpICYgc19wYWdlTWFzazsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMSkgPDwgKG9mZnNldCA+PiBzX2NodW5rU2l6ZVNoaWZ0KTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlPgorICAgIFQgcGh5c2ljYWxBZGRyZXNz
Rm9yKHZvaWQqIGxvZ2ljYWxBZGRyZXNzKQorICAgIHsKKyAgICAgICAgdWludHB0cl90IG9mZnNl
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihsb2dpY2FsQWRkcmVzcykgJiBzX3BhZ2VN
YXNrOworICAgICAgICB2b2lkKiBwaHlzaWNhbEFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPigmbV9idWZmZXIpICsgb2Zmc2V0OworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxUPihwaHlzaWNhbEFkZHJlc3MpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hXcml0ZXMo
KTsKKworICAgIHZvaWQqIG1fYmFzZUxvZ2ljYWxBZGRyZXNzIHsgbnVsbHB0ciB9OworICAgIHVp
bnRwdHJfdCBtX2RpcnR5Qml0cyB7IDAgfTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IHNfcGFnZVNpemUgPSAxMDI0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHNfcGFn
ZU1hc2sgPSBzX3BhZ2VTaXplIC0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzX2No
dW5rc1BlclBhZ2UgPSBzaXplb2YobV9kaXJ0eUJpdHMpICogODsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBzX2NodW5rU2l6ZSA9IHNfcGFnZVNpemUgLyBzX2NodW5rc1BlclBhZ2U7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qgc19jaHVua01hc2sgPSBzX2NodW5rU2l6ZSAt
IDE7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzX2No
dW5rU2l6ZVNoaWZ0ID0gNDsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc19j
aHVua1NpemVTaGlmdCA9IDU7CisjZW5kaWYKKyAgICBzdGF0aWNfYXNzZXJ0KHNfcGFnZVNpemUg
PiBzX2NodW5rU2l6ZSwgImJhZCBwYWdlU2l6ZSBvciBjaHVua1NpemUiKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHNfY2h1bmtTaXplID09ICgxIDw8IHNfY2h1bmtTaXplU2hpZnQpLCAiYmFkIGNodW5r
U2l6ZVNoaWZ0Iik7CisKKworICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3Jh
Z2U8c19wYWdlU2l6ZSwgc3RkOjphbGlnbm1lbnRfb2Y8dWludHB0cl90Pjo6dmFsdWU+Ojp0eXBl
IEJ1ZmZlcjsKKyAgICBCdWZmZXIgbV9idWZmZXI7Cit9OworCitjbGFzcyBTdGFjayB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU3RhY2soKQorICAgICAgICA6
IG1fbG93V2F0ZXJtYXJrKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkKKyAgICAgICAgLCBt
X3N0YWNrQm91bmRzKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkpCisgICAgeyB9CisgICAgU3Rh
Y2soU3RhY2smJiBvdGhlcik7CisKKyAgICB2b2lkKiBsb3dXYXRlcm1hcmsoKSB7IHJldHVybiBt
X2xvd1dhdGVybWFyazsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPGRvdWJsZSwgdHlwZW5hbWUgc3RkOjpyZW1v
dmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZSwgVD46OnR5cGUgZ2V0KHZvaWQqIGFkZHJlc3MpCisgICAg
eworICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKKyAgICAgICAgcmV0dXJu
IHBhZ2UtPmdldDxUPihhZGRyZXNzKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8ZG91Ymxl
LCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KKyAgICB2
b2lkIHNldCh2b2lkKiBhZGRyZXNzLCBUIHZhbHVlKQorICAgIHsKKyAgICAgICAgUGFnZSogcGFn
ZSA9IHBhZ2VGb3IoYWRkcmVzcyk7CisgICAgICAgIHBhZ2UtPnNldDxUPihhZGRyZXNzLCB2YWx1
ZSk7CisKKyAgICAgICAgLy8gV2UgdXNlIHRoZSBjaHVua0FkZHJlc3MgZm9yIHRoZSBsb3cgd2F0
ZXJtYXJrIGJlY2F1c2Ugd2UnbGwgYmUgZG9pbmcgd3JpdGUgYmFja3MKKyAgICAgICAgLy8gdG8g
dGhlIHN0YWNrIGluIGluY3JlbWVudHMgb2YgY2h1bmtzLiBIZW5jZSwgd2UnbGwgdHJlYXQgdGhl
IGxvd2VzdCBhZGRyZXNzIG9mCisgICAgICAgIC8vIHRoZSBjaHVuayBhcyB0aGUgbG93IHdhdGVy
bWFyayBvZiBhbnkgZ2l2ZW4gc2V0IGFkZHJlc3MuCisgICAgICAgIHZvaWQqIGNodW5rQWRkcmVz
cyA9IFBhZ2U6OmNodW5rQWRkcmVzc0ZvcihhZGRyZXNzKTsKKyAgICAgICAgaWYgKGNodW5rQWRk
cmVzcyA8IG1fbG93V2F0ZXJtYXJrKQorICAgICAgICAgICAgbV9sb3dXYXRlcm1hcmsgPSBjaHVu
a0FkZHJlc3M7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8ZG91YmxlLCB0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jdjxUPjo6dHlwZT46OnZhbHVlLCBUPjo6dHlwZSBnZXQodm9pZCogYWRkcmVzcykKKyAgICB7
CisgICAgICAgIFBhZ2UqIHBhZ2UgPSBwYWdlRm9yKGFkZHJlc3MpOworICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PGRvdWJsZT4ocGFnZS0+Z2V0PHVpbnQ2NF90PihhZGRyZXNzKSk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8ZG91YmxlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6
dHlwZT46OnZhbHVlPjo6dHlwZT4KKyAgICB2b2lkIHNldCh2b2lkKiBhZGRyZXNzLCBkb3VibGUg
dmFsdWUpCisgICAgeworICAgICAgICBzZXQ8dWludDY0X3Q+KGFkZHJlc3MsIGJpdHdpc2VfY2Fz
dDx1aW50NjRfdD4odmFsdWUpKTsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBQYWdl
KiBlbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3MpOworCisgICAgdm9pZCogbmV3U3RhY2tQb2lu
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9uZXdTdGFja1BvaW50ZXI7IH07CisgICAgdm9pZCBzZXRO
ZXdTdGFja1BvaW50ZXIodm9pZCogc3ApIHsgbV9uZXdTdGFja1BvaW50ZXIgPSBzcDsgfTsKKwor
ICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpOworICAgIHZvaWQgZmx1c2hXcml0ZXMoKTsKKwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGlzVmFsaWQoKSB7IHJldHVybiBtX2lzVmFs
aWQ7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIFBhZ2UqIHBhZ2VGb3Iodm9pZCogYWRkcmVz
cykKKyAgICB7CisgICAgICAgIGlmIChMSUtFTFkoUGFnZTo6YmFzZUFkZHJlc3NGb3IoYWRkcmVz
cykgPT0gbV9sYXN0QWNjZXNzZWRQYWdlQmFzZUFkZHJlc3MpKQorICAgICAgICAgICAgcmV0dXJu
IG1fbGFzdEFjY2Vzc2VkUGFnZTsKKyAgICAgICAgcmV0dXJuIGVuc3VyZVBhZ2VGb3IoYWRkcmVz
cyk7CisgICAgfQorCisgICAgdm9pZCogbV9uZXdTdGFja1BvaW50ZXIgeyBudWxscHRyIH07Cisg
ICAgdm9pZCogbV9sb3dXYXRlcm1hcms7CisKKyAgICAvLyBBIGNhY2hlIG9mIHRoZSBsYXN0IGFj
Y2Vzc2VkIHBhZ2UgZGV0YWlscyBmb3IgcXVpY2sgYWNjZXNzLgorICAgIHZvaWQqIG1fbGFzdEFj
Y2Vzc2VkUGFnZUJhc2VBZGRyZXNzIHsgbnVsbHB0ciB9OworICAgIFBhZ2UqIG1fbGFzdEFjY2Vz
c2VkUGFnZSB7IG51bGxwdHIgfTsKKworICAgIFN0YWNrQm91bmRzIG1fc3RhY2tCb3VuZHM7Cisg
ICAgSGFzaE1hcDx2b2lkKiwgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+PiBtX3BhZ2VzOworCisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorICAgIGJvb2wgbV9pc1ZhbGlkIHsgdHJ1ZSB9OworI2VuZGlmCit9
OworCit9IC8vIG5hbWVzcGFjZSBQcm9iZQorfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2aXNpb24gMjIw
OTM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5j
bHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNp
bmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNpbmNs
dWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNjEsMTIg
KzYyLDIwIEBAIHN0YXRpYyB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG8KIH0gLy8g
bmFtZXNwYWNlIFdURgogI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQogCituYW1lc3BhY2Ug
SlNDIHsKK25hbWVzcGFjZSBQcm9iZSB7CisKK3ZvaWQqIHByb2JlU3RhdGVGb3JDb250ZXh0KFBy
b2JlOjpDb250ZXh0Jik7CisKK30gLy8gbmFtZXNwYWNlIFByb2JlCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIHsKIAogI2lmIEVOQUJMRShN
QVNNX1BST0JFKQotdXNpbmcgQ1BVU3RhdGUgPSBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU7Cit1
c2luZyBDUFVTdGF0ZSA9IFByb2JlOjpDUFVTdGF0ZTsKICNlbmRpZgogCiBTdGF0aWNMb2NrIGNy
YXNoTG9jazsKQEAgLTE4NCw4ICsxOTMsOCBAQCB2b2lkIHRlc3RQcm9iZVJlYWRzQXJndW1lbnRS
ZWdpc3RlcnMoKQogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0
ZXN0V29yZCgzKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAjZW5kaWYKIAotICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGF1dG8m
IGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRl
eHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAg
ICAgICAgICAgcHJvYmVXYXNDYWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1
LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0V29yZCgwKSk7CiAgICAgICAgICAgICBD
SEVDS19FUShjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMSksIHRlc3RXb3JkKDEpKTsKQEAg
LTIyNiw4ICsyMzUsOCBAQCB2b2lkIHRlc3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkK
ICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
RlBSSW5mbzo6ZnBSZWdUMSk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIGNwdS5ncHIo
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSA9IHRlc3RXb3JkKDApOwogICAgICAgICAgICAgY3B1Lmdw
cihHUFJJbmZvOjphcmd1bWVudEdQUjEpID0gdGVzdFdvcmQoMSk7CkBAIC0yMzksOCArMjQ4LDgg
QEAgdm9pZCB0ZXN0UHJvYmVXcml0ZXNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAgICAgIH0pOwog
CiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgZXhwZWN0ZWQgdmFsdWVzIHdlcmUgd3JpdHRlbi4K
LSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKiBjb250ZXh0KSB7Ci0gICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7CisgICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0
LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBDSEVDS19F
UShjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCksIHRlc3RXb3JkKDApKTsKICAgICAgICAg
ICAgIENIRUNLX0VRKGNwdS5ncHIoR1BSSW5mbzo6YXJndW1lbnRHUFIxKSwgdGVzdFdvcmQoMSkp
OwpAQCAtMjgyLDggKzI5MSw4IEBAIHZvaWQgdGVzdFByb2JlUHJlc2VydmVzR1BSUygpCiAgICAg
ICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAgICAgICAgIC8vIFdyaXRlIGV4cGVj
dGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMgKGV4Y2VwdCBmb3Igc3AsIGZwLCBhbmQgcGMp
LgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAgaml0LnByb2JlKFsmXSAo
UHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRl
eHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIGZvciAo
YXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBl
cnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKICAgICAgICAgICAgICAgICBv
cmlnaW5hbFN0YXRlLmdwcihpZCkgPSBjcHUuZ3ByKGlkKTsKQEAgLTI5OCwxNSArMzA3LDE1IEBA
IHZvaWQgdGVzdFByb2JlUHJlc2VydmVzR1BSUygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8v
IEludm9rZSB0aGUgcHJvYmUgdG8gY2FsbCBhIGxvdCBvZiBmdW5jdGlvbnMgYW5kIHRyYXNoIHJl
Z2lzdGVyIHZhbHVlcy4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKikgewor
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHBy
b2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rpb25Ub1RyYXNo
R1BScygwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAgICAgICAgQ0hF
Q0tfRVEodGVzdEZ1bmN0aW9uVG9UcmFzaEZQUnMoMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSksIDEwKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgcmVn
aXN0ZXJzIGhhdmUgdGhlIGV4cGVjdGVkIHZhbHVlcy4KLSAgICAgICAgaml0LnByb2JlKFsmXSAo
UHJvYmU6OlN0YXRlKiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0
LT5jcHU7CisgICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2Jl
Q2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZp
cnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBu
ZXh0SUQoaWQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzU1AoaWQpIHx8IGlzRlAoaWQpKSB7
CkBAIC0zMjIsOCArMzMxLDggQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAg
ICAgfSk7CiAKICAgICAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgc3RhdGUuCi0gICAgICAg
IGppdC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0
byYgY3B1ID0gY29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAg
ICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0g
Q0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJl
Z2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewogICAgICAgICAgICAgICAgIGlmIChpc1NwZWNp
YWxHUFIoaWQpKQpAQCAtMzM1LDggKzM0NCw4IEBAIHZvaWQgdGVzdFByb2JlUHJlc2VydmVzR1BS
UygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIG9yaWdpbmFs
IHN0YXRlIHdhcyByZXN0b3JlZC4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRl
KiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7CisgICAg
ICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIo
KTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGlzU3BlY2lhbEdQUihpZCkpCkBAIC0zNTMsNyArMzYyLDcg
QEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICBDSEVDS19FUShwcm9iZUNhbGxD
b3VudCwgNSk7CiB9CiAKLXZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpG
dW5jdGlvbjx2b2lkKihQcm9iZTo6U3RhdGUqKT4gY29tcHV0ZU1vZGlmaWVkU3RhY2spCit2b2lk
IHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6
OkNvbnRleHQmKT4gY29tcHV0ZU1vZGlmaWVkU3RhY2spCiB7CiAgICAgdW5zaWduZWQgcHJvYmVD
YWxsQ291bnQgPSAwOwogICAgIENQVVN0YXRlIG9yaWdpbmFsU3RhdGU7CkBAIC0zNzcsOCArMzg2
LDggQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OgogCiAgICAgICAg
IC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIgYW5kIG1vZGlmeSB0aGUgc3AsIGFu
ZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byBvdGhlciByZWdpc3RlcnMg
KGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpT
dGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC0+Y3B1Owor
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3Vu
dCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lz
dGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlk
KSkgewogICAgICAgICAgICAgICAgIG9yaWdpbmFsU3RhdGUuZ3ByKGlkKSA9IGNwdS5ncHIoaWQp
OwpAQCAtNDAxLDggKzQxMCw4IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIo
V1RGOjoKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgcmVnaXN0
ZXJzIGhhdmUgdGhlIGV4cGVjdGVkIHZhbHVlcy4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJv
YmU6OlN0YXRlKiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5j
cHU7CisgICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2Fs
bENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0
UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0
SUQoaWQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzRlAoaWQpKSB7CkBAIC00MjAsOCArNDI5
LDggQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OgogICAgICAgICB9
KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAgICAgICAgaml0
LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBj
cHUgPSBjb250ZXh0LT5jcHU7CisgICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0
JiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAg
ICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2Fs
bEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0
ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzU3BlY2lhbEdQ
UihpZCkpCkBAIC00MzUsOCArNDQ0LDggQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9p
bnRlcihXVEY6OgogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBv
cmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9yZWQuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2Jl
OjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC0+Y3B1
OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxD
b3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJl
Z2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElE
KGlkKSkgewogICAgICAgICAgICAgICAgIGlmIChpc1NwZWNpYWxHUFIoaWQpKQpAQCAtNDYzLDgg
KzQ3Miw5IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXJUb0luc2kKICAgICBp
bmNyZW1lbnQgPSAyICogc2l6ZW9mKHVpbnRwdHJfdCk7CiAjZW5kaWYKICAgICBmb3IgKHNpemVf
dCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBzaXplb2YoUHJvYmU6OlN0YXRlKTsgb2Zmc2V0ICs9IGlu
Y3JlbWVudCkgewotICAgICAgICB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihbPV0gKFBy
b2JlOjpTdGF0ZSogY29udGV4dCkgLT4gdm9pZCogewotICAgICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGNvbnRleHQpICsgb2Zmc2V0OworICAgICAgICB0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrUG9pbnRlcihbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSAtPiB2
b2lkKiB7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocHJv
YmVTdGF0ZUZvckNvbnRleHQoY29udGV4dCkpICsgb2Zmc2V0OworCiAgICAgICAgIH0pOwogICAg
IH0KIH0KQEAgLTQ3Nyw4ICs0ODcsOCBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2lu
dGVyVG9OQnl0CiAgICAgaW5jcmVtZW50ID0gMiAqIHNpemVvZih1aW50cHRyX3QpOwogI2VuZGlm
CiAgICAgZm9yIChzaXplX3Qgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgMSAqIEtCOyBvZmZzZXQgKz0g
aW5jcmVtZW50KSB7Ci0gICAgICAgIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFs9XSAo
UHJvYmU6OlN0YXRlKiBjb250ZXh0KSAtPiB2b2lkKiB7Ci0gICAgICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oY29udGV4dC0+Y3B1LnNwKCkpIC0gb2Zmc2V0OworICAg
ICAgICB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihbPV0gKFByb2JlOjpDb250ZXh0JiBj
b250ZXh0KSAtPiB2b2lkKiB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcHUuc3A8dWlu
dDhfdCo+KCkgLSBvZmZzZXQ7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTQ5Myw3ICs1MDMs
NyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIoKQogCiAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGNvbnRpbnVhdGlvbiA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCkgewogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHdlIHJlYWNoZWQgdGhlIGNvbnRpbnVh
dGlvbi4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKikgeworICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENv
dW50Kys7CiAgICAgICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAg
ICAgfSk7CkBAIC01MDYsOSArNTE2LDkgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1Byb2dyYW1D
b3VudGVyKCkKICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAKICAgICAgICAg
Ly8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzIGludG8gdGhlIHJlZ2lzdGVycy4KLSAgICAgICAgaml0
LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3Vu
dCsrOwotICAgICAgICAgICAgY29udGV4dC0+cGMoKSA9IGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIGNvbnRleHQuY3B1LnBjKCkgPSBjb250aW51
YXRpb24uY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgIH0pOwogCiAgICAgICAg
IGppdC5icmVha3BvaW50KCk7IC8vIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZS4KQEAgLTUxNyw3
MSArNTI3LDIzIEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNQcm9ncmFtQ291bnRlcigpCiAgICAg
Q0hFQ0tfRVEoY29udGludWF0aW9uV2FzUmVhY2hlZCwgdHJ1ZSk7CiB9CiAKLXN0cnVjdCBGaWxs
U3RhY2tEYXRhIHsKK3ZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1dpdGhDYWxsYmFjaygpCit7
CisgICAgdW5zaWduZWQgcHJvYmVDYWxsQ291bnQgPSAwOwogICAgIENQVVN0YXRlIG9yaWdpbmFs
U3RhdGU7CiAgICAgdm9pZCogb3JpZ2luYWxTUCB7IG51bGxwdHIgfTsKICAgICB2b2lkKiBuZXdT
UCB7IG51bGxwdHIgfTsKICAgICB1aW50cHRyX3QgbW9kaWZpZWRGbGFncyB7IDAgfTsKLSAgICBN
YWNyb0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEIGZsYWdzU1BSOwotfTsKLQotc3RhdGljIHZvaWQg
ZmlsbFN0YWNrKFByb2JlOjpTdGF0ZSogY29udGV4dCkKLXsKLSAgICBhdXRvJiBjcHUgPSBjb250
ZXh0LT5jcHU7Ci0KLSAgICBGaWxsU3RhY2tEYXRhJiBkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8
RmlsbFN0YWNrRGF0YSo+KGNvbnRleHQtPmluaXRpYWxpemVTdGFja0FyZyk7Ci0gICAgQ1BVU3Rh
dGUmIG9yaWdpbmFsU3RhdGUgPSBkYXRhLm9yaWdpbmFsU3RhdGU7Ci0gICAgdm9pZComIG9yaWdp
bmFsU1AgPSBkYXRhLm9yaWdpbmFsU1A7Ci0gICAgdm9pZComIG5ld1NQID0gZGF0YS5uZXdTUDsK
LSAgICB1aW50cHRyX3QmIG1vZGlmaWVkRmxhZ3MgPSBkYXRhLm1vZGlmaWVkRmxhZ3M7Ci0gICAg
TWFjcm9Bc3NlbWJsZXI6OlNQUmVnaXN0ZXJJRCYgZmxhZ3NTUFIgPSBkYXRhLmZsYWdzU1BSOwot
Ci0gICAgQ0hFQ0tfRVEocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC0+aW5pdGlhbGl6
ZVN0YWNrRnVuY3Rpb24pLCByZWludGVycHJldF9jYXN0PHZvaWQqPihmaWxsU3RhY2spKTsKLSAg
ICBDSEVDS19FUShjcHUuc3AoKSwgbmV3U1ApOwotCi0gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHBy
b2JlIGhhcyBwdXQgdGhlIFByb2JlOjpTdGF0ZSBvdXQgb2YgaGFybSdzIHdheS4KLSAgICBDSEVD
S19FUSgocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dCArIDEpIDw9IGNwdS5zcCgpKSwg
dHJ1ZSk7Ci0KLSAgICAvLyBWZXJpZnkgdGhlIENQVSBzdGF0ZS4KLSAgICBmb3IgKGF1dG8gaWQg
PSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0
UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7Ci0gICAgICAgIGlmIChpc0ZQKGlkKSkgewot
ICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmdwcihpZCksIG9yaWdpbmFsU3RhdGUuZ3ByKGlkKSk7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNTcGVjaWFs
R1BSKGlkKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDSEVDS19FUShjcHUuZ3By
KGlkKSwgdGVzdFdvcmQoaWQpKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxw
ZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdpc3Rl
cigpOyBpZCA9IG5leHRJRChpZCkpCi0gICAgICAgIENIRUNLX0VRKGNwdS5mcHI8dWludDY0X3Q+
KGlkKSwgdGVzdFdvcmQ2NChpZCkpOwotICAgIENIRUNLX0VRKGNwdS5zcHIoZmxhZ3NTUFIpLCBt
b2RpZmllZEZsYWdzKTsKLQotICAgIC8vIEZpbGwgdGhlIHN0YWNrIHdpdGggdmFsdWVzLgotICAg
IHVpbnRwdHJfdCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4obmV3U1ApOwotICAg
IGludCBjb3VudCA9IDA7Ci0gICAgd2hpbGUgKHAgPCByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dCo+KG9yaWdpbmFsU1ApKQotICAgICAgICAqcCsrID0gdGVzdFdvcmQoY291bnQrKyk7Ci19Owot
Ci12b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tXaXRoQ2FsbGJhY2soKQotewotICAgIHVuc2ln
bmVkIHByb2JlQ2FsbENvdW50ID0gMDsKLSAgICBGaWxsU3RhY2tEYXRhIGRhdGE7Ci0gICAgQ1BV
U3RhdGUmIG9yaWdpbmFsU3RhdGUgPSBkYXRhLm9yaWdpbmFsU3RhdGU7Ci0gICAgdm9pZComIG9y
aWdpbmFsU1AgPSBkYXRhLm9yaWdpbmFsU1A7Ci0gICAgdm9pZComIG5ld1NQID0gZGF0YS5uZXdT
UDsKLSAgICB1aW50cHRyX3QmIG1vZGlmaWVkRmxhZ3MgPSBkYXRhLm1vZGlmaWVkRmxhZ3M7Ci0g
ICAgc2l6ZV90IG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0ZSA9IDEwOyAvLyBBUk02NCByZXF1
aXJlcyB0aGF0IHRoaXMgYmUgMiB3b3JkIGFsaWduZWQuCi0gICAgTWFjcm9Bc3NlbWJsZXI6OlNQ
UmVnaXN0ZXJJRCYgZmxhZ3NTUFIgPSBkYXRhLmZsYWdzU1BSOworICAgIHNpemVfdCBudW1iZXJP
ZkV4dHJhRW50cmllc1RvV3JpdGUgeyAxMCB9OyAvLyBBUk02NCByZXF1aXJlcyB0aGF0IHRoaXMg
YmUgMiB3b3JkIGFsaWduZWQuCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgIGZs
YWdzU1BSID0gWDg2UmVnaXN0ZXJzOjplZmxhZ3M7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlNQUmVn
aXN0ZXJJRCBmbGFnc1NQUiA9IFg4NlJlZ2lzdGVyczo6ZWZsYWdzOwogICAgIHVpbnRwdHJfdCBm
bGFnc01hc2sgPSAweGM1OwogI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElU
SU9OQUwpCi0gICAgZmxhZ3NTUFIgPSBBUk1SZWdpc3RlcnM6OmFwc3I7CisgICAgTWFjcm9Bc3Nl
bWJsZXI6OlNQUmVnaXN0ZXJJRCBmbGFnc1NQUiA9IEFSTVJlZ2lzdGVyczo6YXBzcjsKICAgICB1
aW50cHRyX3QgZmxhZ3NNYXNrID0gMHhmMDAwMDAwMDsKICNlbGlmIENQVShBUk02NCkKLSAgICBm
bGFnc1NQUiA9IEFSTTY0UmVnaXN0ZXJzOjpuemN2OworICAgIE1hY3JvQXNzZW1ibGVyOjpTUFJl
Z2lzdGVySUQgZmxhZ3NTUFIgPSBBUk02NFJlZ2lzdGVyczo6bnpjdjsKICAgICB1aW50cHRyX3Qg
ZmxhZ3NNYXNrID0gMHhmMDAwMDAwMDsKICNlbmRpZgogCkBAIC01ODksOCArNTUxLDkgQEAgdm9p
ZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrV2l0aENhbGxiYWNrKAogICAgICAgICBqaXQuZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50
byB0aGUgcmVnaXN0ZXJzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNv
bnRleHQpIHsKLSAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAg
aml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1
dG8mIGNwdSA9IGNvbnRleHQuY3B1OworICAgICAgICAgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0
LnN0YWNrKCk7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogCiAgICAgICAgICAgICAv
LyBQcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgQ1BVIHN0YXRlLgpAQCAtNjA4LDIxICs1NzEsMjMgQEAg
dm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrV2l0aENhbGxiYWNrKAogICAgICAgICAgICAgbW9k
aWZpZWRGbGFncyA9IG9yaWdpbmFsU3RhdGUuc3ByKGZsYWdzU1BSKSBeIGZsYWdzTWFzazsKICAg
ICAgICAgICAgIGNwdS5zcHIoZmxhZ3NTUFIpID0gbW9kaWZpZWRGbGFnczsKIAotICAgICAgICAg
ICAgQ0hFQ0tfRVEocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC0+aW5pdGlhbGl6ZVN0
YWNrRnVuY3Rpb24pLCAwKTsKLQotICAgICAgICAgICAgLy8gUHJlcGFyZSBmb3IgaW5pdGlhbGl6
ZVN0YWNrIGNhbGxiYWNrLgotICAgICAgICAgICAgY29udGV4dC0+aW5pdGlhbGl6ZVN0YWNrRnVu
Y3Rpb24gPSBmaWxsU3RhY2s7Ci0gICAgICAgICAgICBjb250ZXh0LT5pbml0aWFsaXplU3RhY2tB
cmcgPSAmZGF0YTsKLQogICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UnbGwgYmUgd3JpdGlu
ZyBvdmVyIHRoZSByZWdpb25zIG9mIHRoZSBzdGFjayB3aGVyZSB0aGUgUHJvYmU6OlN0YXRlIGlz
LgogICAgICAgICAgICAgb3JpZ2luYWxTUCA9IGNwdS5zcCgpOwotICAgICAgICAgICAgbmV3U1Ag
PSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCo+KGNvbnRleHQpIC0gbnVtYmVyT2ZFeHRyYUVu
dHJpZXNUb1dyaXRlOworICAgICAgICAgICAgbmV3U1AgPSByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdCo+KHByb2JlU3RhdGVGb3JDb250ZXh0KGNvbnRleHQpKSAtIG51bWJlck9mRXh0cmFFbnRy
aWVzVG9Xcml0ZTsKICAgICAgICAgICAgIGNwdS5zcCgpID0gbmV3U1A7CisKKyAgICAgICAgICAg
IC8vIEZpbGwgdGhlIHN0YWNrIHdpdGggdmFsdWVzLgorICAgICAgICAgICAgdWludHB0cl90KiBw
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPihuZXdTUCk7CisgICAgICAgICAgICBpbnQg
Y291bnQgPSAwOworICAgICAgICAgICAgc3RhY2suc2V0PGRvdWJsZT4ocCsrLCAxLjIzNDU2Nzg5
KTsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPihv
cmlnaW5hbFNQKSkKKyAgICAgICAgICAgICAgICBzdGFjay5zZXQ8dWludHB0cl90PihwKyssIHRl
c3RXb3JkKGNvdW50KyspKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhh
dCB0aGUgcmVnaXN0ZXJzIGFuZCBzdGFjayBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMuCi0gICAg
ICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAg
YXV0byYgY3B1ID0gY29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7
CisgICAgICAgICAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKICAgICAgICAgICAg
IHByb2JlQ2FsbENvdW50Kys7CiAKICAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSByZWdpc3Rl
ciB2YWx1ZXMuCkBAIC02NDAsMTYgKzYwNSwxNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3Rh
Y2tXaXRoQ2FsbGJhY2soCiAgICAgICAgICAgICBDSEVDS19FUShjcHUuc3ByKGZsYWdzU1BSKSwg
bW9kaWZpZWRGbGFncyk7CiAgICAgICAgICAgICBDSEVDS19FUShjcHUuc3AoKSwgbmV3U1ApOwog
Ci0gICAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgc3RhY2sgd2l0aCB2YWx1ZXMuCisgICAgICAg
ICAgICAvLyBWYWxpZGF0ZSB0aGUgc3RhY2sgdmFsdWVzLgogICAgICAgICAgICAgdWludHB0cl90
KiBwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPihuZXdTUCk7CiAgICAgICAgICAgICBp
bnQgY291bnQgPSAwOworICAgICAgICAgICAgQ0hFQ0tfRVEoc3RhY2suZ2V0PGRvdWJsZT4ocCsr
KSwgMS4yMzQ1Njc4OSk7CiAgICAgICAgICAgICB3aGlsZSAocCA8IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Kj4ob3JpZ2luYWxTUCkpCi0gICAgICAgICAgICAgICAgQ0hFQ0tfRVEoKnArKywg
dGVzdFdvcmQoY291bnQrKykpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHN0YWNrLmdldDx1
aW50cHRyX3Q+KHArKyksIHRlc3RXb3JkKGNvdW50KyspKTsKICAgICAgICAgfSk7CiAKICAgICAg
ICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgc3RhdGUuCi0gICAgICAgIGppdC5wcm9iZShbJl0g
KFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4
dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9i
ZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpm
aXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0g
bmV4dElEKGlkKSkgewogICAgICAgICAgICAgICAgIGlmIChpc1NwZWNpYWxHUFIoaWQpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318593</attachid>
            <date>2017-08-19 16:32:15 -0700</date>
            <delta_ts>2017-08-20 17:13:53 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-175688.patch</filename>
            <type>text/plain</type>
            <size>126313</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwOTU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2MyBA
QAorMjAxNy0wOC0xOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoKSB0byBhbGxvdyB0aGUgcHJvYmUgZnVuY3Rp
b24gdG8gcmVzaXplIHRoZSBzdGFjayBmcmFtZSBhbmQgYWx0ZXIgc3RhY2sgZGF0YSBpbiBvbmUg
cGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTY4OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM0MzY4NzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCB0aGUgY2xp
ZW50cyBvZiB0aGUgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKCkgY2FuIG5vdyBjaGFuZ2UKKyAgICAg
ICAgc3RhY2sgdmFsdWVzIHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IHdoZXRoZXIgdGhl
cmUgaXMgZW5vdWdoIHJvb20gaW4gdGhlCisgICAgICAgIGN1cnJlbnQgc3RhY2sgZnJhbWUgZm9y
IGl0IG9yIG5vdC4gIFRoaXMgaXMgZG9uZSB1c2luZyB0aGUgUHJvYmU6OkNvbnRleHQncyBzdGFj
aworICAgICAgICBtZW1iZXIgbGlrZSBzbzoKKworICAgICAgICAgICAgaml0LnByb2JlKFtdIChQ
cm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGF1dG8gY3B1ID0gY29u
dGV4dC5jcHU7CisgICAgICAgICAgICAgICAgYXV0byBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsK
KyAgICAgICAgICAgICAgICB1aW50cHRyX3QqIGN1cnJlbnRTUCA9IGNwdS5zcDx1aW50cHRyX3Qq
PigpOworCisgICAgICAgICAgICAgICAgLy8gR2V0IGEgdmFsdWUgYXQgdGhlIGN1cnJlbnQgc3Rh
Y2sgcG9pbnRlciBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlID0gc3RhY2su
Z2V0PHVpbnRwdHJfdD4oY3VycmVudFNQKTsKKworICAgICAgICAgICAgICAgIC8vIFNldCBhIHZh
bHVlIGFib3ZlIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIgKHdpdGhpbiBjdXJyZW50IGZyYW1l
KS4KKyAgICAgICAgICAgICAgICBzdGFjay5zZXQ8dWludHB0cl90PihjdXJyZW50U1AgKyAxMCwg
dmFsdWUpOworCisgICAgICAgICAgICAgICAgLy8gU2V0IGEgdmFsdWUgYmVsb3cgdGhlIGN1cnJl
bnQgc3RhY2sgcG9pbnRlciAob3V0IG9mIGN1cnJlbnQgZnJhbWUpLgorICAgICAgICAgICAgICAg
IHN0YWNrLnNldDx1aW50cHRyX3Q+KGN1cnJlbnRTUCAtIDEwLCB2YWx1ZSk7CisKKyAgICAgICAg
ICAgICAgICAvLyBTZXQgdGhlIG5ldyBzdGFjayBwb2ludGVyLgorICAgICAgICAgICAgICAgIGNw
dS5zcCgpID0gY3VycmVudFNQIC0gMjA7CisgICAgICAgICAgICB9KTsKKworICAgICAgICBXaGF0
IGhhcHBlbnMgYmVoaW5kIHRoZSBzY2VuZToKKworICAgICAgICAxLiB0aGUgZ2VuZXJhdGVkIEpJ
VCBwcm9iZSBjb2RlIHdpbGwgbm93IGNhbGwgUHJvYmU6OmV4ZWN1dGVQcm9iZSgpLCBhbmQKKyAg
ICAgICAgICAgUHJvYmU6OmV4ZWN1dGVQcm9iZSgpIHdpbGwgaW4gdHVybiBjYWxsIHRoZSBjbGll
bnQncyBwcm9iZSBmdW5jdGlvbi4KKworICAgICAgICAgICBQcm9iZTo6ZXhlY3V0ZVByb2JlKCkg
cmVjZWl2ZXMgdGhlIFByb2JlOjpTdGF0ZSBvbiB0aGUgbWFjaGluZSBzdGFjayBwYXNzZWQKKyAg
ICAgICAgICAgdG8gaXQgYnkgdGhlIHByb2JlIHRyYW1wb2xpbmUuICBQcm9iZTo6ZXhlY3V0ZVBy
b2JlKCkgd2lsbCBpbnN0YW50aWF0ZSBhCisgICAgICAgICAgIFByb2JlOjpDb250ZXh0IHRvIGJl
IHBhc3NlZCB0byB0aGUgY2xpZW50J3MgcHJvYmUgZnVuY3Rpb24uICBUaGUgY2xpZW50IHdpbGwK
KyAgICAgICAgICAgbm8gbG9uZ2VyIHNlZSB0aGUgUHJvYmU6OlN0YXRlIGRpcmVjdGx5LgorCisg
ICAgICAgIDIuIFRoZSBQcm9iZTo6Q29udGV4dCBjb21lcyB3aXRoIGEgUHJvYmU6OlN0YWNrIHdo
aWNoIHNlcnZlcyBhcyBhIG1hbmFnZXIgb2YKKyAgICAgICAgICAgc3RhY2sgcGFnZXMuICBDdXJy
ZW50bHksIGVhY2ggcGFnZSBpcyAxSyBpbiBzaXplLgorICAgICAgICAgICBQcm9iZTo6Q29udGV4
dDo6c3RhY2soKSByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIGFuIGluc3RhbmNlIG9mIFByb2JlOjpT
dGFjay4KKworICAgICAgICAzLiBJbnZva2luZyBnZXQoKSBvZiBzZXQoKSBvbiBQcm9iZTo6U3Rh
Y2sgd2l0aCBhbiBhZGRyZXNzIHdpbGwgbGVhZCB0byB0aGUKKyAgICAgICAgICAgZm9sbG93aW5n
OgorCisgICAgICAgICAgIGEuIHRoZSBhZGRyZXNzIHdpbGwgYmUgZGVjb2RlZCB0byBhIGJhc2VB
ZGRyZXNzIHRoYXQgcG9pbnRzIHRvIHRoZSAxSyBwYWdlCisgICAgICAgICAgICAgIHRoYXQgY29u
dGFpbnMgdGhhdCBhZGRyZXNzLgorCisgICAgICAgICAgIGIuIHRoZSBQcm9iZTo6U3RhY2sgd2ls
bCBjaGVjayBpZiBpdCBhbHJlYWR5IGhhcyBhIGNhY2hlZCAxSyBwYWdlIGZvciB0aGF0IGJhc2VB
ZGRyZXNzLgorICAgICAgICAgICAgICBJZiBzbywgZ28gdG8gc3RlcCAoZikuICBFbHNlLCBjb250
aW51ZSB3aXRoIHN0ZXAgKGMpLgorCisgICAgICAgICAgIGMuIHRoZSBQcm9iZTo6U3RhY2sgd2ls
bCBtYWxsb2MgYSAxSyBtaXJyb3IgcGFnZSwgYW5kIG1lbWNweSB0aGUgMUsgc3RhY2sgcGFnZQor
ICAgICAgICAgICAgICBmb3IgdGhhdCBzcGVjaWZpZWQgYmFzZUFkZHJlc3MgdG8gdGhpcyBtaXJy
b3IgcGFnZS4KKworICAgICAgICAgICBkLiB0aGUgbWlycm9yIHBhZ2Ugd2lsbCBiZSBhZGRlZCB0
byB0aGUgUHJvYmVTdGFjaydzIG1fcGFnZXMgSGFzaE1hcCwKKyAgICAgICAgICAgICAga2V5ZWQg
b24gdGhlIGJhc2VBZGRyZXNzLgorCisgICAgICAgICAgIGUuIHRoZSBQcm9iZVN0YWNrIHdpbGwg
YWxzbyBjYWNoZSB0aGUgbGFzdCBiYXNlQWRkcmVzcyBhbmQgaXRzIGNvcnJlc3BvbmRpbmcKKyAg
ICAgICAgICAgICAgbWlycm9yIHBhZ2UgaW4gdXNlLiAgV2l0aCBtZW1vcnkgYWNjZXNzZXMgdGVu
ZGluZyB0byBiZSBsb2NhbGl6ZWQsIHRoaXMKKyAgICAgICAgICAgICAgd2lsbCBzYXZlIHVzIGZy
b20gaGF2aW5nIHRvIGxvb2sgdXAgdGhlIHBhZ2UgaW4gdGhlIEhhc2hNYXAuCisKKyAgICAgICAg
ICAgZi4gZ2V0KCkgd2lsbCBtYXAgdGhlIHJlcXVlc3RlZCBhZGRyZXNzIHRvIGEgcGh5c2ljYWwg
YWRkcmVzcyBpbiB0aGUgbWlycm9yCisgICAgICAgICAgICAgIHBhZ2UsIGFuZCByZXR1cm4gdGhl
IHZhbHVlIGF0IHRoYXQgbG9jYXRpb24uCisKKyAgICAgICAgICAgZy4gc2V0KCkgd2lsbCBtYXAg
dGhlIHJlcXVlc3RlZCBhZGRyZXNzIHRvIGEgcGh5c2ljYWwgYWRkcmVzcyBpbiB0aGUgbWlycm9y
CisgICAgICAgICAgICAgIHBhZ2UsIGFuZCBzZXQgdGhlIHZhbHVlIGF0IHRoYXQgbG9jYXRpb24g
aW4gdGhlIG1pcnJvciBwYWdlLgorCisgICAgICAgICAgICAgIHNldCgpIHdpbGwgYWxzbyBzZXQg
YSBkaXJ0eSBiaXQgY29ycmVzcG9uZGluZyB0byB0aGUgImNhY2hlIGxpbmUiIHRoYXQKKyAgICAg
ICAgICAgICAgd2FzIG1vZGlmaWVkIGluIHRoZSBtaXJyb3IgcGFnZS4KKworICAgICAgICA0LiBX
aGVuIHRoZSBjbGllbnQncyBwcm9iZSBmdW5jdGlvbiByZXR1cm5zLCBQcm9iZTo6ZXhlY3V0ZVBy
b2JlKCkgd2lsbCBjaGVjayBpZgorICAgICAgICAgICB0aGVyZSBhcmUgc3RhY2sgY2hhbmdlcyB0
aGF0IG5lZWQgdG8gYmUgYXBwbGllZC4gIElmIHN0YWNrIGNoYW5nZXMgYXJlIG5lZWRlZDoKKwor
ICAgICAgICAgICBhLiBQcm9iZTo6ZXhlY3V0ZVByb2JlKCkgd2lsbCBhZGp1c3QgdGhlIHN0YWNr
IHBvaW50ZXIgdG8gZW5zdXJlIGVub3VnaCBzdGFjaworICAgICAgICAgICAgICBzcGFjZSBpcyBh
dmFpbGFibGUgdG8gZmx1c2ggdGhlIGRpcnR5IHN0YWNrIHBhZ2VzLiAgSXQgd2lsbCBhbHNvIHJl
Z2lzdGVyIGEKKyAgICAgICAgICAgICAgZmx1c2hTdGFja0RpcnR5UGFnZXMgY2FsbGJhY2sgZnVu
Y3Rpb24gaW4gdGhlIFByb2JlOjpTdGF0ZS4gIFRoZXJlYWZ0ZXIsCisgICAgICAgICAgICAgIFBy
b2JlOjpleGVjdXRlUHJvYmUoKSByZXR1cm5zIHRvIHRoZSBwcm9iZSB0cmFtcG9saW5lLgorCisg
ICAgICAgICAgIGIuIHRoZSBwcm9iZSB0cmFtcG9saW5lIGFkanVzdHMgdGhlIHN0YWNrIHBvaW50
ZXIsIG1vdmVzIHRoZSBQcm9iZTo6U3RhdGUgdG8KKyAgICAgICAgICAgICAgYSBzYWZlIHBsYWNl
IGlmIG5lZWRlZCwgYW5kIHRoZW4gY2FsbHMgdGhlIGZsdXNoU3RhY2tEaXJ0eVBhZ2VzIGNhbGxi
YWNrCisgICAgICAgICAgICAgIGlmIG5lZWRlZC4KKworICAgICAgICAgICBjLiB0aGUgZmx1c2hT
dGFja0RpcnR5UGFnZXMoKSBjYWxsYmFjayBpdGVyYXRlcyB0aGUgUHJvYmU6OlN0YWNrJ3MgbV9w
YWdlcworICAgICAgICAgICAgICBIYXNoTWFwIGFuZCBmbHVzaCBhbGwgZGlydHkgImNhY2hlIGxp
bmVzIiB0byB0aGUgbWFjaGluZSBzdGFjay4KKyAgICAgICAgICAgICAgVGhlcmVhZnRlciwgZmx1
c2hTdGFja0RpcnR5UGFnZXMoKSByZXR1cm5zIHRvIHRoZSBwcm9iZSB0cmFtcG9saW5lLgorCisg
ICAgICAgICAgIGQuIGxhc3RseSwgdGhlIHByb2JlIHRyYW1wb2xpbmUgd2lsbCByZXN0b3JlIGFs
bCByZWdpc3RlciB2YWx1ZXMgYW5kIHJldHVybgorICAgICAgICAgICAgICB0byB0aGUgcGMgc2V0
IGluIHRoZSBQcm9iZTo6U3RhdGUuCisKKyAgICAgICAgVG8gbWFrZSB0aGlzIHBhdGNoIHdvcmss
IEkgYWxzbyBoYWQgdG8gZG8gdGhlIGZvbGxvd2luZyB3b3JrOgorCisgICAgICAgIDUuIFJlZmFj
dG9yIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZSBpbnRvIFByb2JlOjpDUFVTdGF0ZS4KKyAgICAg
ICAgICAgTWFpbmx5LCB0aGlzIG1lYW5zIG1vdmluZyB0aGUgY29kZSBvdmVyIHRvIFByb2JlQ29u
dGV4dC5oLgorICAgICAgICAgICBJIGFsc28gYWRkZWQgc29tZSBjb252ZW5pZW5jZSBhY2Nlc3Nv
ciBtZXRob2RzIGZvciBzcHIgcmVnaXN0ZXJzLiAKKworICAgICAgICAgICBNb3ZlZCBQcm9iZTo6
Q29udGV4dCBvdmVyIHRvIGl0cyBvd24gZmlsZSBQcm9iZUNvbnRleHQuaC9jcHAuCisKKyAgICAg
ICAgNi4gRml4IGFsbCBwcm9iZSB0cmFtcG9saW5lcyB0byBwYXNzIHRoZSBhZGRyZXNzIG9mIFBy
b2JlOjpleGVjdXRlUHJvYmUgaW4KKyAgICAgICAgICAgYWRkaXRpb24gdG8gdGhlIGNsaWVudCdz
IHByb2JlIGZ1bmN0aW9uIGFuZCBhcmcuCisKKyAgICAgICAgICAgSSBhbHNvIHRvb2sgdGhpcyBv
cHBvcnR1bml0eSB0byBvcHRpbWl6ZSB0aGUgZ2VuZXJhdGVkIEpJVCBwcm9iZSBjb2RlIHRvCisg
ICAgICAgICAgIG1pbmltaXplIHRoZSBhbW91bnQgb2YgbWVtb3J5IHN0b3JlcyBuZWVkZWQuIAor
CisgICAgICAgIDcuIFNpbXBsaWZpZWQgdGhlIEFSTTY0IHByb2JlIHRyYW1wb2xpbmUuICBUaGUg
QVJNNjQgcHJvYmUgb25seSBzdXBwb3J0cyBjaGFuZ2luZworICAgICAgICAgICBlaXRoZXIgbHIg
b3IgcGMgKG9yIG5laXRoZXIpLCBidXQgbm90IGJvdGggYXQgaW4gdGhlIHNhbWUgcHJvYmUgaW52
b2NhdGlvbi4KKyAgICAgICAgICAgVGhlIEFSTTY0IHByb2JlIHRyYW1wb2xpbmUgdXNlZCB0byBo
YXZlIHRvIGNoZWNrIGZvciB0aGlzIGludmFyaWFudCBpbiB0aGUKKyAgICAgICAgICAgYXNzZW1i
bHkgdHJhbXBvbGluZSBjb2RlLiAgV2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIFByb2JlOjpleGVj
dXRlUHJvYmUoKSwKKyAgICAgICAgICAgd2UgY2FuIG5vdyBkbyBpdCB0aGVyZSBhbmQgc2ltcGxp
ZnkgdGhlIHRyYW1wb2xpbmUuCisKKyAgICAgICAgOC4gRml4IGEgYnVnIGluIHRoZSBvbGQgIEFS
TTY0IHByb2JlIHRyYW1wb2xpbmUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBjbGllbnQKKyAgICAg
ICAgICAgY2hhbmdlcyBsci4gIFRoYXQgY29kZSBwYXRoIG5ldmVyIHdvcmtlZCBiZWZvcmUsIGJ1
dCBoYXMgbm93IGJlZW4gZml4ZWQuCisKKyAgICAgICAgOS4gUmVtb3ZlZCB0cnVzdGVkSW1tMzJG
cm9tUHRyKCkgaGVscGVyIGZ1bmN0aW9ucyBpbiBNYWNyb0Fzc2VtYmxlckFSTSBhbmQKKyAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJBUk12Ny4KKworICAgICAgICAgICBXZSBjYW4gbm93IHVzZSBt
b3ZlKCkgd2l0aCBUcnVzdGVkSW1tUHRyLCBhbmQgaXQgZG9lcyB0aGUgc2FtZSB0aGluZyBidXQg
aW4gYQorICAgICAgICAgICBtb3JlIGdlbmVyaWMgd2F5LgorCisgICAgICAgMTAuIEFSTXY3J3Mg
bW92ZSgpIGVtaXR0ZXIgbWF5IGVuY29kZSBhIFQxIG1vdmUgaW5zdHJ1Y3Rpb24sIHdoaWNoIGhh
cHBlbnMgdG8gaGF2ZQorICAgICAgICAgICB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgbW92cyAoYWNj
b3JkaW5nIHRvIHRoZSBUaHVtYiBzcGVjKS4gIFRoaXMgbWVhbnMgdGhlc2UKKyAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zIG1heSB0cmFzaCB0aGUgQVBTUiBmbGFncyBiZWZvcmUgd2UgaGF2ZSBhIGNo
YW5jZSB0byBwcmVzZXJ2ZSB0aGVtLgorCisgICAgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBN
YWNyb0Fzc2VtYmxlckFSTXY3J3MgcHJvYmUoKSB0byBwcmVzZXJ2ZSB0aGUgQVBTUiByZWdpc3Rl
cgorICAgICAgICAgICBlYXJseSBvbi4gIFRoaXMgZW50YWlscyBhZGRpbmcgc3VwcG9ydCBmb3Ig
dGhlIG1ycyBpbnN0cnVjdGlvbiBpbiB0aGUKKyAgICAgICAgICAgQVJNdjdBc3NlbWJsZXIuCisK
KyAgICAgICAxMC4gQ2hhbmdlIHRlc3RtYXNtJ3MgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVl
cygpIHRvIG5vdyBtb2RpZnkgc3RhY2sgdmFsdWVzCisgICAgICAgICAgIHRoZSBlYXN5IHdheS4K
KworICAgICAgICAgICBBbHNvIGZpeGVkIHRlc3RtYXNtIHRlc3RzIHdoaWNoIGNoZWNrIGZsYWcg
cmVnaXN0ZXJzIHRvIG9ubHkgY29tcGFyZSB0aGUKKyAgICAgICAgICAgcG9ydGlvbnMgdGhhdCBh
cmUgbW9kaWZpYWJsZSBieSB0aGUgY2xpZW50IGkuZS4gc29tZSBtYXNraW5nIGlzIGFwcGxpZWQu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBoYXMgcGFzc2VkIHRoZSB0ZXN0bWFzbSB0ZXN0cyBvbiB4
ODYsIHg4Nl82NCwgYXJtNjQsIGFuZCBhcm12Ny4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTXY3
QXNzZW1ibGVyOjptcnMpOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6c3RkRnVuY3Rpb25DYWxsYmFjayk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Ojpwcm9iZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6Z3ByTmFtZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6c3ByTmFtZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6ZnByTmFtZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6Z3ByKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpzcHIpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OmZwcik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyOjpDUFVTdGF0ZTo6ZnByIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OkNQVVN0YXRlOjpwYyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpDUFVTdGF0ZTo6ZnApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6Q1BVU3RhdGU6OnNwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OkNQVVN0YXRlOjpwYyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpDUFVTdGF0ZTo6ZnAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OnNwIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
UHJvYmU6OlN0YXRlOjpncHIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhdGU6
OnNwcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlByb2JlOjpTdGF0ZTo6ZnByKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YXRlOjpncHJOYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6UHJvYmU6OlN0YXRlOjpzcHJOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
UHJvYmU6OlN0YXRlOjpmcHJOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0
YXRlOjpwYyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlByb2JlOjpTdGF0ZTo6ZnApOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhdGU6OnNwKTogRGVsZXRlZC4KKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlcjo6cHJvYmUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6dHJ1c3RlZEltbTMyRnJvbVB0cik6
IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuY3BwOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cHJvYmUpOgorICAgICAgICAoSlNDOjphcm02
NFByb2JlRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnByb2JlKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTXY3Ojphcm1WN0NvbmRpdGlvbik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNdjc6OnRydXN0ZWRJbW0zMkZyb21QdHIpOiBEZWxldGVkLgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwOgorICAgICAgICAoSlNDOjpQcmludGVy
OjpwcmludENhbGxiYWNrKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmlu
dGVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6Y3RpTWFzbVByb2JlVHJhbXBvbGluZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyOjpwcm9iZSk6CisgICAgICAgICogYXNzZW1ibGVyL1ByaW50ZXIuaDoKKyAg
ICAgICAgKEpTQzo6UHJpbnRlcjo6Q29udGV4dDo6Q29udGV4dCk6CisgICAgICAgICogYXNzZW1i
bGVyL1Byb2JlQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcm9iZTo6ZXhlY3V0
ZVByb2JlKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OmhhbmRsZVByb2JlU3RhY2tJbml0aWFsaXph
dGlvbik6CisgICAgICAgIChKU0M6OlByb2JlOjpwcm9iZVN0YXRlRm9yQ29udGV4dCk6CisgICAg
ICAgICogYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJv
YmU6OkNQVVN0YXRlOjpncHJOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpz
cHJOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpmcHJOYW1lKToKKyAgICAg
ICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpncHIpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BV
U3RhdGU6OnNwcik6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6ZnByKToKKyAgICAg
ICAgKEpTQzo6UHJvYmU6OiBjb25zdCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6
ZnByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpwYyk6CisgICAgICAg
IChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6ZnApOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3Rh
dGU6OnNwKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpwYyBjb25zdCk6CisgICAg
ICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6ZnAgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9i
ZTo6Q1BVU3RhdGU6OnNwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OkNv
bnRleHQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6Z3ByKToKKyAgICAgICAgKEpT
Qzo6UHJvYmU6OkNvbnRleHQ6OnNwcik6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0Ojpm
cHIpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6Z3ByTmFtZSk6CisgICAgICAgIChK
U0M6OlByb2JlOjpDb250ZXh0OjpzcHJOYW1lKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRl
eHQ6OmZwck5hbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6cGMpOgorICAgICAg
ICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6ZnApOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4
dDo6c3ApOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6c3RhY2spOgorICAgICAgICAo
SlNDOjpQcm9iZTo6Q29udGV4dDo6aGFzV3JpdGVzVG9GbHVzaCk6CisgICAgICAgIChKU0M6OlBy
b2JlOjpDb250ZXh0OjpyZWxlYXNlU3RhY2spOgorICAgICAgICAqIGFzc2VtYmxlci9Qcm9iZVN0
YWNrLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpQYWdlKToKKyAgICAg
ICAgKEpTQzo6UHJvYmU6OlBhZ2U6OmZsdXNoV3JpdGVzKToKKyAgICAgICAgKEpTQzo6UHJvYmU6
OlN0YWNrOjpTdGFjayk6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6aGFzV3JpdGVzVG9G
bHVzaCk6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6Zmx1c2hXcml0ZXMpOgorICAgICAg
ICAoSlNDOjpQcm9iZTo6U3RhY2s6OmVuc3VyZVBhZ2VGb3IpOgorICAgICAgICAqIGFzc2VtYmxl
ci9Qcm9iZVN0YWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6YmFzZUFk
ZHJlc3NGb3IpOgorICAgICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6Y2h1bmtBZGRyZXNzRm9yKToK
KyAgICAgICAgKEpTQzo6UHJvYmU6OlBhZ2U6OmJhc2VBZGRyZXNzKToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OlBhZ2U6OmdldCk6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpzZXQpOgorICAg
ICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6aGFzV3JpdGVzVG9GbHVzaCBjb25zdCk6CisgICAgICAg
IChKU0M6OlByb2JlOjpQYWdlOjpmbHVzaFdyaXRlc0lmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OlBhZ2U6OmRpcnR5Qml0Rm9yKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlBhZ2U6OnBo
eXNpY2FsQWRkcmVzc0Zvcik6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6U3RhY2spOgor
ICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6Omxvd1dhdGVybWFyayk6CisgICAgICAgIChKU0M6
OlByb2JlOjpTdGFjazo6Z2V0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpzZXQpOgor
ICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6Om5ld1N0YWNrUG9pbnRlciBjb25zdCk6CisgICAg
ICAgIChKU0M6OlByb2JlOjpTdGFjazo6c2V0TmV3U3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpT
Qzo6UHJvYmU6OlN0YWNrOjppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpw
YWdlRm9yKToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVSZWFkc0FyZ3VtZW50UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6dGVzdFBy
b2JlV3JpdGVzQXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVQcmVz
ZXJ2ZXNHUFJTKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIp
OgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlclRvSW5zaWRlUHJv
YmVTdGF0ZU9uU3RhY2spOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9p
bnRlclRvTkJ5dGVzQmVsb3dTUCk6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzUHJv
Z3JhbUNvdW50ZXIpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVz
KToKKyAgICAgICAgKEpTQzo6cnVuKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OmZpbGxTdGFjayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVz
U3RhY2tXaXRoQ2FsbGJhY2spOiBEZWxldGVkLgorCiAyMDE3LTA4LTE4ICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgMzItYml0IE1hY3Jv
QXNzZW1ibGVyOjpwcm9iZSBzdXBwb3J0IGZvciBXaW5kb3dzLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIwOTM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJp
bnRlci5jcHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCiAgICAg
YXNzZW1ibGVyL1ByaW50ZXIuY3BwCisgICAgYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAKKyAg
ICBhc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKIAogICAgIGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lz
dGVyc0FuZFN0YWNrQnlMaW5lYXJTY2FuLmNwcAogICAgIGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lz
dGVyc0J5R3JhcGhDb2xvcmluZy5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQyOSw2ICsy
NDI5LDEwIEBACiAJCUZBM0FCMjExQzg0OTQ1MjRBQjM5MDI2NyAvKiBKU1NvdXJjZUNvZGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjczOTI2OTE4
REM2NDMzMEFGQ0RGMEQ3IC8qIEpTU291cmNlQ29kZS5jcHAgKi87IH07CiAJCUZFMEQ0QTA2MUFC
OEREMEEwMDJGNTRCRiAvKiBFeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA0MUFCOEREMEEwMDJGNTRC
RiAvKiBFeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcCAqLzsgfTsKIAkJRkUwRDRBMDkxQUJBMjQz
NzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTBENEEwNzFBQkEyNDM3MDAy
RjU0QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCAqLzsgfTsKKwkJRkUx
MEFBRUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQ
cm9iZVN0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRkUxMEFBRUMxRjQ0RDU0NTAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRTkxRjQ0RDUxMDAw
OURFREM1IC8qIFByb2JlU3RhY2suY3BwICovOyB9OworCQlGRTEwQUFFRTFGNDREOTU0MDA5REVE
QzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTEwQUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUxMEFBRjQx
RjQ2ODM5NjAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFGMzFGNDY4MjZEMDA5REVEQzUgLyogUHJv
YmVDb250ZXh0LmNwcCAqLzsgfTsKIAkJRkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFk
ZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUxMjIwMjYxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovOyB9Owog
CQlGRTEyMjAyODFCRTdGNTkxMDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI1MUJFN0Y1NjQw
MDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwICovOyB9OwogCQlGRTE4N0EwMTFCRkJFNTVF
MDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBKSVRNdWxH
ZW5lcmF0b3IuY3BwICovOyB9OwpAQCAtNTEwNSw2ICs1MTA5LDEwIEBACiAJCUZFMEQ0QTA1MUFC
OEREMEEwMDJGNTRCRiAvKiBFeGVjdXRpb25UaW1lTGltaXRUZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuaDsgcGF0aCA9IEFQSS90
ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMEQ0QTA3MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXpl
clRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gR2xvYmFsQ29u
dGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9HbG9iYWxDb250ZXh0
V2l0aEZpbmFsaXplclRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTBE
NEEwODFBQkEyNDM3MDAyRjU0QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdsb2JhbENvbnRleHRXaXRoRmluYWxp
emVyVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0dsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTEwQUFFOTFGNDRENTEwMDA5REVE
QzUgLyogUHJvYmVTdGFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQcm9iZVN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxMEFBRUEx
RjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJvYmVTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTEw
QUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb2JlQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTEwQUFGMzFGNDY4MjZEMDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2JlQ29udGV4dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRH
ZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQWRk
R2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMjIwMjYxQkU3
RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKSVRBZGRHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRNdWxHZW5lcmF0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY3Niw2ICs3Njg0LDEwIEBACiAJCQkJODZDNTY4
REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLywKIAkJCQlGRTYzREQ1NTFF
QTlCQzVEMDAxMDNBNjkgLyogUHJpbnRlci5jcHAgKi8sCiAJCQkJRkU2M0RENTMxRUE5QjYwRTAw
MTAzQTY5IC8qIFByaW50ZXIuaCAqLywKKwkJCQlGRTEwQUFGMzFGNDY4MjZEMDA5REVEQzUgLyog
UHJvYmVDb250ZXh0LmNwcCAqLywKKwkJCQlGRTEwQUFFRDFGNDREOTQ2MDA5REVEQzUgLyogUHJv
YmVDb250ZXh0LmggKi8sCisJCQkJRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3Rh
Y2suY3BwICovLAorCQkJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNrLmgg
Ki8sCiAJCQkJRkU1MzNDQTAxRjIxN0MzMTAwMTZBMUZFIC8qIHRlc3RtYXNtLmNwcCAqLywKIAkJ
CQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggKi8sCiAJCQkpOwpA
QCAtODU5MSw2ICs4NjAzLDcgQEAKIAkJCQkwRkJGMTU4RDE5QjdBNTMxMDA2OTVERDAgLyogREZH
QmxvY2tTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0QwMDE5QURBNDEwMDA2
QUM3MkEgLyogREZHQmxvY2tXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MzY0Qjcx
NjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkUxMEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFy
cmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkRC
OUFEMUFCMEZCQzYwMDBCNTdFNSAvKiBERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1Bh
dGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTYzMSw2ICs5NjQ0LDcgQEAKIAkJCQlB
RDQ5MzdDODFEREQwQUFFMDA3N0M4MDcgLyogV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUFEMkZDQzJEMURCODM4RkQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjkxREI1OERBRDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0YWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBRDJGQ0MxRTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQkZCMURCNThEQUQwMEIz
RTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQUQyRkNDMUYxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9y
UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDQ0MSw2ICsxMDQ1NSw3IEBACiAJ
CQkJMEY2OUNDODgxOTNBQzYwQTAwNDU3NTlFIC8qIERGR0Zyb3plblZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2RUM5REM3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjJGQ0NGOTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZl
cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUxMEFBRjQxRjQ2ODM5NjAwOURFREM1IC8q
IFByb2JlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2MDE5NkI4RjlFMDA5
MTA1MkEgLyogREZHSGVhcExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzg0MTY4
MUJBOEMzMjEwMDYxODM3RCAvKiBERkdJbmZlcnJlZFR5cGVDaGVjay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzA0RDkwNTE3QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDcyOSw2ICsxMDc0NCw3IEBACiAJCQkJMTQ3RjM5
RDYxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTQ0pTVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ0MEZDRTQwQTUxRTQ2QjAwMDVGMDYxIC8qIEpTQ2xhc3NSZWYuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZFM0M2MTYxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTQ29udGV4dC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUZFMTBBQUVDMUY0NEQ1NDUwMDlERURDNSAvKiBQcm9iZVN0YWNrLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0QkQ1QTMwMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyMDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rl
c3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MkFBRjdDRDFEMEQzMUIzMDA1
RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmgJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzM1LDYgKzczNSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIE9QX1NESVZfVDEgICAgICA9IDB4RkI5MCwKICAgICAgICAgT1BfVURJ
Vl9UMSAgICAgID0gMHhGQkIwLAogI2VuZGlmCisgICAgICAgIE9QX01SU19UMSAgICAgICA9IDB4
RjNFRiwKICAgICB9IE9wY29kZUlEMTsKIAogICAgIHR5cGVkZWYgZW51bSB7CkBAIC0xNDMzLDYg
KzE0MzQsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgbXZuKHJkLCBybSwgU2hpZnRUeXBlQW5k
QW1vdW50KCkpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtcnMoUmVnaXN0ZXJJ
RCByZCwgU1BSZWdpc3RlcklEIHNwZWNSZWcpCisgICAgeworICAgICAgICBBU1NFUlQoc3BlY1Jl
ZyA9PSBBUk1SZWdpc3RlcnM6OmFwc3IpOworICAgICAgICBBU1NFUlQoIUJhZFJlZyhyZCkpOwor
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcGVjaWFsUmVnaXN0ZXJCaXQgPSAoc3BlY1JlZyA9PSBB
Uk1SZWdpc3RlcnM6OmFwc3IpID8gMCA6ICgxIDw8IDQpOworICAgICAgICBPcGNvZGVJRDEgbXJz
T3AgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRDE+KE9QX01SU19UMSB8IHNwZWNpYWxSZWdpc3RlckJp
dCk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b1dvcmRPcDE2Rm91ckZvdXJzKG1yc09wLCBGb3Vy
Rm91cnMoMHg4LCByZCwgMCwgMCkpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBu
ZWcoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybSkKICAgICB7CiAgICAgICAgIEFSTVRodW1i
SW1tZWRpYXRlIHplcm8gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMigwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDMsMTMgKzQzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQog
Ci0jaWYgRU5BQkxFKE1BU01fUFJPQkUpCi1uYW1lc3BhY2UgUHJvYmUgewotc3RydWN0IFN0YXRl
OwotdHlwZWRlZiB2b2lkICgqRnVuY3Rpb24pKHN0cnVjdCBTdGF0ZSopOwotfSAvLyBuYW1lc3Bh
Y2UgUHJvYmUKLSNlbmRpZgotICAgIAogY2xhc3MgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlOwogY2xhc3MgRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOwogY2xhc3MgTGlu
a0J1ZmZlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKIAorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTM1LDE1ICszNiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIGNvbnN0IGRvdWJsZSBNYWNyb0Fz
c2VtYmxlcjo6dHdvVG9UaGUzMiA9IChkb3VibGUpMHgxMDAwMDAwMDB1bGw7CiAKICNpZiBFTkFC
TEUoTUFTTV9QUk9CRSkKLXN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OlN0
YXRlKiBzdGF0ZSkKK3N0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRl
eHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBmdW5jID0gc3RhdGljX2Nhc3Q8Y29uc3Qgc3RkOjpm
dW5jdGlvbjx2b2lkKFByb2JlOjpTdGF0ZSopPio+KHN0YXRlLT5hcmcpOwotICAgICgqZnVuYyko
c3RhdGUpOworICAgIGF1dG8gZnVuYyA9IHN0YXRpY19jYXN0PGNvbnN0IHN0ZDo6ZnVuY3Rpb248
dm9pZChQcm9iZTo6Q29udGV4dCYpPio+KGNvbnRleHQuYXJnKTsKKyAgICAoKmZ1bmMpKGNvbnRl
eHQpOwogfQogICAgIAotdm9pZCBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoc3RkOjpmdW5jdGlvbjx2
b2lkKFByb2JlOjpTdGF0ZSopPiBmdW5jKQordm9pZCBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoc3Rk
OjpmdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+IGZ1bmMpCiB7Ci0gICAgcHJvYmUoc3Rk
RnVuY3Rpb25DYWxsYmFjaywgbmV3IHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6U3RhdGUqKT4o
ZnVuYykpOworICAgIHByb2JlKHN0ZEZ1bmN0aW9uQ2FsbGJhY2ssIG5ldyBzdGQ6OmZ1bmN0aW9u
PHZvaWQoUHJvYmU6OkNvbnRleHQmKT4oZnVuYykpOwogfQogI2VuZGlmIC8vIEVOQUJMRShNQVNN
X1BST0JFKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDEyICs2
MywyMSBAQCBuYW1lc3BhY2UgSlNDIHsgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlclg4CiAKIG5hbWVz
cGFjZSBKU0MgewogCisjaWYgRU5BQkxFKE1BU01fUFJPQkUpCituYW1lc3BhY2UgUHJvYmUgewor
CitjbGFzcyBDb250ZXh0OwordHlwZWRlZiB2b2lkICgqRnVuY3Rpb24pKENvbnRleHQmKTsKKwor
fSAvLyBuYW1lc3BhY2UgUHJvYmUKKyNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKKwogbmFt
ZXNwYWNlIFByaW50ZXIgewogCiBzdHJ1Y3QgUHJpbnRSZWNvcmQ7CiB0eXBlZGVmIFZlY3RvcjxQ
cmludFJlY29yZD4gUHJpbnRSZWNvcmRMaXN0OwogCi19Cit9IC8vIG5hbWVzcGFjZSBQcmludGVy
CiAKIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiBw
dWJsaWM6CkBAIC0xODI1LDggKzE4MzQsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAjaWYgRU5BQkxF
KE1BU01fUFJPQkUpCi0gICAgc3RydWN0IENQVVN0YXRlOwotCiAgICAgLy8gVGhpcyBmdW5jdGlv
biBlbWl0cyBjb2RlIHRvIHByZXNlcnZlIHRoZSBDUFVTdGF0ZSAoZS5nLiByZWdpc3RlcnMpLAog
ICAgIC8vIGNhbGwgYSB1c2VyIHN1cHBsaWVkIHByb2JlIGZ1bmN0aW9uLCBhbmQgcmVzdG9yZSB0
aGUgQ1BVU3RhdGUgYmVmb3JlCiAgICAgLy8gY29udGludWluZyB3aXRoIG90aGVyIEpJVCBnZW5l
cmF0ZWQgY29kZS4KQEAgLTE4NzgsNyArMTg4NSw3IEBAIHB1YmxpYzoKICAgICAvLyBNYWNyb0Fz
c2VtYmxlci4KICAgICB2b2lkIHByb2JlKFByb2JlOjpGdW5jdGlvbiwgdm9pZCogYXJnKTsKIAot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJvYmUoc3RkOjpmdW5jdGlvbjx2b2lkKFByb2Jl
OjpTdGF0ZSopPik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9iZShzdGQ6OmZ1bmN0
aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4pOwogCiAgICAgLy8gTGV0J3MgeW91IHByaW50IGZy
b20geW91ciBKSVQgZ2VuZXJhdGVkIGNvZGUuCiAgICAgLy8gU2VlIGNvbW1lbnRzIGluIE1hY3Jv
QXNzZW1ibGVyUHJpbnRlci5oIGZvciBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoaXMuCkBAIC0x
ODg5LDE3MyArMTg5Niw2IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkK
IH07CiAKLSNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKLXN0cnVjdCBNYWNyb0Fzc2VtYmxlcjo6Q1BV
U3RhdGUgewotICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklE
IGlkKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6Z3ByTmFtZShpZCk7IH0KLSAgICBzdGF0aWMg
aW5saW5lIGNvbnN0IGNoYXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBNYWNy
b0Fzc2VtYmxlcjo6c3ByTmFtZShpZCk7IH0KLSAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIq
IGZwck5hbWUoRlBSZWdpc3RlcklEIGlkKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6ZnByTmFt
ZShpZCk7IH0KLSAgICBpbmxpbmUgdWludHB0cl90JiBncHIoUmVnaXN0ZXJJRCk7Ci0gICAgaW5s
aW5lIHVpbnRwdHJfdCYgc3ByKFNQUmVnaXN0ZXJJRCk7Ci0gICAgaW5saW5lIGRvdWJsZSYgZnBy
KEZQUmVnaXN0ZXJJRCk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4K
LSAgICBUIGdwcihSZWdpc3RlcklEKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSog
PSBudWxscHRyPgotICAgIFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IFQgZnByKEZQUmVnaXN0ZXJJRCkgY29uc3Q7Ci0KLSAgICB2b2lkKiYgcGMoKTsK
LSAgICB2b2lkKiYgZnAoKTsKLSAgICB2b2lkKiYgc3AoKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBUIHBjKCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmcCgpIGNvbnN0
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgc3AoKSBjb25zdDsKLQotICAgIHVpbnRwdHJf
dCBncHJzW01hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpXTsKLSAgICB1aW50cHRy
X3Qgc3Byc1tNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZTUFJlZ2lzdGVycygpXTsKLSAgICBkb3Vi
bGUgZnByc1tNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygpXTsKLX07Ci0KLWlu
bGluZSB1aW50cHRyX3QmIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6Z3ByKFJlZ2lzdGVySUQg
aWQpCi17Ci0gICAgQVNTRVJUKGlkID49IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCkg
JiYgaWQgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpKTsKLSAgICByZXR1cm4gZ3By
c1tpZF07Ci19Ci0KLWlubGluZSB1aW50cHRyX3QmIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6
c3ByKFNQUmVnaXN0ZXJJRCBpZCkKLXsKLSAgICBBU1NFUlQoaWQgPj0gTWFjcm9Bc3NlbWJsZXI6
OmZpcnN0U1BSZWdpc3RlcigpICYmIGlkIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0U1BSZWdpc3Rl
cigpKTsKLSAgICByZXR1cm4gc3Byc1tpZF07Ci19Ci0KLWlubGluZSBkb3VibGUmIE1hY3JvQXNz
ZW1ibGVyOjpDUFVTdGF0ZTo6ZnByKEZQUmVnaXN0ZXJJRCBpZCkKLXsKLSAgICBBU1NFUlQoaWQg
Pj0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpICYmIGlkIDw9IE1hY3JvQXNzZW1i
bGVyOjpsYXN0RlBSZWdpc3RlcigpKTsKLSAgICByZXR1cm4gZnByc1tpZF07Ci19Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8
VD46OnZhbHVlPjo6dHlwZSo+Ci1UIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6Z3ByKFJlZ2lz
dGVySUQgaWQpIGNvbnN0Ci17Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3Rh
dGUqPih0aGlzKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oY3B1LT5ncHIoaWQpKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19w
b2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqPgotVCBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6Omdw
cihSZWdpc3RlcklEIGlkKSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0
PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5n
cHIoaWQpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLVQgTWFjcm9Bc3NlbWJsZXI6OkNQ
VVN0YXRlOjpmcHIoRlBSZWdpc3RlcklEIGlkKSBjb25zdAotewotICAgIENQVVN0YXRlKiBjcHUg
PSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxU
PihjcHUtPmZwcihpZCkpOwotfQotCi1pbmxpbmUgdm9pZComIE1hY3JvQXNzZW1ibGVyOjpDUFVT
dGF0ZTo6cGMoKQotewotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnNwcihYODZSZWdpc3RlcnM6OmVpcCkpOwotI2VsaWYg
Q1BVKEFSTTY0KQotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZzcHIoQVJN
NjRSZWdpc3RlcnM6OnBjKSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFE
SVRJT05BTCkKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKEFSTVJl
Z2lzdGVyczo6cGMpKTsKLSNlbGlmIENQVShNSVBTKQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0jZWxzZQotI2Vycm9yICJVbnN1cHBvcnRlZCBDUFUiCi0jZW5kaWYKLX0KLQot
aW5saW5lIHZvaWQqJiBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OmZwKCkKLXsKLSNpZiBDUFUo
WDg2KSB8fCBDUFUoWDg2XzY0KQotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KCZncHIoWDg2UmVnaXN0ZXJzOjplYnApKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKEFSTTY0UmVnaXN0ZXJzOjpmcCkpOwotI2Vs
aWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OmZwKSk7Ci0jZWxpZiBD
UFUoTUlQUykKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKE1JUFNS
ZWdpc3RlcnM6OmZwKSk7Ci0jZWxzZQotI2Vycm9yICJVbnN1cHBvcnRlZCBDUFUiCi0jZW5kaWYK
LX0KLQotaW5saW5lIHZvaWQqJiBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OnNwKCkKLXsKLSNp
ZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZncHIoWDg2UmVnaXN0ZXJzOjplc3ApKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKEFSTTY0UmVnaXN0ZXJzOjpzcCkp
OwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OnNwKSk7Ci0j
ZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3By
KE1JUFNSZWdpc3RlcnM6OnNwKSk7Ci0jZWxzZQotI2Vycm9yICJVbnN1cHBvcnRlZCBDUFUiCi0j
ZW5kaWYKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLVQgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0
YXRlOjpwYygpIGNvbnN0Ci17Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3Rh
dGUqPih0aGlzKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPnBjKCkpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotVCBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OmZw
KCkgY29uc3QKLXsKLSAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRo
aXMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+ZnAoKSk7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1UIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6c3AoKSBjb25z
dAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7Ci0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5zcCgpKTsKLX0KLQotbmFtZXNwYWNl
IFByb2JlIHsKLQotc3RydWN0IFN0YXRlIHsKLSAgICB1c2luZyBDUFVTdGF0ZSA9IE1hY3JvQXNz
ZW1ibGVyOjpDUFVTdGF0ZTsKLSAgICB1c2luZyBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6
OlJlZ2lzdGVySUQ7Ci0gICAgdXNpbmcgU1BSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OlNQ
UmVnaXN0ZXJJRDsKLSAgICB1c2luZyBGUFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6RlBS
ZWdpc3RlcklEOwotCi0gICAgRnVuY3Rpb24gcHJvYmVGdW5jdGlvbjsKLSAgICB2b2lkKiBhcmc7
Ci0gICAgRnVuY3Rpb24gaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb247Ci0gICAgdm9pZCogaW5pdGlh
bGl6ZVN0YWNrQXJnOwotICAgIENQVVN0YXRlIGNwdTsKLQotICAgIC8vIENvbnZlbmllbmNlIG1l
dGhvZHM6Ci0gICAgdWludHB0cl90JiBncHIoUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1Lmdw
cihpZCk7IH0KLSAgICB1aW50cHRyX3QmIHNwcihTUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNw
dS5zcHIoaWQpOyB9Ci0gICAgZG91YmxlJiBmcHIoRlBSZWdpc3RlcklEIGlkKSB7IHJldHVybiBj
cHUuZnByKGlkKTsgfQotICAgIGNvbnN0IGNoYXIqIGdwck5hbWUoUmVnaXN0ZXJJRCBpZCkgeyBy
ZXR1cm4gY3B1Lmdwck5hbWUoaWQpOyB9Ci0gICAgY29uc3QgY2hhciogc3ByTmFtZShTUFJlZ2lz
dGVySUQgaWQpIHsgcmV0dXJuIGNwdS5zcHJOYW1lKGlkKTsgfQotICAgIGNvbnN0IGNoYXIqIGZw
ck5hbWUoRlBSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuZnByTmFtZShpZCk7IH0KLQotICAg
IHZvaWQqJiBwYygpIHsgcmV0dXJuIGNwdS5wYygpOyB9Ci0gICAgdm9pZComIGZwKCkgeyByZXR1
cm4gY3B1LmZwKCk7IH0KLSAgICB2b2lkKiYgc3AoKSB7IHJldHVybiBjcHUuc3AoKTsgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBwYygpIHsgcmV0dXJuIGNwdS5wYzxUPigpOyB9Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmcCgpIHsgcmV0dXJuIGNwdS5mcDxUPigpOyB9Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBzcCgpIHsgcmV0dXJuIGNwdS5zcDxUPigpOyB9Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBQcm9iZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUp
Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmNwcAkocmV2aXNpb24gMjIwOTM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIENQVShBUk02NCkKICNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlci5oIgogCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0lu
bGluZUFTTS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEyNiw4ICsxMjcsNiBAQCB1c2luZyBu
YW1lc3BhY2UgQVJNNjRSZWdpc3RlcnM7CiAjZGVmaW5lIFBST0JFX1NJWkUgKFBST0JFX0ZJUlNU
X0ZQUkVHX09GRlNFVCArICgzMiAqIEZQUkVHX1NJWkUpKQogCiAjZGVmaW5lIFNBVkVEX1BST0JF
X1JFVFVSTl9QQ19PRkZTRVQgICAgICAgIChQUk9CRV9TSVpFICsgKDAgKiBQVFJfU0laRSkpCi0j
ZGVmaW5lIFNBVkVEX1BST0JFX0xSX09GRlNFVCAgICAgICAgICAgICAgIChQUk9CRV9TSVpFICsg
KDEgKiBQVFJfU0laRSkpCi0jZGVmaW5lIFNBVkVEX1BST0JFX0VSUk9SX0ZVTkNUSU9OX09GRlNF
VCAgIChQUk9CRV9TSVpFICsgKDIgKiBQVFJfU0laRSkpCiAjZGVmaW5lIFBST0JFX1NJWkVfUExV
U19FWFRSQVMgICAgICAgICAgICAgIChQUk9CRV9TSVpFICsgKDMgKiBQVFJfU0laRSkpCiAKIC8v
IFRoZXNlIEFTU0VSVHMgcmVtaW5kIHlvdSB0aGF0IGlmIHlvdSBjaGFuZ2UgdGhlIGxheW91dCBv
ZiBQcm9iZTo6U3RhdGUsCkBAIC0yMjUsMzEgKzIyNCwyOSBAQCBzdGF0aWNfYXNzZXJ0KCEoUFJP
QkVfU0laRV9QTFVTX0VYVFJBUyAmCiAjZGVmaW5lIEZQUl9PRkZTRVQoZnByKSAoUFJPQkVfQ1BV
XyMjZnByIyNfT0ZGU0VUIC0gUFJPQkVfQ1BVX1EwX09GRlNFVCkKIAogc3RydWN0IEluY29taW5n
UHJvYmVSZWNvcmQgewotICAgIHVpbnRwdHJfdCBwcm9iZUhhbmRsZXJGdW5jdGlvbjsKLSAgICB1
aW50cHRyX3QgcHJvYmVBcmc7CisgICAgdWludHB0cl90IHgyNDsKKyAgICB1aW50cHRyX3QgeDI1
OwogICAgIHVpbnRwdHJfdCB4MjY7CiAgICAgdWludHB0cl90IHgyNzsKLSAgICB1aW50cHRyX3Qg
bHI7Ci0gICAgdWludHB0cl90IHNwOwotICAgIHVpbnRwdHJfdCBwcm9iZUVycm9yRnVuY3Rpb247
Ci0gICAgdWludHB0cl90IHVudXNlZDsgLy8gUGFkZGluZyBmb3IgYWxpZ25tZW50LgorICAgIHVp
bnRwdHJfdCB4Mjg7CisgICAgdWludHB0cl90IHgzMDsgLy8gbHIKIH07CiAKLSNkZWZpbmUgSU5f
SEFORExFUl9GVU5DVElPTl9PRkZTRVQgKDAgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fQVJHX09G
RlNFVCAgICAgICAgICAgICAgKDEgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fWDI2X09GRlNFVCAg
ICAgICAgICAgICAgKDIgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fWDI3X09GRlNFVCAgICAgICAg
ICAgICAgKDMgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fTFJfT0ZGU0VUICAgICAgICAgICAgICAg
KDQgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fU1BfT0ZGU0VUICAgICAgICAgICAgICAgKDUgKiBQ
VFJfU0laRSkKLSNkZWZpbmUgSU5fRVJST1JfRlVOQ1RJT05fT0ZGU0VUICAgKDYgKiBQVFJfU0la
RSkKKyNkZWZpbmUgSU5fWDI0X09GRlNFVCAoMCAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9YMjVf
T0ZGU0VUICgxICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1gyNl9PRkZTRVQgKDIgKiBQVFJfU0la
RSkKKyNkZWZpbmUgSU5fWDI3X09GRlNFVCAoMyAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9YMjhf
T0ZGU0VUICg0ICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1gzMF9PRkZTRVQgKDUgKiBQVFJfU0la
RSkKKyNkZWZpbmUgSU5fU0laRSAgICAgICAoNiAqIFBUUl9TSVpFKQogCi1zdGF0aWNfYXNzZXJ0
KElOX0hBTkRMRVJfRlVOQ1RJT05fT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNv
cmQsIHByb2JlSGFuZGxlckZ1bmN0aW9uKSwgIklOX0hBTkRMRVJfRlVOQ1RJT05fT0ZGU0VUIGlz
IGluY29ycmVjdCIpOwotc3RhdGljX2Fzc2VydChJTl9BUkdfT0ZGU0VUID09IG9mZnNldG9mKElu
Y29taW5nUHJvYmVSZWNvcmQsIHByb2JlQXJnKSwgIklOX0FSR19PRkZTRVQgaXMgaW5jb3JyZWN0
Iik7CitzdGF0aWNfYXNzZXJ0KElOX1gyNF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9i
ZVJlY29yZCwgeDI0KSwgIklOX1gyNF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNz
ZXJ0KElOX1gyNV9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDI1KSwg
IklOX1gyNV9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CiBzdGF0aWNfYXNzZXJ0KElOX1gyNl9PRkZT
RVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDI2KSwgIklOX1gyNl9PRkZTRVQg
aXMgaW5jb3JyZWN0Iik7CiBzdGF0aWNfYXNzZXJ0KElOX1gyN19PRkZTRVQgPT0gb2Zmc2V0b2Yo
SW5jb21pbmdQcm9iZVJlY29yZCwgeDI3KSwgIklOX1gyN19PRkZTRVQgaXMgaW5jb3JyZWN0Iik7
Ci1zdGF0aWNfYXNzZXJ0KElOX0xSX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVj
b3JkLCBsciksICJJTl9MUl9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElO
X1NQX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCBzcCksICJJTl9TUF9P
RkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElOX0VSUk9SX0ZVTkNUSU9OX09G
RlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCBwcm9iZUVycm9yRnVuY3Rpb24p
LCAiSU5fRVJST1JfRlVOQ1RJT05fT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2Vy
dChJTl9YMjhfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIHgyOCksICJJ
Tl9YMjJfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9YMzBfT0ZGU0VU
ID09IG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIHgzMCksICJJTl9YMjNfT0ZGU0VUIGlz
IGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9TSVpFID09IHNpemVvZihJbmNvbWluZ1By
b2JlUmVjb3JkKSwgIklOX1NJWkUgaXMgaW5jb3JyZWN0Iik7CiBzdGF0aWNfYXNzZXJ0KCEoc2l6
ZW9mKEluY29taW5nUHJvYmVSZWNvcmQpICYgMHhmKSwgIkluY29taW5nUHJvYmVTdGFjayBtdXN0
IGJlIDE2LWJ5dGUgYWxpZ25lZCIpOwogCiBzdHJ1Y3QgT3V0Z29pbmdQcm9iZVJlY29yZCB7CkBA
IC0yNzgsOSArMjc1LDE3IEBAIHN0YXRpY19hc3NlcnQoT1VUX0xSX09GRlNFVCA9PSBvZmZzZXRv
ZigKIHN0YXRpY19hc3NlcnQoT1VUX1NJWkUgPT0gc2l6ZW9mKE91dGdvaW5nUHJvYmVSZWNvcmQp
LCAiT1VUX1NJWkUgaXMgaW5jb3JyZWN0Iik7CiBzdGF0aWNfYXNzZXJ0KCEoc2l6ZW9mKE91dGdv
aW5nUHJvYmVSZWNvcmQpICYgMHhmKSwgIk91dGdvaW5nUHJvYmVTdGFjayBtdXN0IGJlIDE2LWJ5
dGUgYWxpZ25lZCIpOwogCi0jZGVmaW5lIFNUQVRFX1BDX05PVF9DSEFOR0VEIDAKLSNkZWZpbmUg
U1RBVEVfUENfQ0hBTkdFRCAxCi1zdGF0aWNfYXNzZXJ0KFNUQVRFX1BDX05PVF9DSEFOR0VEICE9
IFNUQVRFX1BDX0NIQU5HRUQsICJTVEFURV9QQ19OT1RfQ0hBTkdFRCBhbmQgU1RBVEVfUENfQ0hB
TkdFRCBzaG91bGQgbm90IGJlIGVxdWFsIik7CitzdHJ1Y3QgTFJSZXN0b3JhdGlvblJlY29yZCB7
CisgICAgdWludHB0cl90IGxyOworICAgIHVpbnRwdHJfdCB1bnVzZWREdW1teVRvRW5zdXJlU2l6
ZUlzMTZCeXRlQWxpZ25lZDsKK307CisKKyNkZWZpbmUgTFJfUkVTVE9SQVRJT05fTFJfT0ZGU0VU
ICgwICogUFRSX1NJWkUpCisjZGVmaW5lIExSX1JFU1RPUkFUSU9OX1NJWkUgICAgICAoMiAqIFBU
Ul9TSVpFKQorCitzdGF0aWNfYXNzZXJ0KExSX1JFU1RPUkFUSU9OX0xSX09GRlNFVCA9PSBvZmZz
ZXRvZihMUlJlc3RvcmF0aW9uUmVjb3JkLCBsciksICJMUl9SRVNUT1JBVElPTl9MUl9PRkZTRVQg
aXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KExSX1JFU1RPUkFUSU9OX1NJWkUgPT0gc2l6
ZW9mKExSUmVzdG9yYXRpb25SZWNvcmQpLCAiTFJfUkVTVE9SQVRJT05fU0laRSBpcyBpbmNvcnJl
Y3QiKTsKK3N0YXRpY19hc3NlcnQoIShzaXplb2YoTFJSZXN0b3JhdGlvblJlY29yZCkgJiAweGYp
LCAiTFJSZXN0b3JhdGlvblJlY29yZCBtdXN0IGJlIDE2LWJ5dGUgYWxpZ25lZCIpOwogCiAvLyBX
ZSB1c2UgeDI5IGFuZCB4MzAgaW5zdGVhZCBvZiBmcCBhbmQgbHIgYmVjYXVzZSBHQ0MncyBpbmxp
bmUgYXNzZW1ibGVyIGRvZXMgbm90IHJlY29nbml6ZSBmcCBhbmQgbHIuCiAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTUxMiBmb3IgZGV0YWlscy4KQEAg
LTI5Myw2ICsyOTgsMTQgQEAgYXNtICgKIAogICAgIC8vIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OnBy
b2JlKCkgaGFzIGFscmVhZHkgZ2VuZXJhdGVkIGNvZGUgdG8gc3RvcmUgc29tZSB2YWx1ZXMgaW4g
YW4KICAgICAvLyBJbmNvbWluZ1Byb2JlUmVjb3JkLiBzcCBwb2ludHMgdG8gdGhlIEluY29taW5n
UHJvYmVSZWNvcmQuCisgICAgLy8KKyAgICAvLyBJbmNvbWluZyByZWdpc3RlciB2YWx1ZXM6Cisg
ICAgLy8gICAgIHgyNDogcHJvYmUgZnVuY3Rpb24KKyAgICAvLyAgICAgeDI1OiBwcm9iZSBhcmcK
KyAgICAvLyAgICAgeDI2OiBzY3JhdGNoLCB3YXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZQorICAg
IC8vICAgICB4Mjc6IHNjcmF0Y2gKKyAgICAvLyAgICAgeDI4OiBQcm9iZTo6ZXhlY3V0ZVByb2Jl
CisgICAgLy8gICAgIHgzMDogcmV0dXJuIGFkZHJlc3MKIAogICAgICJtb3YgICAgICAgeDI2LCBz
cCIgIlxuIgogICAgICJtb3YgICAgICAgeDI3LCBzcCIgIlxuIgpAQCAtMzAxLDYgKzMxNCw4IEBA
IGFzbSAoCiAgICAgImJpYyAgICAgICB4MjcsIHgyNywgIzB4ZiIgIlxuIiAvLyBUaGUgQVJNIEVB
Qkkgc3BlY2lmaWVzIHRoYXQgdGhlIHN0YWNrIG5lZWRzIHRvIGJlIDE2IGJ5dGUgYWxpZ25lZC4K
ICAgICAibW92ICAgICAgIHNwLCB4MjciICJcbiIgLy8gU2V0IHRoZSBzcCB0byBwcm90ZWN0IHRo
ZSBQcm9iZTo6U3RhdGUgZnJvbSBpbnRlcnJ1cHRzIGJlZm9yZSB3ZSBpbml0aWFsaXplIGl0Lgog
CisgICAgInN0cCAgICAgICB4MjQsIHgyNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIiAvLyBTdG9yZSB0aGUgcHJvYmUgaGFu
ZGxlciBmdW5jdGlvbiBhbmQgYXJnIChwcmVsb2FkZWQgaW50byB4MjQgYW5kIHgyNQorCiAgICAg
InN0cCAgICAgICB4MCwgeDEsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9Y
MF9PRkZTRVQpICJdIiAiXG4iCiAgICAgIm1ycyAgICAgICB4MCwgbnpjdiIgIlxuIiAvLyBQcmVs
b2FkIG56Y3YuCiAgICAgInN0cCAgICAgICB4MiwgeDMsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9YMl9PRkZTRVQpICJdIiAiXG4iCkBAIC0zMDksMTAgKzMyNCwxMCBAQCBh
c20gKAogICAgICJzdHAgICAgICAgeDYsIHg3LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQ
Uk9CRV9DUFVfWDZfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJzdHAgICAgICAgeDgsIHg5LCBbc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDhfT0ZGU0VUKSAiXSIgIlxuIgogCi0g
ICAgImxkcCAgICAgICB4MiwgeDMsIFt4MjYsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9IQU5E
TEVSX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIgLy8gUHJlbG9hZCBwcm9iZSBoYW5kbGVyIGZ1
bmN0aW9uIGFuZCBwcm9iZSBhcmcuCi0gICAgImxkcCAgICAgICB4NCwgeDUsIFt4MjYsICMiIFNU
UklOR0laRV9WQUxVRV9PRihJTl9YMjZfT0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVsb2FkIHNhdmVk
IHIyNiBhbmQgcjI3LgotICAgICJsZHAgICAgICAgeDYsIHg3LCBbeDI2LCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoSU5fTFJfT0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVsb2FkIHNhdmVkIGxyIGFuZCBz
cC4KLSAgICAibGRyICAgICAgIHg4LCBbeDI2LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fRVJS
T1JfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVsb2FkIHByb2JlIGVycm9yIGZ1bmN0
aW9uLgorICAgICJsZHAgICAgICAgeDIsIHgzLCBbeDI2LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
SU5fWDI0X09GRlNFVCkgIl0iICJcbiIgLy8gUHJlbG9hZCBzYXZlZCB4MjQgYW5kIHgyNS4KKyAg
ICAibGRwICAgICAgIHg0LCB4NSwgW3gyNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1gyNl9P
RkZTRVQpICJdIiAiXG4iIC8vIFByZWxvYWQgc2F2ZWQgeDI2IGFuZCB4MjcuCisgICAgImxkcCAg
ICAgICB4NiwgeDcsIFt4MjYsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9YMjhfT0ZGU0VUKSAi
XSIgIlxuIiAvLyBQcmVsb2FkIHNhdmVkIHgyOCBhbmQgbHIuCisgICAgImFkZCAgICAgICB4MjYs
IHgyNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1NJWkUpICJcbiIgLy8gQ29tcHV0ZSB0aGUg
c3AgYmVmb3JlIHRoZSBwcm9iZS4KIAogICAgICJzdHAgICAgICAgeDEwLCB4MTEsIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YMTBfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJz
dHAgICAgICAgeDEyLCB4MTMsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9Y
MTJfT0ZGU0VUKSAiXSIgIlxuIgpAQCAtMzIxLDEyICszMzYsMTEgQEAgYXNtICgKICAgICAic3Rw
ICAgICAgIHgxOCwgeDE5LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDE4
X09GRlNFVCkgIl0iICJcbiIKICAgICAic3RwICAgICAgIHgyMCwgeDIxLCBbc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDIwX09GRlNFVCkgIl0iICJcbiIKICAgICAic3RwICAg
ICAgIHgyMiwgeDIzLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDIyX09G
RlNFVCkgIl0iICJcbiIKLSAgICAic3RwICAgICAgIHgyNCwgeDI1LCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfWDI0X09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RwICAgICAg
IHgyLCB4MywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyNF9PRkZTRVQp
ICJdIiAiXG4iIC8vIFN0b3JlIHNhdmVkIHIyNCBhbmQgcjI1IChwcmVsb2FkZWQgaW50byB4MiBh
bmQgeDMgYWJvdmUpLgogICAgICJzdHAgICAgICAgeDQsIHg1LCBbc3AsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9DUFVfWDI2X09GRlNFVCkgIl0iICJcbiIgLy8gU3RvcmUgc2F2ZWQgcjI2
IGFuZCByMjcgKHByZWxvYWRlZCBpbnRvIHg0IGFuZCB4NSBhYm92ZSkuCi0gICAgInN0cCAgICAg
ICB4MjgsIHgyOSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyOF9PRkZT
RVQpICJdIiAiXG4iCi0gICAgInN0cCAgICAgICB4NiwgeDcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4iIC8vIFNhdmUgdmFsdWVzIGxyIGFu
ZCBzcCAocHJlbG9hZGVkIGludG8geDYgYW5kIHg3IGFib3ZlKS4KKyAgICAic3RwICAgICAgIHg2
LCB4MjksIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YMjhfT0ZGU0VUKSAi
XSIgIlxuIgorICAgICJzdHAgICAgICAgeDcsIHgyNiwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0iICJcbiIgLy8gU2F2ZSB2YWx1ZXMgbHIgYW5kIHNw
IChvcmlnaW5hbCBzcCB2YWx1ZSBjb21wdXRlZCBpbnRvIHgyNiBhYm92ZSkuCiAKLSAgICAic3Ry
ICAgICAgIHg2LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihTQVZFRF9QUk9CRV9MUl9PRkZT
RVQpICJdIiAiXG4iIC8vIFNhdmUgYSBkdXBsaWNhdGUgY29weSBvZiBsciAoaW4geDYpLgogICAg
ICJzdHIgICAgICAgeDMwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihTQVZFRF9QUk9CRV9S
RVRVUk5fUENfT0ZGU0VUKSAiXSIgIlxuIiAvLyBTYXZlIGEgZHVwbGljYXRlIGNvcHkgb2YgcmV0
dXJuIHBjIChpbiBscikuCiAKICAgICAiYWRkICAgICAgIHgzMCwgeDMwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoMiAqIFBUUl9TSVpFKSAiXG4iIC8vIFRoZSBQQyBhZnRlciB0aGUgcHJvYmUgaXMg
YXQgMiBpbnN0cnVjdGlvbnMgcGFzdCB0aGUgcmV0dXJuIHBvaW50LgpAQCAtMzM0LDkgKzM0OCw2
IEBAIGFzbSAoCiAKICAgICAic3RwICAgICAgIHgwLCB4MSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX05aQ1ZfT0ZGU0VUKSAiXSIgIlxuIiAvLyBTdG9yZSBuemN2IGFuZCBm
cHNyIChwcmVsb2FkZWQgaW50byB4MCBhbmQgeDEgYWJvdmUpLgogCi0gICAgInN0cCAgICAgICB4
MiwgeDMsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09G
RlNFVCkgIl0iICJcbiIgLy8gU3RvcmUgdGhlIHByb2JlIGhhbmRsZXIgZnVuY3Rpb24gYW5kIGFy
ZyAocHJlbG9hZGVkIGludG8geDIgYW5kIHgzIGFib3ZlKS4KLSAgICAic3RyICAgICAgIHg4LCBb
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihTQVZFRF9QUk9CRV9FUlJPUl9GVU5DVElPTl9PRkZT
RVQpICJdIiAiXG4iIC8vIFN0b3JlIHRoZSBwcm9iZSBoYW5kbGVyIGZ1bmN0aW9uIGFuZCBhcmcg
KHByZWxvYWRlZCBpbnRvIHg4IGFib3ZlKS4KLQogICAgICJhZGQgICAgICAgeDksIHNwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1EwX09GRlNFVCkgIlxuIgogICAgICJzdHAgICAg
ICAgZDAsIGQxLCBbeDksICMiIFNUUklOR0laRV9WQUxVRV9PRihGUFJfT0ZGU0VUKFEwKSkgIl0i
ICJcbiIKICAgICAic3RwICAgICAgIGQyLCBkMywgW3g5LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
RlBSX09GRlNFVChRMikpICJdIiAiXG4iCkBAIC0zNTcsMTMgKzM2OCwxMCBAQCBhc20gKAogCiAg
ICAgIm1vdiAgICAgICB4MjcsIHNwIiAiXG4iIC8vIFNhdmUgdGhlIFByb2JlOjpTdGF0ZSogaW4g
YSBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIuCiAKLSAgICAvLyBJbml0aWFsaXplIFByb2JlOjpTdGF0
ZTo6aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gdG8gemVyby4KLSAgICAic3RyICAgICAgIHh6ciwg
W3gyNywgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05fT0ZG
U0VUKSAiXSIgIlxuIgotCiAgICAgLy8gTm90ZTogd2UgaGF2ZW4ndCBjaGFuZ2VkIHRoZSB2YWx1
ZSBvZiBmcC4gSGVuY2UsIGl0IGlzIHN0aWxsIHBvaW50aW5nIHRvIHRoZSBmcmFtZSBvZgogICAg
IC8vIHRoZSBjYWxsZXIgb2YgdGhlIHByb2JlICh3aGljaCBpcyB3aGF0IHdlIHdhbnQgaW4gb3Jk
ZXIgdG8gcGxheSBuaWNlIHdpdGggZGVidWdnZXJzIGUuZy4gbGxkYikuCiAgICAgIm1vdiAgICAg
ICB4MCwgc3AiICJcbiIgLy8gU2V0IHRoZSBQcm9iZTo6U3RhdGUqIGFyZy4KLSAgICAiYmxyICAg
ICAgIHgyIiAiXG4iIC8vIENhbGwgdGhlIHByb2JlIGhhbmRsZXIgZnVuY3Rpb24gKGxvYWRlZCBp
bnRvIHgyIGFib3ZlKS4KKyAgICAiYmxyICAgICAgIHgyOCIgIlxuIiAvLyBDYWxsIHRoZSBwcm9i
ZSBoYW5kbGVyLgogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBQcm9iZTo6U3RhdGUgaXMgZW50aXJl
bHkgYmVsb3cgdGhlIHJlc3VsdCBzdGFjayBwb2ludGVyIHNvCiAgICAgLy8gdGhhdCByZWdpc3Rl
ciB2YWx1ZXMgYXJlIHN0aWxsIHByZXNlcnZlZCB3aGVuIHdlIGNhbGwgdGhlIGluaXRpYWxpemVT
dGFjawpAQCAtNDQ2LDYzICs0NTQsMzcgQEAgYXNtICgKIAogICAgIC8vIFJlbWFpbmluZyByZWdp
c3RlcnMgdG8gcmVzdG9yZSBhcmU6IGZwc3IsIG56Y3YsIHgyNywgeDI4LCBmcCwgbHIsIHNwLCBh
bmQgcGMuCiAKLSAgICAibW92ICAgICAgIHgzMCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNUQVRF
X1BDX05PVF9DSEFOR0VEKSAiXG4iCi0KICAgICAvLyBUaGUgb25seSB3YXkgdG8gc2V0IHRoZSBw
YyBvbiBBUk02NCAoZnJvbSB1c2VyIHNwYWNlKSBpcyB2aWEgYW4gaW5kaXJlY3QgYnJhbmNoCiAg
ICAgLy8gb3IgYSByZXQsIHdoaWNoIG1lYW5zIHdlJ2xsIG5lZWQgYSBmcmVlIHJlZ2lzdGVyIHRv
IGRvIHNvLiBGb3Igb3VyIHB1cnBvc2VzLCBscgogICAgIC8vIGhhcHBlbnMgdG8gYmUgYXZhaWxh
YmxlIGluIGFwcGxpY2F0aW9ucyBvZiB0aGUgcHJvYmUgd2hlcmUgd2UgbWF5IHdhbnQgdG8KICAg
ICAvLyBjb250aW51ZSBleGVjdXRpbmcgYXQgYSBkaWZmZXJlbnQgbG9jYXRpb24gKGkuZS4gY2hh
bmdlIHRoZSBwYykgYWZ0ZXIgdGhlIHByb2JlCiAgICAgLy8gcmV0dXJucy4gU28sIHRoZSBBUk02
NCBwcm9iZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGFsbG93IHRoZSBwcm9iZSBoYW5kbGVyIHRvCiAg
ICAgLy8gZWl0aGVyIG1vZGlmeSBsciBvciBwYywgYnV0IG5vdCBib3RoIGluIHRoZSBzYW1lIHBy
b2JlIGludm9jYXRpb24uIFRoZSBwcm9iZQotICAgIC8vIG1lY2hhbmlzbSBlbnN1cmVzIHRoYXQg
d2UgbmV2ZXIgdHJ5IHRvIG1vZGlmeSBib3RoIGxyIGFuZCBwYywgZWxzZSBpdCB3aWxsCi0gICAg
Ly8gZmFpbCB3aXRoIGEgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQgaW4gYXJtNjRQcm9iZUVy
cm9yKCkuCisgICAgLy8gbWVjaGFuaXNtIGVuc3VyZXMgdGhhdCB3ZSBuZXZlciB0cnkgdG8gbW9k
aWZ5IGJvdGggbHIgYW5kIHBjIHdpdGggYSBSRUxFQVNFX0FTU0VSVAorICAgIC8vIGluIFByb2Jl
OjpleGVjdXRlUHJvYmUoKS4KIAogICAgIC8vIERldGVybWluZSBpZiB0aGUgcHJvYmUgaGFuZGxl
ciBjaGFuZ2VkIHRoZSBwYy4KKyAgICAibGRyICAgICAgIHgzMCwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIgLy8gcHJlbG9hZCB0aGUgdGFy
Z2V0IHNwLgogICAgICJsZHIgICAgICAgeDI3LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihT
QVZFRF9QUk9CRV9SRVRVUk5fUENfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJsZHIgICAgICAgeDI4
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxu
IgogICAgICJhZGQgICAgICAgeDI3LCB4MjcsICMiIFNUUklOR0laRV9WQUxVRV9PRigyICogUFRS
X1NJWkUpICJcbiIKICAgICAiY21wICAgICAgIHgyNywgeDI4IiAiXG4iCi0gICAgImJlcSAgICAg
IiBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByZXBhcmVPdXRnb2lu
Z1JlY29yZHMpICJcbiIKLQotICAgIC8vIHBjIHdhcyBjaGFuZ2VkLiBEZXRlcm1pbmUgaWYgdGhl
IHByb2JlIGhhbmRsZXIgYWxzbyBjaGFuZ2VkIGxyLgotICAgICJsZHIgICAgICAgeDI3LCBbc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihTQVZFRF9QUk9CRV9MUl9PRkZTRVQpICJdIiAiXG4iCi0g
ICAgImxkciAgICAgICB4MjgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9M
Ul9PRkZTRVQpICJdIiAiXG4iCi0gICAgImNtcCAgICAgICB4MjcsIHgyOCIgIlxuIgotICAgICJi
bmUgICAgICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVFcnJvcikg
IlxuIgotCi0gICAgIm1vdiAgICAgICB4MzAsICMiIFNUUklOR0laRV9WQUxVRV9PRihTVEFURV9Q
Q19DSEFOR0VEKSAiXG4iCi0KLSAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJh
bXBvbGluZVByZXBhcmVPdXRnb2luZ1JlY29yZHMpICI6IiAiXG4iCisgICAgImJuZSAgICAgIiBM
T0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZUVuZCkgIlxuIgogCi0gICAg
ImxkciAgICAgICB4MjksIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX1JF
VFVSTl9QQ19PRkZTRVQpICJdIiAiXG4iIC8vIFByZWxvYWQgdGhlIHByb2JlIHJldHVybiBzaXRl
IHBjLgotCi0gICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVGaWxs
T3V0Z29pbmdQcm9iZVJlY29yZHMpICI6IiAiXG4iCi0KLSAgICAiY2JueiAgICAgICB4MzAsICIg
TE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVFbmQpICJcbiIgLy8gU2tp
cCBsciByZXN0b3JhdGlvbiBzZXR1cCBpZiBzdGF0ZSAoaW4gbHIpID09IFNUQVRFX1BDX0NIQU5H
RUQuCi0KLSAgICAvLyBJbiBvcmRlciB0byByZXN0b3JlIGxyLCB3ZSBuZWVkIHRvIGRvIHRoZSBy
ZXN0b3JhdGlvbiBhdCB0aGUgcHJvYmUgcmV0dXJuIHNpdGUuCi0gICAgLy8gVGhlIHByb2JlIHJl
dHVybiBzaXRlIGV4cGVjdHMgc3AgdG8gYmUgcG9pbnRpbmcgYXQgYW4gT3V0Z29pbmdQcm9iZVJl
Y29yZCBzdWNoIHRoYXQKLSAgICAvLyBwb3BwaW5nIHRoZSBPdXRnb2luZ1Byb2JlUmVjb3JkIHdp
bGwgeWllbGQgdGhlIGRlc2lyZWQgc3AuIFRoZSBwcm9iZSByZXR1cm4gc2l0ZQotICAgIC8vIGFs
c28gZXhwZWN0cyB0aGUgbHIgdmFsdWUgdG8gYmUgcmVzdG9yZWQgaXMgc3Rhc2hlZCBpbiB0aGUg
T3V0Z29pbmdQcm9iZVJlY29yZC4KLSAgICAvLyBXZSBjYW4gbWFrZSB0aGlzIGhhcHBlbiBieSBw
dXNoaW5nIDIgT3V0Z29pbmdQcm9iZVJlY29yZHMgaW5zdGVhZCBvZiAxOgotICAgIC8vIDEgZm9y
IHRoZSBwcm9iZSByZXR1cm4gc2l0ZSwgYW5kIDEgYXQgY3RpTWFzbVByb2JlVHJhbXBvbGluZUVu
ZCBmb3IgcmV0dXJuaW5nIGZyb20KLSAgICAvLyB0aGlzIHByb2JlLgotCi0gICAgLy8gRmlsbCBp
biB0aGUgT3V0Z29pbmdQcm9iZVN0YWNrIGZvciB0aGUgcHJvYmUgcmV0dXJuIHNpdGUuCi0gICAg
ImxkciAgICAgICB4MzAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9P
RkZTRVQpICJdIiAiXG4iCi0gICAgInN1YiAgICAgICB4MzAsIHgzMCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKE9VVF9TSVpFKSAiXG4iCisgICAgIC8vIFdlIGRpZG4ndCBjaGFuZ2UgdGhlIFBDLiBT
bywgbGV0J3MgcHJlcGFyZSBmb3Igc2V0dGluZyBhIHBvdGVudGlhbGx5IG5ldyBsciB2YWx1ZS4K
IAorICAgICAvLyAxLiBNYWtlIHJvb20gZm9yIHRoZSBMUlJlc3RvcmF0aW9uUmVjb3JkLiBUaGUg
cHJvYmUgc2l0ZSB3aWxsIHBvcCB0aGlzIG9mZiBsYXRlci4KKyAgICAic3ViICAgICAgIHgzMCwg
eDMwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoTFJfUkVTVE9SQVRJT05fU0laRSkgIlxuIgorICAg
ICAvLyAyLiBTdG9yZSB0aGUgbHAgdmFsdWUgdG8gcmVzdG9yZSBhdCB0aGUgcHJvYmUgcmV0dXJu
IHNpdGUuCiAgICAgImxkciAgICAgICB4MjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICB4MjcsIFt4MzAsICMi
IFNUUklOR0laRV9WQUxVRV9PRihPVVRfTFJfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgLy8gU2V0
IHVwIHRoZSBzcCBhbmQgcGMgdmFsdWVzIHNvIHRoYXQgY3RpTWFzbVByb2JlVHJhbXBvbGluZUVu
ZCB3aWxsIHJldHVybiB0byB0aGUgcHJvYmUgcmV0dXJuIHNpdGUuCi0gICAgInN0ciAgICAgICB4
MzAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAi
XG4iCi0gICAgInN0ciAgICAgICB4MjksIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X0NQVV9QQ19PRkZTRVQpICJdIiAiXG4iIC8vIFN0b3JlIHRoZSBwcm9iZSByZXR1cm4gc2l0ZSBw
YyAocHJlbG9hZGVkIGludG8gZnAgYWJvdmUpLgorICAgICJzdHIgICAgICAgeDI3LCBbeDMwLCAj
IiBTVFJJTkdJWkVfVkFMVUVfT0YoTFJfUkVTVE9SQVRJT05fTFJfT0ZGU0VUKSAiXSIgIlxuIgor
ICAgICAvLyAzLiBGb3JjZSB0aGUgcmV0dXJuIHJhbXAgdG8gcmV0dXJuIHRvIHRoZSBwcm9iZSBy
ZXR1cm4gc2l0ZS4KKyAgICAibGRyICAgICAgIHgyNywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoU0FWRURfUFJPQkVfUkVUVVJOX1BDX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAg
IHgyNywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0i
ICJcbiIKIAogICAgIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lRW5k
KSAiOiIgIlxuIgogCi0gICAgLy8gRmlsbCBpbiB0aGUgT3V0Z29pbmdQcm9iZVN0YWNrLgotICAg
ICJsZHIgICAgICAgeDMwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfU1Bf
T0ZGU0VUKSAiXSIgIlxuIgorICAgIC8vIEZpbGwgaW4gdGhlIE91dGdvaW5nUHJvYmVSZWNvcmQu
CiAgICAgInN1YiAgICAgICB4MzAsIHgzMCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9TSVpF
KSAiXG4iCiAKICAgICAibGRwICAgICAgIHgyNywgeDI4LCBbc3AsICMiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfTlpDVl9PRkZTRVQpICJdIiAiXG4iCkBAIC01MTAsNTIgKzQ5MiwzNiBA
QCBhc20gKAogICAgICJsZHAgICAgICAgeDI3LCB4MjgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9YMjdfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJzdHAgICAgICAgeDI3LCB4
MjgsIFt4MzAsICMiIFNUUklOR0laRV9WQUxVRV9PRihPVVRfWDI3X09GRlNFVCkgIl0iICJcbiIK
ICAgICAibGRyICAgICAgIHgyNywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X0ZQX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIHgyOCwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAgICAg
IHgyOCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0i
ICJcbiIgLy8gU2V0IHVwIHRoZSBvdXRnb2luZyByZWNvcmQgc28gdGhhdCB3ZSdsbCBqdW1wIHRv
IHRoZSBuZXcgUEMuCiAgICAgInN0cCAgICAgICB4MjcsIHgyOCwgW3gzMCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKE9VVF9GUF9PRkZTRVQpICJdIiAiXG4iCiAgICAgIm1vdiAgICAgICBzcCwgeDMw
IiAiXG4iCiAKLSAgICAvLyBSZXN0b3JlIHRoZSByZW1haW5pbmcgcmVnaXN0ZXJzIGFuZCBwb3Ag
dGhlIE91dGdvaW5nUHJvYmVTdGFjay4KKyAgICAvLyBSZXN0b3JlIHRoZSByZW1haW5pbmcgcmVn
aXN0ZXJzIGFuZCBwb3AgdGhlIE91dGdvaW5nUHJvYmVSZWNvcmQuCiAgICAgImxkcCAgICAgICB4
MjcsIHgyOCwgW3NwXSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKDIgKiBQVFJfU0laRSkgIlxuIgog
ICAgICJtc3IgICAgICAgbnpjdiwgeDI3IiAiXG4iCiAgICAgIm1zciAgICAgICBmcHNyLCB4Mjgi
ICJcbiIKICAgICAibGRwICAgICAgIHgyNywgeDI4LCBbc3BdLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoMiAqIFBUUl9TSVpFKSAiXG4iCiAgICAgImxkcCAgICAgICB4MjksIHgzMCwgW3NwXSwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKDIgKiBQVFJfU0laRSkgIlxuIgogICAgICJyZXQiICJcbiIKLQot
ICAgIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lRXJyb3IpICI6IiAi
XG4iCi0gICAgLy8gVGhlIHByb2JlIGhhbmRsZXIgY2hhbmdlZCBib3RoIGxyIGFuZCBwYy4gVGhp
cyBpcyBub3Qgc3VwcG9ydGVkIGZvciBBUk02NC4KLSAgICAibGRyICAgICAgIHgxLCBbc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihTQVZFRF9QUk9CRV9FUlJPUl9GVU5DVElPTl9PRkZTRVQpICJd
IiAiXG4iCi0gICAgIm1vdiAgICAgICB4MCwgc3AiICJcbiIgLy8gU2V0IHRoZSBQcm9iZTo6U3Rh
dGUqIGFyZy4KLSAgICAiYmxyICAgICAgIHgxIiAiXG4iCi0gICAgImJyayAgICAgICAjMHgxMDAw
IiAvLyBTaG91bGQgbmV2ZXIgcmV0dXJuIGhlcmUuCiApOwogI2VuZGlmIC8vIENPTVBJTEVSKEdD
Q19PUl9DTEFORykKIAotc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBhcm02NFBy
b2JlRXJyb3IoUHJvYmU6OlN0YXRlKikKLXsKLSAgICBkYXRhTG9nKCJNYWNyb0Fzc2VtYmxlciBw
cm9iZSBFUlJPUjogQVJNNjQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgcHJvYmUgY2hhbmdpbmcgYm90
aCBMUiBhbmQgUEMuXG4iKTsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
CiB2b2lkIE1hY3JvQXNzZW1ibGVyOjpwcm9iZShQcm9iZTo6RnVuY3Rpb24gZnVuY3Rpb24sIHZv
aWQqIGFyZykKIHsKICAgICBzdWI2NChUcnVzdGVkSW1tMzIoc2l6ZW9mKEluY29taW5nUHJvYmVS
ZWNvcmQpKSwgc3ApOwogCisgICAgc3RvcmVQYWlyNjQoeDI0LCB4MjUsIHNwLCBUcnVzdGVkSW1t
MzIob2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDI0KSkpOwogICAgIHN0b3JlUGFpcjY0
KHgyNiwgeDI3LCBzcCwgVHJ1c3RlZEltbTMyKG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQs
IHgyNikpKTsKLSAgICBhZGQ2NChUcnVzdGVkSW1tMzIoc2l6ZW9mKEluY29taW5nUHJvYmVSZWNv
cmQpKSwgc3AsIHgyNik7Ci0gICAgc3RvcmVQYWlyNjQobHIsIHgyNiwgc3AsIFRydXN0ZWRJbW0z
MihvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCBscikpKTsgLy8gU2F2ZSBsciBhbmQgb3Jp
Z2luYWwgc3AgdmFsdWUuCi0gICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGZ1bmN0aW9uKSksIHgyNik7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZyksIHgy
Nyk7Ci0gICAgc3RvcmVQYWlyNjQoeDI2LCB4MjcsIHNwLCBUcnVzdGVkSW1tMzIob2Zmc2V0b2Yo
SW5jb21pbmdQcm9iZVJlY29yZCwgcHJvYmVIYW5kbGVyRnVuY3Rpb24pKSk7Ci0gICAgbW92ZShU
cnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFybTY0UHJvYmVFcnJvcikpLCB4
MjcpOwotICAgIHN0b3JlNjQoeDI3LCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1Byb2Jl
UmVjb3JkLCBwcm9iZUVycm9yRnVuY3Rpb24pKSk7Ci0KKyAgICBzdG9yZVBhaXI2NCh4MjgsIHgz
MCwgc3AsIFRydXN0ZWRJbW0zMihvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjgpKSk7
IC8vIE5vdGU6IHgzMCBpcyBsci4KICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oY3RpTWFzbVByb2JlVHJhbXBvbGluZSkpLCB4MjYpOworICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihQcm9iZTo6ZXhlY3V0ZVByb2JlKSks
IHgyOCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1
bmN0aW9uKSksIHgyNCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZyksIHgyNSk7CiAgICAg
bV9hc3NlbWJsZXIuYmxyKHgyNik7CiAKICAgICAvLyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIHNo
b3VsZCBoYXZlIHJlc3RvcmVkIGV2ZXJ5IHJlZ2lzdGVyIGV4Y2VwdCBmb3IgbHIgYW5kIHRoZSBz
cC4KLSAgICBsb2FkNjQoQWRkcmVzcyhzcCwgb2Zmc2V0b2YoT3V0Z29pbmdQcm9iZVJlY29yZCwg
bHIpKSwgbHIpOwotICAgIGFkZDY0KFRydXN0ZWRJbW0zMihzaXplb2YoT3V0Z29pbmdQcm9iZVJl
Y29yZCkpLCBzcCk7CisgICAgbG9hZDY0KEFkZHJlc3Moc3AsIG9mZnNldG9mKExSUmVzdG9yYXRp
b25SZWNvcmQsIGxyKSksIGxyKTsKKyAgICBhZGQ2NChUcnVzdGVkSW1tMzIoc2l6ZW9mKExSUmVz
dG9yYXRpb25SZWNvcmQpKSwgc3ApOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNLmNwcAkocmV2aXNpb24gMjIwOTM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFM
KQogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQu
aCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKICNpZiBPUyhMSU5VWCkKQEAgLTEwMCw2
ICsxMDEsOCBAQCB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRoVW5hbGlnCiAKIGV4
dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7CiAKK3VzaW5nIG5hbWVzcGFj
ZSBBUk1SZWdpc3RlcnM7CisKICNpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCiAKIC8vIFRoZSBm
b2xsb3dpbmcgYXJlIG9mZnNldHMgZm9yIFByb2JlOjpTdGF0ZSBmaWVsZHMgYWNjZXNzZWQKQEAg
LTI1MCw2ICsyNTMsMzEgQEAgQ09NUElMRV9BU1NFUlQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNb
QQogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFByb2JlOjpTdGF0ZSkgPT0gUFJPQkVfU0laRSwgUHJv
YmVTdGF0ZV9zaXplX21hdGNoZXNfY3RpTWFzbVByb2JlVHJhbXBvbGluZSk7CiAjdW5kZWYgUFJP
QkVfT0ZGU0VUT0YKIAorc3RydWN0IEluY29taW5nUmVjb3JkIHsKKyAgICB1aW50cHRyX3QgbHI7
CisgICAgdWludHB0cl90IGlwOworICAgIHVpbnRwdHJfdCByNjsKKyAgICB1aW50cHRyX3QgcjA7
CisgICAgdWludHB0cl90IHIxOworICAgIHVpbnRwdHJfdCByMjsKK307CisKKyNkZWZpbmUgSU5f
TFJfT0ZGU0VUICgwICogUFRSX1NJWkUpCisjZGVmaW5lIElOX0lQX09GRlNFVCAoMSAqIFBUUl9T
SVpFKQorI2RlZmluZSBJTl9SNl9PRkZTRVQgKDIgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fUjBf
T0ZGU0VUICgzICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1IxX09GRlNFVCAoNCAqIFBUUl9TSVpF
KQorI2RlZmluZSBJTl9SMl9PRkZTRVQgKDUgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fU0laRSAg
ICAgICg2ICogUFRSX1NJWkUpCisKK3N0YXRpY19hc3NlcnQoSU5fTFJfT0ZGU0VUID09IG9mZnNl
dG9mKEluY29taW5nUmVjb3JkLCBsciksICJJTl9MUl9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Citz
dGF0aWNfYXNzZXJ0KElOX0lQX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgaXAp
LCAiSU5fSVBfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9SNl9PRkZT
RVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHI2KSwgIklOX1I2X09GRlNFVCBpcyBpbmNv
cnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fUjBfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5n
UmVjb3JkLCByMCksICJJTl9SMF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0
KElOX1IxX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjEpLCAiSU5fUjFfT0ZG
U0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9SMl9PRkZTRVQgPT0gb2Zmc2V0
b2YoSW5jb21pbmdSZWNvcmQsIHIyKSwgIklOX1IyX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0
YXRpY19hc3NlcnQoSU5fU0laRSA9PSBzaXplb2YoSW5jb21pbmdSZWNvcmQpLCAiSU5fU0laRSBp
cyBpbmNvcnJlY3QiKTsKKwogYXNtICgKICAgICAiLnRleHQiICJcbiIKICAgICAiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiXG4iCkBAIC0yNTcsNjYgKzI4
NSw3MiBAQCBhc20gKAogICAgIElOTElORV9BUk1fRlVOQ1RJT04oY3RpTWFzbVByb2JlVHJhbXBv
bGluZSkgIlxuIgogICAgIFNZTUJPTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZSkgIjoi
ICJcbiIKIAotICAgIC8vIE1hY3JvQXNzZW1ibGVyQVJNOjpwcm9iZSgpIGhhcyBhbHJlYWR5IGdl
bmVyYXRlZCBjb2RlIHRvIHN0b3JlIHNvbWUgdmFsdWVzLgotICAgIC8vIFRoZSB0b3Agb2Ygc3Rh
Y2sgbm93IGxvb2tzIGxpa2UgdGhpczoKLSAgICAvLyAgICAgZXNwWzAgKiBwdHJTaXplXTogcHJv
YmUgaGFuZGxlciBmdW5jdGlvbgotICAgIC8vICAgICBlc3BbMSAqIHB0clNpemVdOiBwcm9iZSBh
cmcKLSAgICAvLyAgICAgZXNwWzIgKiBwdHJTaXplXTogc2F2ZWQgcjMgLyBTMAotICAgIC8vICAg
ICBlc3BbMyAqIHB0clNpemVdOiBzYXZlZCBpcAotICAgIC8vICAgICBlc3BbNCAqIHB0clNpemVd
OiBzYXZlZCBscgotICAgIC8vICAgICBlc3BbNSAqIHB0clNpemVdOiBzYXZlZCBzcAorICAgIC8v
IE1hY3JvQXNzZW1ibGVyQVJNdjc6OnByb2JlKCkgaGFzIGFscmVhZHkgZ2VuZXJhdGVkIGNvZGUg
dG8gc3RvcmUgc29tZSB2YWx1ZXMuCisgICAgLy8gVGhlIHRvcCBvZiBzdGFjayBub3cgY29udGFp
bnMgdGhlIEluY29taW5nUmVjb3JkLgorICAgIC8vCisgICAgLy8gSW5jb21pbmcgcmVnaXN0ZXIg
dmFsdWVzOgorICAgIC8vICAgICByMDogcHJvYmUgZnVuY3Rpb24KKyAgICAvLyAgICAgcjE6IHBy
b2JlIGFyZworICAgIC8vICAgICByMjogUHJvYmU6OmV4ZWN1dGVQcm9iZQorICAgIC8vICAgICBy
Njogc2NyYXRjaAorICAgIC8vICAgICBpcDogc2NyYXRjaCwgd2FzIGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUKKyAgICAvLyAgICAgbHI6IHJldHVybiBhZGRyZXNzCiAKICAgICAibW92ICAgICAgIGlw
LCBzcCIgIlxuIgotICAgICJtb3YgICAgICAgcjMsIHNwIiAiXG4iCi0gICAgInN1YiAgICAgICBy
MywgcjMsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9TSVpFICsgT1VUX1NJWkUpICJcbiIK
KyAgICAibW92ICAgICAgIHI2LCBzcCIgIlxuIgorICAgICJzdWIgICAgICAgcjYsIHI2LCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4iCiAKICAgICAvLyBU
aGUgQVJNIEVBQkkgc3BlY2lmaWVzIHRoYXQgdGhlIHN0YWNrIG5lZWRzIHRvIGJlIDE2IGJ5dGUg
YWxpZ25lZC4KLSAgICAiYmljICAgICAgIHIzLCByMywgIzB4ZiIgIlxuIgotICAgICJtb3YgICAg
ICAgc3AsIHIzIiAiXG4iIC8vIFNldCB0aGUgc3AgdG8gcHJvdGVjdCB0aGUgUHJvYmU6OlN0YXRl
IGZyb20gaW50ZXJydXB0cyBiZWZvcmUgd2UgaW5pdGlhbGl6ZSBpdC4KKyAgICAiYmljICAgICAg
IHI2LCByNiwgIzB4ZiIgIlxuIgorICAgICJtb3YgICAgICAgc3AsIHI2IiAiXG4iIC8vIFNldCB0
aGUgc3AgdG8gcHJvdGVjdCB0aGUgUHJvYmU6OlN0YXRlIGZyb20gaW50ZXJydXB0cyBiZWZvcmUg
d2UgaW5pdGlhbGl6ZSBpdC4KIAorICAgICJzdHIgICAgICAgcjAsIFtzcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3Ry
ICAgICAgIHIxLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9BUkdfT0ZGU0VUKSAi
XSIgIlxuIgogICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9QQ19PRkZTRVQpICJdIiAiXG4iCi0gICAgImFkZCAgICAgICBsciwgc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjBfT0ZGU0VUKSAiXG4iCi0gICAgInN0bWlhICAg
ICBsciwgeyByMC1yMTEgfSIgIlxuIgorCisgICAgImFkZCAgICAgICByMCwgaXAsICMiIFNUUklO
R0laRV9WQUxVRV9PRihJTl9TSVpFKSAiXG4iCisgICAgInN0ciAgICAgICByMCwgW3NwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKKworICAgICJh
ZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IzX09GRlNF
VCkgIlxuIgorICAgICJzdG1pYSAgICAgbHIsIHsgcjMtcjUgfSIgIlxuIgorICAgICJhZGQgICAg
ICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1I3X09GRlNFVCkgIlxu
IgorICAgICJzdG1pYSAgICAgbHIsIHsgcjctcjExIH0iICJcbiIKICAgICAibXJzICAgICAgIGxy
LCBBUFNSIiAiXG4iCiAgICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0FQU1JfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJ2bXJzICAgICAgbHIsIEZQ
U0NSIiAiXG4iCiAgICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX0ZQU0NSX09GRlNFVCkgIl0iICJcbiIKIAotICAgICJsZHIgICAgICAgbHIsIFtp
cCwgIzAgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIKLSAgICAic3Ry
ICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElP
Tl9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICBsciwgW2lwLCAjMSAqICIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgbHIsIFtzcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0FSR19PRkZTRVQpICJdIiAiXG4iCi0gICAgImxk
ciAgICAgICBsciwgW2lwLCAjMiAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIg
IlxuIgotICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X0NQVV9SM19PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICBsciwgW2lwLCAjMyAqICIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgbHIs
IFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9JUF9PRkZTRVQpICJdIiAiXG4i
Ci0gICAgImxkciAgICAgICBsciwgW2lwLCAjNCAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9T
SVpFKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICBsciwgW2lw
LCAjNSAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIgIlxuIgotICAgICJzdHIg
ICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQp
ICJdIiAiXG4iCi0KLSAgICAibGRyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgICAgICAgcjQsIFtpcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX0xSX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAg
ICAgIHI1LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9JUF9PRkZTRVQpICJdIiAiXG4i
CisgICAgImxkciAgICAgICByNiwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUjZfT0ZG
U0VUKSAiXSIgIlxuIgorICAgICJsZHIgICAgICAgcjcsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKElOX1IwX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAgICAgIHI4LCBbaXAsICMiIFNU
UklOR0laRV9WQUxVRV9PRihJTl9SMV9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciAgICAgICBy
OSwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUjJfT0ZGU0VUKSAiXSIgIlxuIgorICAg
ICJzdHIgICAgICAgcjQsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9P
RkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICByNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0lQX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIHI2LCBb
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjZfT0ZGU0VUKSAiXSIgIlxuIgor
ICAgICJzdHIgICAgICAgcjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9S
MF9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICByOCwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1IxX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIHI5
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjJfT0ZGU0VUKSAiXSIgIlxu
IgogCiAgICAgImFkZCAgICAgICBpcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9D
UFVfRDBfT0ZGU0VUKSAiXG4iCiAgICAgInZzdG1pYS42NCBpcCEsIHsgZDAtZDE1IH0iICJcbiIK
ICNpZiBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKICAgICAidnN0bWlhLjY0
IGlwISwgeyBkMTYtZDMxIH0iICJcbiIKICNlbmRpZgotICAgICJtb3YgICAgICAgZnAsIHNwIiAi
XG4iIC8vIFNhdmUgdGhlIFByb2JlOjpTdGF0ZSouCiAKLSAgICAvLyBJbml0aWFsaXplIFByb2Jl
OjpTdGF0ZTo6aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gdG8gemVyby4KLSAgICAibW92ICAgICAg
IHIwLCAjMCIgIlxuIgotICAgICJzdHIgICAgICAgcjAsIFtmcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIgorCS8vIHI1IGlz
IGEgY2FsbGVlIHNhdmVkIHJlZ2lzdGVyLiBXZSdsbCB1c2UgaXQgZm9yIHByZXNlcnZpbmcgdGhl
IFByb2JlOjpTdGF0ZSouCisJLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMv
MjYxNDE5L2FybS10by1jLWNhbGxpbmctY29udmVudGlvbi1yZWdpc3RlcnMtdG8tc2F2ZSMyNjE0
OTYKKyAgICAibW92ICAgICAgIHI1LCBzcCIgIlxuIgogCi0gICAgImxkciAgICAgICBpcCwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiXSIg
IlxuIgogICAgICJtb3YgICAgICAgcjAsIHNwIiAiXG4iIC8vIHRoZSBQcm9iZTo6U3RhdGUqIGFy
Zy4KLSAgICAiYmx4ICAgICAgIGlwIiAiXG4iCisgICAgImJseCAgICAgICByMiIgIlxuIiAvLyBD
YWxsIFByb2JlOjpleGVjdXRlUHJvYmUuCiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIFByb2JlOjpT
dGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgc28KICAgICAv
LyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VydmVkIHdoZW4gd2UgY2FsbCB0
aGUgaW5pdGlhbGl6ZVN0YWNrCiAgICAgLy8gZnVuY3Rpb24uCi0gICAgImxkciAgICAgICByMSwg
W2ZwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIg
Ly8gUmVzdWx0IHNwLgotICAgICJhZGQgICAgICAgcjIsIGZwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4iIC8vIEVuZCBvZiBQcm92ZUNvbnRleHQgKyBi
dWZmZXIuCisgICAgImxkciAgICAgICByMSwgW3I1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIgLy8gUmVzdWx0IHNwLgorICAgICJhZGQgICAgICAg
cjIsIHI1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4i
IC8vIEVuZCBvZiBQcm92ZUNvbnRleHQgKyBidWZmZXIuCiAgICAgImNtcCAgICAgICByMSwgcjIi
ICJcbiIKICAgICAiYmdlICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFt
cG9saW5lUHJvYmVTdGF0ZUlzU2FmZSkgIlxuIgogCkBAIC0zMjgsMzIgKzM2MiwzMCBAQCBhc20g
KAogICAgIC8vIENvcHkgdGhlIFByb2JlOjpTdGF0ZSB0byB0aGUgc2FmZSBwbGFjZS4KICAgICAv
LyBOb3RlOiB3ZSBoYXZlIHRvIGNvcHkgZnJvbSBsb3cgYWRkcmVzcyB0byBoaWdoZXIgYWRkcmVz
cyBiZWNhdXNlIHdlJ3JlIG1vdmluZyB0aGUKICAgICAvLyBQcm9iZTo6U3RhdGUgdG8gYSBsb3dl
ciBhZGRyZXNzLgotICAgICJtb3YgICAgICAgcjUsIGZwIiAiXG4iCi0gICAgIm1vdiAgICAgICBy
NiwgcjEiICJcbiIKLSAgICAiYWRkICAgICAgIHI3LCBmcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX1NJWkUpICJcbiIKKyAgICAiYWRkICAgICAgIHI3LCByNSwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX1NJWkUpICJcbiIKIAogICAgIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNt
UHJvYmVUcmFtcG9saW5lQ29weUxvb3ApICI6IiAiXG4iCiAgICAgImxkciAgICAgICByMywgW3I1
XSwgIzQiICJcbiIKICAgICAibGRyICAgICAgIHI0LCBbcjVdLCAjNCIgIlxuIgotICAgICJzdHIg
ICAgICAgcjMsIFtyNl0sICM0IiAiXG4iCi0gICAgInN0ciAgICAgICByNCwgW3I2XSwgIzQiICJc
biIKKyAgICAic3RyICAgICAgIHIzLCBbcjFdLCAjNCIgIlxuIgorICAgICJzdHIgICAgICAgcjQs
IFtyMV0sICM0IiAiXG4iCiAgICAgImNtcCAgICAgICByNSwgcjciICJcbiIKICAgICAiYmx0ICAg
ICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lQ29weUxvb3ApICJc
biIKIAotICAgICJtb3YgICAgICAgZnAsIHIxIiAiXG4iCisgICAgIm1vdiAgICAgICByNSwgc3Ai
ICJcbiIKIAogICAgIC8vIENhbGwgaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gaWYgcHJlc2VudC4K
ICAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJ
c1NhZmUpICI6IiAiXG4iCi0gICAgImxkciAgICAgICByMiwgW2ZwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCisgICAgImxk
ciAgICAgICByMiwgW3I1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9TVEFDS19G
VU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCiAgICAgImNtcCAgICAgICByMiwgIzAiICJcbiIKICAg
ICAiYmVxICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUmVz
dG9yZVJlZ2lzdGVycykgIlxuIgogCi0gICAgIm1vdiAgICAgICByMCwgZnAiICJcbiIgLy8gU2V0
IHRoZSBQcm9iZTo6U3RhdGUqIGFyZy4KKyAgICAibW92ICAgICAgIHIwLCByNSIgIlxuIiAvLyBT
ZXQgdGhlIFByb2JlOjpTdGF0ZSogYXJnLgogICAgICJibHggICAgICAgcjIiICJcbiIgLy8gQ2Fs
bCB0aGUgaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gKGxvYWRlZCBpbnRvIHIyIGFib3ZlKS4KIAog
ICAgIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUmVzdG9yZVJlZ2lz
dGVycykgIjoiICJcbiIKIAotICAgICJtb3YgICAgICAgc3AsIGZwIiAiXG4iCisgICAgIm1vdiAg
ICAgICBzcCwgcjUiICJcbiIgLy8gRW5zdXJlIHRoYXQgc3AgcG9pbnRzIHRvIHRoZSBQcm9iZTo6
U3RhdGUqLgogCiAgICAgLy8gVG8gZW5hYmxlIHByb2JlcyB0byBtb2RpZnkgcmVnaXN0ZXIgc3Rh
dGUsIHdlIGNvcHkgYWxsIHJlZ2lzdGVycwogICAgIC8vIG91dCBvZiB0aGUgUHJvYmU6OlN0YXRl
IGJlZm9yZSByZXR1cm5pbmcuCkBAIC0zOTksMTcgKzQzMSwyMCBAQCBhc20gKAogCiB2b2lkIE1h
Y3JvQXNzZW1ibGVyOjpwcm9iZShQcm9iZTo6RnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZykK
IHsKLSAgICBwdXNoKFJlZ2lzdGVySUQ6OnNwKTsKLSAgICBwdXNoKFJlZ2lzdGVySUQ6OmxyKTsK
LSAgICBwdXNoKFJlZ2lzdGVySUQ6OmlwKTsKLSAgICBwdXNoKFJlZ2lzdGVySUQ6OlMwKTsKLSAg
ICAvLyBUaGUgZm9sbG93aW5nIHVzZXMgUmVnaXN0ZXJJRDo6UzAuIFNvLCB0aGV5IG11c3QgY29t
ZSBhZnRlciB3ZSBwdXNoIFMwIGFib3ZlLgotICAgIHB1c2godHJ1c3RlZEltbTMyRnJvbVB0cihh
cmcpKTsKLSAgICBwdXNoKHRydXN0ZWRJbW0zMkZyb21QdHIoZnVuY3Rpb24pKTsKLQotICAgIG1v
dmUodHJ1c3RlZEltbTMyRnJvbVB0cihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSwgUmVnaXN0ZXJJ
RDo6UzApOwotICAgIG1fYXNzZW1ibGVyLmJseChSZWdpc3RlcklEOjpTMCk7CisgICAgc3ViMzIo
VHJ1c3RlZEltbTMyKHNpemVvZihJbmNvbWluZ1JlY29yZCkpLCBzcCk7CiAKKyAgICBzdG9yZTMy
KGxyLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgbHIpKSk7CisgICAgc3Rv
cmUzMihpcCwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGlwKSkpOworICAg
IHN0b3JlMzIocjYsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByNikpKTsg
Ly8gUzAgPT0gcjYuCisgICAgc3RvcmUzMihyMCwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21p
bmdSZWNvcmQsIHIwKSkpOworICAgIHN0b3JlMzIocjEsIEFkZHJlc3Moc3AsIG9mZnNldG9mKElu
Y29taW5nUmVjb3JkLCByMSkpKTsKKyAgICBzdG9yZTMyKHIyLCBBZGRyZXNzKHNwLCBvZmZzZXRv
ZihJbmNvbWluZ1JlY29yZCwgcjIpKSk7CisgICAgLy8gVGhlIGZvbGxvd2luZyB1c2VzIFJlZ2lz
dGVySUQ6OlMwLiBTbywgdGhleSBtdXN0IGNvbWUgYWZ0ZXIgd2UgcHJlc2VydmUgUzAgYWJvdmUu
CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9u
KSksIHIwKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJnKSwgcjEpOworICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihQcm9iZTo6ZXhlY3V0ZVByb2JlKSks
IHIyKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY3Rp
TWFzbVByb2JlVHJhbXBvbGluZSkpLCBpcCk7CisgICAgbV9hc3NlbWJsZXIuYmx4KGlwKTsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkocmV2aXNpb24gMjIw
OTM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTg2LDIzICsxNTg2LDYgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBtX2Fzc2VtYmxlci5ibHgoQVJNUmVnaXN0ZXJzOjpTMSk7CiAgICAgfQogCi0jaWYgRU5B
QkxFKE1BU01fUFJPQkUpCi0gICAgaW5saW5lIFRydXN0ZWRJbW0zMiB0cnVzdGVkSW1tMzJGcm9t
UHRyKHZvaWQqIHB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBUcnVzdGVkSW1tMzIoVHJ1c3Rl
ZEltbVB0cihwdHIpKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgVHJ1c3RlZEltbTMyIHRydXN0ZWRJ
bW0zMkZyb21QdHIoUHJvYmU6OkZ1bmN0aW9uIGZ1bmN0aW9uKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1
bmN0aW9uKSkpOwotICAgIH0KLQotICAgIGlubGluZSBUcnVzdGVkSW1tMzIgdHJ1c3RlZEltbTMy
RnJvbVB0cih2b2lkICgqZnVuY3Rpb24pKCkpCi0gICAgewotICAgICAgICByZXR1cm4gVHJ1c3Rl
ZEltbTMyKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSk7
Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQotCiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBMaW5rQnVmZmVyOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAJKHJldmlzaW9uIDIy
MDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQVNT
RU1CTEVSKSAmJiBDUFUoQVJNX1RIVU1CMikKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgog
CisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2LDYgKzM3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGV4
dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7CiAKK3VzaW5nIG5hbWVzcGFj
ZSBBUk1SZWdpc3RlcnM7CisKICNpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCiAKIC8vIFRoZSBm
b2xsb3dpbmcgYXJlIG9mZnNldHMgZm9yIFByb2JlOjpTdGF0ZSBmaWVsZHMgYWNjZXNzZWQKQEAg
LTE4Niw2ICsxODksMzEgQEAgQ09NUElMRV9BU1NFUlQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNb
QQogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFByb2JlOjpTdGF0ZSkgPT0gUFJPQkVfU0laRSwgUHJv
YmVTdGF0ZV9zaXplX21hdGNoZXNfY3RpTWFzbVByb2JlVHJhbXBvbGluZSk7CiAjdW5kZWYgUFJP
QkVfT0ZGU0VUT0YKIAorc3RydWN0IEluY29taW5nUmVjb3JkIHsKKyAgICB1aW50cHRyX3QgbHI7
CisgICAgdWludHB0cl90IGlwOworICAgIHVpbnRwdHJfdCBhcHNyOworICAgIHVpbnRwdHJfdCBy
MDsKKyAgICB1aW50cHRyX3QgcjE7CisgICAgdWludHB0cl90IHIyOworfTsKKworI2RlZmluZSBJ
Tl9MUl9PRkZTRVQgKDAgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fSVBfT0ZGU0VUICgxICogUFRS
X1NJWkUpCisjZGVmaW5lIElOX0FQU1JfT0ZGU0VUICgyICogUFRSX1NJWkUpCisjZGVmaW5lIElO
X1IwX09GRlNFVCAoMyAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9SMV9PRkZTRVQgKDQgKiBQVFJf
U0laRSkKKyNkZWZpbmUgSU5fUjJfT0ZGU0VUICg1ICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1NJ
WkUgICAgICAoNiAqIFBUUl9TSVpFKQorCitzdGF0aWNfYXNzZXJ0KElOX0xSX09GRlNFVCA9PSBv
ZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgbHIpLCAiSU5fTFJfT0ZGU0VUIGlzIGluY29ycmVjdCIp
Oworc3RhdGljX2Fzc2VydChJTl9JUF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQs
IGlwKSwgIklOX0lQX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fQVBT
Ul9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGFwc3IpLCAiSU5fQVBTUl9PRkZT
RVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1IwX09GRlNFVCA9PSBvZmZzZXRv
ZihJbmNvbWluZ1JlY29yZCwgcjApLCAiSU5fUjBfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3Rh
dGljX2Fzc2VydChJTl9SMV9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIxKSwg
IklOX1IxX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fUjJfT0ZGU0VU
ID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMiksICJJTl9SMl9PRkZTRVQgaXMgaW5jb3Jy
ZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1NJWkUgPT0gc2l6ZW9mKEluY29taW5nUmVjb3JkKSwg
IklOX1NJWkUgaXMgaW5jb3JyZWN0Iik7CisKIGFzbSAoCiAgICAgIi50ZXh0IiAiXG4iCiAgICAg
Ii5hbGlnbiAyIiAiXG4iCkBAIC0xOTYsNjUgKzIyNCw3MCBAQCBhc20gKAogICAgIFNZTUJPTF9T
VFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZSkgIjoiICJcbiIKIAogICAgIC8vIE1hY3JvQXNz
ZW1ibGVyQVJNdjc6OnByb2JlKCkgaGFzIGFscmVhZHkgZ2VuZXJhdGVkIGNvZGUgdG8gc3RvcmUg
c29tZSB2YWx1ZXMuCi0gICAgLy8gVGhlIHRvcCBvZiBzdGFjayBub3cgbG9va3MgbGlrZSB0aGlz
OgotICAgIC8vICAgICBlc3BbMCAqIHB0clNpemVdOiBwcm9iZSBoYW5kbGVyIGZ1bmN0aW9uCi0g
ICAgLy8gICAgIGVzcFsxICogcHRyU2l6ZV06IHByb2JlIGFyZwotICAgIC8vICAgICBlc3BbMiAq
IHB0clNpemVdOiBzYXZlZCByMAotICAgIC8vICAgICBlc3BbMyAqIHB0clNpemVdOiBzYXZlZCBp
cAotICAgIC8vICAgICBlc3BbNCAqIHB0clNpemVdOiBzYXZlZCBscgotICAgIC8vICAgICBlc3Bb
NSAqIHB0clNpemVdOiBzYXZlZCBzcAorICAgIC8vIFRoZSB0b3Agb2Ygc3RhY2sgbm93IGNvbnRh
aW5zIHRoZSBJbmNvbWluZ1JlY29yZC4KKyAgICAvLworICAgIC8vIEluY29taW5nIHJlZ2lzdGVy
IHZhbHVlczoKKyAgICAvLyAgICAgcjA6IHByb2JlIGZ1bmN0aW9uCisgICAgLy8gICAgIHIxOiBw
cm9iZSBhcmcKKyAgICAvLyAgICAgcjI6IFByb2JlOjpleGVjdXRlUHJvYmUKKyAgICAvLyAgICAg
aXA6IHNjcmF0Y2gsIHdhcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lCisgICAgLy8gICAgIGxyOiBy
ZXR1cm4gYWRkcmVzcwogCiAgICAgIm1vdiAgICAgICBpcCwgc3AiICJcbiIKLSAgICAibW92ICAg
ICAgIHIwLCBzcCIgIlxuIgotICAgICJzdWIgICAgICAgcjAsIHIwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4iCisgICAgInN0ciAgICAgICByMiwgW2lw
LCAjLSIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIgIlxuIiAvLyBTdGFzaCBQcm9i
ZTo6ZXhlY3V0ZVByb2JlLgorCisgICAgIm1vdiAgICAgICByMiwgc3AiICJcbiIKKyAgICAic3Vi
ICAgICAgIHIyLCByMiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0la
RSkgIlxuIgogCiAgICAgLy8gVGhlIEFSTSBFQUJJIHNwZWNpZmllcyB0aGF0IHRoZSBzdGFjayBu
ZWVkcyB0byBiZSAxNiBieXRlIGFsaWduZWQuCi0gICAgImJpYyAgICAgICByMCwgcjAsICMweGYi
ICJcbiIKLSAgICAibW92ICAgICAgIHNwLCByMCIgIlxuIiAvLyBTZXQgdGhlIHNwIHRvIHByb3Rl
Y3QgdGhlIFByb2JlOjpTdGF0ZSBmcm9tIGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRpYWxpemUg
aXQuCisgICAgImJpYyAgICAgICByMiwgcjIsICMweGYiICJcbiIKKyAgICAibW92ICAgICAgIHNw
LCByMiIgIlxuIiAvLyBTZXQgdGhlIHNwIHRvIHByb3RlY3QgdGhlIFByb2JlOjpTdGF0ZSBmcm9t
IGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRpYWxpemUgaXQuCisgICAgImxkciAgICAgICByMiwg
W2lwLCAjLSIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIgIlxuIiAvLyBSZWxvYWQg
UHJvYmU6OmV4ZWN1dGVQcm9iZS4KIAorICAgICJzdHIgICAgICAgcjAsIFtzcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKKyAgICAi
c3RyICAgICAgIHIxLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9BUkdfT0ZGU0VU
KSAiXSIgIlxuIgogICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0NQVV9QQ19PRkZTRVQpICJdIiAiXG4iCi0gICAgImFkZCAgICAgICBsciwgc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjFfT0ZGU0VUKSAiXG4iCi0gICAgInN0bWlh
ICAgICBsciwgeyByMS1yMTEgfSIgIlxuIgotICAgICJtcnMgICAgICAgbHIsIEFQU1IiICJcbiIK
LSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
QVBTUl9PRkZTRVQpICJdIiAiXG4iCisKKyAgICAiYWRkICAgICAgIHIwLCBpcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKElOX1NJWkUpICJcbiIKKyAgICAic3RyICAgICAgIHIwLCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfU1BfT0ZGU0VUKSAiXSIgIlxuIgorCisgICAgImFk
ZCAgICAgICBsciwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjNfT0ZGU0VU
KSAiXG4iCisgICAgInN0bWlhICAgICBsciwgeyByMy1yMTEgfSIgIlxuIgorCiAgICAgInZtcnMg
ICAgICBsciwgRlBTQ1IiICJcbiIKICAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfRlBTQ1JfT0ZGU0VUKSAiXSIgIlxuIgogCi0gICAgImxkciAg
ICAgICBsciwgW2lwLCAjMCAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIgIlxu
IgotICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BS
T0JFX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIGxyLCBbaXAsICMx
ICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICJdIiAiXG4iCi0gICAgInN0ciAgICAg
ICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIl0iICJc
biIKLSAgICAibGRyICAgICAgIGxyLCBbaXAsICMyICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRS
X1NJWkUpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX1IwX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIGxyLCBb
aXAsICMzICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICJdIiAiXG4iCi0gICAgInN0
ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0lQX09GRlNF
VCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIGxyLCBbaXAsICM0ICogIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFRSX1NJWkUpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAg
ICAgIGxyLCBbaXAsICM1ICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICJdIiAiXG4i
Ci0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X1NQX09GRlNFVCkgIl0iICJcbiIKLQotICAgICJsZHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9QQ19PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciAgICAg
ICByNCwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fTFJfT0ZGU0VUKSAiXSIgIlxuIgor
ICAgICJsZHIgICAgICAgcjUsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX0lQX09GRlNF
VCkgIl0iICJcbiIKKyAgICAibGRyICAgICAgIHI2LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9P
RihJTl9BUFNSX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAgICAgIHI3LCBbaXAsICMiIFNU
UklOR0laRV9WQUxVRV9PRihJTl9SMF9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciAgICAgICBy
OCwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUjFfT0ZGU0VUKSAiXSIgIlxuIgorICAg
ICJsZHIgICAgICAgcjksIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1IyX09GRlNFVCkg
Il0iICJcbiIKKyAgICAic3RyICAgICAgIHI0LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQ
Uk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAgICAgcjUsIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9JUF9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0
ciAgICAgICByNiwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0FQU1JfT0ZG
U0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAgICAgcjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9SMF9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICByOCwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IxX09GRlNFVCkgIl0iICJcbiIKKyAg
ICAic3RyICAgICAgIHI5LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjJf
T0ZGU0VUKSAiXSIgIlxuIgogCiAgICAgImFkZCAgICAgICBpcCwgc3AsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9DUFVfRDBfT0ZGU0VUKSAiXG4iCiAgICAgInZzdG1pYS42NCBpcCEsIHsg
ZDAtZDE1IH0iICJcbiIKICNpZiBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikK
ICAgICAidnN0bWlhLjY0IGlwISwgeyBkMTYtZDMxIH0iICJcbiIKICNlbmRpZgotICAgICJtb3Yg
ICAgICAgZnAsIHNwIiAiXG4iIC8vIFNhdmUgdGhlIFByb2JlOjpTdGF0ZSouCiAKLSAgICAvLyBJ
bml0aWFsaXplIFByb2JlOjpTdGF0ZTo6aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gdG8gemVyby4K
LSAgICAibW92ICAgICAgIHIwLCAjMCIgIlxuIgotICAgICJzdHIgICAgICAgcjAsIFtmcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05fT0ZGU0VUKSAiXSIg
IlxuIgorCS8vIHI1IGlzIGEgY2FsbGVlIHNhdmVkIHJlZ2lzdGVyLiBXZSdsbCB1c2UgaXQgZm9y
IHByZXNlcnZpbmcgdGhlIFByb2JlOjpTdGF0ZSouCisJLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93
LmNvbS9xdWVzdGlvbnMvMjYxNDE5L2FybS10by1jLWNhbGxpbmctY29udmVudGlvbi1yZWdpc3Rl
cnMtdG8tc2F2ZSMyNjE0OTYKKyAgICAibW92ICAgICAgIHI1LCBzcCIgIlxuIgogCi0gICAgImxk
ciAgICAgICBpcCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJ
T05fT0ZGU0VUKSAiXSIgIlxuIgogICAgICJtb3YgICAgICAgcjAsIHNwIiAiXG4iIC8vIHRoZSBQ
cm9iZTo6U3RhdGUqIGFyZy4KLSAgICAiYmx4ICAgICAgIGlwIiAiXG4iCisgICAgImJseCAgICAg
ICByMiIgIlxuIiAvLyBDYWxsIFByb2JlOjpleGVjdXRlUHJvYmUuCiAKICAgICAvLyBNYWtlIHN1
cmUgdGhlIFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBv
aW50ZXIgc28KICAgICAvLyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VydmVk
IHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNrCiAgICAgLy8gZnVuY3Rpb24uCi0gICAg
ImxkciAgICAgICByMSwgW2ZwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09G
RlNFVCkgIl0iICJcbiIgLy8gUmVzdWx0IHNwLgotICAgICJhZGQgICAgICAgcjIsIGZwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4iIC8vIEVuZCBvZiBQ
cm92ZUNvbnRleHQgKyBidWZmZXIuCisgICAgImxkciAgICAgICByMSwgW3I1LCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIgLy8gUmVzdWx0IHNwLgor
ICAgICJhZGQgICAgICAgcjIsIHI1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSAr
IE9VVF9TSVpFKSAiXG4iIC8vIEVuZCBvZiBQcm92ZUNvbnRleHQgKyBidWZmZXIuCiAgICAgImNt
cCAgICAgICByMSwgcjIiICJcbiIKICAgICAiaXQgICAgICAgIGdlIiAiXG4iCiAgICAgImJnZSAg
ICAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJ
c1NhZmUpICJcbiIKQEAgLTI2NywzMiArMzAwLDMwIEBAIGFzbSAoCiAgICAgLy8gQ29weSB0aGUg
UHJvYmU6OlN0YXRlIHRvIHRoZSBzYWZlIHBsYWNlLgogICAgIC8vIE5vdGU6IHdlIGhhdmUgdG8g
Y29weSBmcm9tIGxvdyBhZGRyZXNzIHRvIGhpZ2hlciBhZGRyZXNzIGJlY2F1c2Ugd2UncmUgbW92
aW5nIHRoZQogICAgIC8vIFByb2JlOjpTdGF0ZSB0byBhIGxvd2VyIGFkZHJlc3MuCi0gICAgIm1v
diAgICAgICByNSwgZnAiICJcbiIKLSAgICAibW92ICAgICAgIHI2LCByMSIgIlxuIgotICAgICJh
ZGQgICAgICAgcjcsIGZwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSkgIlxuIgor
ICAgICJhZGQgICAgICAgcjcsIHI1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSkg
IlxuIgogCiAgICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVDb3B5
TG9vcCkgIjoiICJcbiIKICAgICAibGRyICAgICAgIHIzLCBbcjVdLCAjNCIgIlxuIgogICAgICJs
ZHIgICAgICAgcjQsIFtyNV0sICM0IiAiXG4iCi0gICAgInN0ciAgICAgICByMywgW3I2XSwgIzQi
ICJcbiIKLSAgICAic3RyICAgICAgIHI0LCBbcjZdLCAjNCIgIlxuIgorICAgICJzdHIgICAgICAg
cjMsIFtyMV0sICM0IiAiXG4iCisgICAgInN0ciAgICAgICByNCwgW3IxXSwgIzQiICJcbiIKICAg
ICAiY21wICAgICAgIHI1LCByNyIgIlxuIgogICAgICJpdCAgICAgICAgbHQiICJcbiIKICAgICAi
Ymx0ICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lQ29weUxv
b3ApICJcbiIKIAotICAgICJtb3YgICAgICAgZnAsIHIxIiAiXG4iCisgICAgIm1vdiAgICAgICBy
NSwgc3AiICJcbiIKIAogICAgIC8vIENhbGwgaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gaWYgcHJl
c2VudC4KICAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2Jl
U3RhdGVJc1NhZmUpICI6IiAiXG4iCi0gICAgImxkciAgICAgICByMiwgW2ZwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCisg
ICAgImxkciAgICAgICByMiwgW3I1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9T
VEFDS19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCiAgICAgImNieiAgICAgICByMiwgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVJlc3RvcmVSZWdpc3RlcnMpICJc
biIKIAotICAgICJtb3YgICAgICAgcjAsIGZwIiAiXG4iIC8vIFNldCB0aGUgUHJvYmU6OlN0YXRl
KiBhcmcuCisgICAgIm1vdiAgICAgICByMCwgcjUiICJcbiIgLy8gU2V0IHRoZSBQcm9iZTo6U3Rh
dGUqIGFyZy4KICAgICAiYmx4ICAgICAgIHIyIiAiXG4iIC8vIENhbGwgdGhlIGluaXRpYWxpemVT
dGFja0Z1bmN0aW9uIChsb2FkZWQgaW50byByMiBhYm92ZSkuCiAKICAgICBMT0NBTF9MQUJFTF9T
VFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVJlc3RvcmVSZWdpc3RlcnMpICI6IiAiXG4iCiAK
LSAgICAibW92ICAgICAgIHNwLCBmcCIgIlxuIgorICAgICJtb3YgICAgICAgc3AsIHI1IiAiXG4i
IC8vIEVuc3VyZSB0aGF0IHNwIHBvaW50cyB0byB0aGUgUHJvYmU6OlN0YXRlKi4KIAogICAgIC8v
IFRvIGVuYWJsZSBwcm9iZXMgdG8gbW9kaWZ5IHJlZ2lzdGVyIHN0YXRlLCB3ZSBjb3B5IGFsbCBy
ZWdpc3RlcnMKICAgICAvLyBvdXQgb2YgdGhlIFByb2JlOjpTdGF0ZSBiZWZvcmUgcmV0dXJuaW5n
LgpAQCAtMzM4LDIyICszNjksMjYgQEAgYXNtICgKIAogdm9pZCBNYWNyb0Fzc2VtYmxlcjo6cHJv
YmUoUHJvYmU6OkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmcpCiB7Ci0gICAgcHVzaChSZWdp
c3RlcklEOjpscik7Ci0gICAgcHVzaChSZWdpc3RlcklEOjpscik7Ci0gICAgYWRkMzIoVHJ1c3Rl
ZEltbTMyKDgpLCBSZWdpc3RlcklEOjpzcCwgUmVnaXN0ZXJJRDo6bHIpOwotICAgIHN0b3JlMzIo
UmVnaXN0ZXJJRDo6bHIsIEFybUFkZHJlc3MoUmVnaXN0ZXJJRDo6c3AsIDQpKTsKLSAgICBwdXNo
KFJlZ2lzdGVySUQ6OmlwKTsKLSAgICBwdXNoKFJlZ2lzdGVySUQ6OnIwKTsKLSAgICAvLyBUaGUg
Zm9sbG93aW5nIHVzZXMgUmVnaXN0ZXJJRDo6aXAuIFNvLCB0aGV5IG11c3QgY29tZSBhZnRlciB3
ZSBwdXNoIGlwIGFib3ZlLgotICAgIHB1c2godHJ1c3RlZEltbTMyRnJvbVB0cihhcmcpKTsKLSAg
ICBwdXNoKHRydXN0ZWRJbW0zMkZyb21QdHIoZnVuY3Rpb24pKTsKKyAgICBzdWIzMihUcnVzdGVk
SW1tMzIoc2l6ZW9mKEluY29taW5nUmVjb3JkKSksIHNwKTsKIAotICAgIG1vdmUodHJ1c3RlZElt
bTMyRnJvbVB0cihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSwgUmVnaXN0ZXJJRDo6aXApOwotICAg
IG1fYXNzZW1ibGVyLmJseChSZWdpc3RlcklEOjppcCk7CisgICAgc3RvcmUzMihsciwgQWRkcmVz
cyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGxyKSkpOworICAgIHN0b3JlMzIoaXAsIEFk
ZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBpcCkpKTsKKyAgICBtX2Fzc2VtYmxl
ci5tcnMoaXAsIGFwc3IpOworICAgIHN0b3JlMzIoaXAsIEFkZHJlc3Moc3AsIG9mZnNldG9mKElu
Y29taW5nUmVjb3JkLCBhcHNyKSkpOworICAgIHN0b3JlMzIocjAsIEFkZHJlc3Moc3AsIG9mZnNl
dG9mKEluY29taW5nUmVjb3JkLCByMCkpKTsKKyAgICBzdG9yZTMyKHIxLCBBZGRyZXNzKHNwLCBv
ZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjEpKSk7CisgICAgc3RvcmUzMihyMiwgQWRkcmVzcyhz
cCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIyKSkpOworCisgICAgLy8gVGhlIGZvbGxvd2lu
ZyBtYXkgZW1pdCBhIFQxIG1vdiBpbnN0cnVjdGlvbiwgd2hpY2ggaXMgZWZmZWN0aXZlbHkgYSBt
b3ZzLgorICAgIC8vIFRoaXMgbWVhbnMgd2UgbXVzdCBmaXJzdCBwcmVzZXJ2ZSB0aGUgYXBzciBm
bGFncyBhYm92ZSBmaXJzdC4KKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oZnVuY3Rpb24pKSwgcjApOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmcpLCBy
MSk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KFByb2Jl
OjpleGVjdXRlUHJvYmUpKSwgcjIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSksIGlwKTsKKyAgICBtX2Fzc2Vt
Ymxlci5ibHgoaXApOwogfQogI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAotI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCi0KKyNlbmRpZiAvLyBF
TkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RIVU1CMikKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZp
c2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwNiwyMyArMjEwNiw2IEBAIHByb3Rl
Y3RlZDoKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUk12N0Fzc2VtYmxlcjo6
Q29uZGl0aW9uPihjb25kKTsKICAgICB9Ci0gICAgCi0jaWYgRU5BQkxFKE1BU01fUFJPQkUpCi0g
ICAgaW5saW5lIFRydXN0ZWRJbW0zMiB0cnVzdGVkSW1tMzJGcm9tUHRyKHZvaWQqIHB0cikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0cihwdHIpKTsKLSAg
ICB9Ci0KLSAgICBpbmxpbmUgVHJ1c3RlZEltbTMyIHRydXN0ZWRJbW0zMkZyb21QdHIoUHJvYmU6
OkZ1bmN0aW9uIGZ1bmN0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFRydXN0ZWRJbW0zMihU
cnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSkpOwotICAgIH0K
LQotICAgIGlubGluZSBUcnVzdGVkSW1tMzIgdHJ1c3RlZEltbTMyRnJvbVB0cih2b2lkICgqZnVu
Y3Rpb24pKCkpCi0gICAgewotICAgICAgICByZXR1cm4gVHJ1c3RlZEltbTMyKFRydXN0ZWRJbW1Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSk7Ci0gICAgfQotI2VuZGlmIC8v
IEVOQUJMRShNQVNNX1BST0JFKQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVm
ZmVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clByaW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAkocmV2aXNpb24gMjIwOTM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw5ICszMywxMCBAQAogI2luY2x1ZGUgPGludHR5cGVzLmg+CiAKIG5h
bWVzcGFjZSBKU0MgeworCiBuYW1lc3BhY2UgUHJpbnRlciB7CiAKLXVzaW5nIENQVVN0YXRlID0g
TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOwordXNpbmcgQ1BVU3RhdGUgPSBQcm9iZTo6Q1BVU3Rh
dGU7CiB1c2luZyBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ7CiB1c2lu
ZyBGUFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEOwogCkBAIC0xNzEs
MTMgKzE3MiwxMyBAQCB2b2lkIHByaW50TWVtb3J5KFByaW50U3RyZWFtJiBvdXQsIENvbnRlCiAg
ICAgICAgIG91dC5wcmludCgiXG4iKTsKIH0KIAotdm9pZCBwcmludENhbGxiYWNrKFByb2JlOjpT
dGF0ZSogcHJvYmVDb250ZXh0KQordm9pZCBwcmludENhbGxiYWNrKFByb2JlOjpDb250ZXh0JiBw
cm9iZUNvbnRleHQpCiB7CiAgICAgYXV0byYgb3V0ID0gV1RGOjpkYXRhRmlsZSgpOwotICAgIFBy
aW50UmVjb3JkTGlzdCYgbGlzdCA9ICpyZWludGVycHJldF9jYXN0PFByaW50UmVjb3JkTGlzdCo+
KHByb2JlQ29udGV4dC0+YXJnKTsKKyAgICBQcmludFJlY29yZExpc3QmIGxpc3QgPSAqcmVpbnRl
cnByZXRfY2FzdDxQcmludFJlY29yZExpc3QqPihwcm9iZUNvbnRleHQuYXJnKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyBpKyspIHsKICAgICAgICAgYXV0byYgcmVj
b3JkID0gbGlzdFtpXTsKLSAgICAgICAgQ29udGV4dCBjb250ZXh0KCpwcm9iZUNvbnRleHQsIHJl
Y29yZC5kYXRhKTsKKyAgICAgICAgQ29udGV4dCBjb250ZXh0KHByb2JlQ29udGV4dCwgcmVjb3Jk
LmRhdGEpOwogICAgICAgICByZWNvcmQucHJpbnRlcihvdXQsIGNvbnRleHQpOwogICAgIH0KIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmlu
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclByaW50ZXIuaAkocmV2aXNpb24gMjIwOTM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRl
ICJQcmludGVyLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC0yMjMsNyArMjI0LDcgQEAgc3RydWN0IFByaW50ZXI8TWVtV29yZDxJbnRUeXBlPj4g
OiBwdWJsaQogICAgIHsgfQogfTsKIAotdm9pZCBwcmludENhbGxiYWNrKFByb2JlOjpTdGF0ZSop
Owordm9pZCBwcmludENhbGxiYWNrKFByb2JlOjpDb250ZXh0Jik7CiAKIH0gLy8gbmFtZXNwYWNl
IFByaW50ZXIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAJKHJldmlzaW9uIDIyMDkzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFTU0VN
QkxFUikgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpKQogI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiCiAKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5l
QVNNLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTAxLDYgKzEwMiw4IEBAIGV4dGVybiAiQyIg
dm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCkKICNkZWZpbmUgUFJPQkVfU0laRSAoUFJPQkVf
Q1BVX1hNTTE1X09GRlNFVCArIFhNTV9TSVpFKQogI2VuZGlmIC8vIENQVShYODZfNjQpCiAKKyNk
ZWZpbmUgUFJPQkVfRVhFQ1VUT1JfT0ZGU0VUIFBST0JFX1NJWkUgLy8gU3Rhc2ggdGhlIGV4ZWN1
dGVQcm9iZSBmdW5jdGlvbiBwb2ludGVyIGF0IHRoZSBlbmQgb2YgdGhlIFByb2JlQ29udGV4dC4K
KwogLy8gVGhlIG91dGdvaW5nIHJlY29yZCB0byBiZSBwb3BwZWQgb2ZmIHRoZSBzdGFjayBhdCB0
aGUgZW5kIGNvbnNpc3RzIG9mOgogLy8gZWZsYWdzLCBlYXgsIGVjeCwgZWJwLCBlaXAuCiAjZGVm
aW5lIE9VVF9TSVpFICAgICAgICAoNSAqIFBUUl9TSVpFKQpAQCAtMTU5LDYgKzE2Miw3IEBAIENP
TVBJTEVfQVNTRVJUKFBST0JFX09GRlNFVE9GX1JFRyhjcHUuZnAKICNlbmRpZiAvLyBDUFUoWDg2
XzY0KQogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoUHJvYmU6OlN0YXRlKSA9PSBQUk9CRV9TSVpF
LCBQcm9iZVN0YXRlX3NpemVfbWF0Y2hlc19jdGlNYXNtUHJvYmVUcmFtcG9saW5lKTsKK0NPTVBJ
TEVfQVNTRVJUKChQUk9CRV9FWEVDVVRPUl9PRkZTRVQgKyBQVFJfU0laRSkgPD0gKFBST0JFX1NJ
WkUgKyBPVVRfU0laRSksIE11c3RfaGF2ZV9yb29tX2FmdGVyX1Byb2JlQ29udGV4dF90b19zdGFz
aF90aGVfcHJvYmVfaGFuZGxlcik7CiAKICN1bmRlZiBQUk9CRV9PRkZTRVRPRgogCkBAIC0xNzYs
MTAgKzE4MCwxNiBAQCBhc20gKAogICAgIC8vIHRoaXM6CiAgICAgLy8gICAgIGVzcFswICogcHRy
U2l6ZV06IGVmbGFncwogICAgIC8vICAgICBlc3BbMSAqIHB0clNpemVdOiByZXR1cm4gYWRkcmVz
cyAvIHNhdmVkIGVpcAotICAgIC8vICAgICBlc3BbMiAqIHB0clNpemVdOiBwcm9iZSBoYW5kbGVy
IGZ1bmN0aW9uCi0gICAgLy8gICAgIGVzcFszICogcHRyU2l6ZV06IHByb2JlIGFyZwotICAgIC8v
ICAgICBlc3BbNCAqIHB0clNpemVdOiBzYXZlZCBlYXgKLSAgICAvLyAgICAgZXNwWzUgKiBwdHJT
aXplXTogc2F2ZWQgZXNwCisgICAgLy8gICAgIGVzcFsyICogcHRyU2l6ZV06IHNhdmVkIGVieAor
ICAgIC8vICAgICBlc3BbMyAqIHB0clNpemVdOiBzYXZlZCBlZHgKKyAgICAvLyAgICAgZXNwWzQg
KiBwdHJTaXplXTogc2F2ZWQgZWN4CisgICAgLy8gICAgIGVzcFs1ICogcHRyU2l6ZV06IHNhdmVk
IGVheAorICAgIC8vCisgICAgLy8gSW5jb21pbmcgcmVnaXN0ZXJzIGNvbnRhaW46CisgICAgLy8g
ICAgIGVjeDogUHJvYmU6OmV4ZWN1dGVQcm9iZQorICAgIC8vICAgICBlZHg6IHByb2JlIGZ1bmN0
aW9uCisgICAgLy8gICAgIGVieDogcHJvYmUgYXJnCisgICAgLy8gICAgIGVheDogc2NyYXRjaCAo
d2FzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpCiAKICAgICAibW92bCAlZXNwLCAlZWF4IiAiXG4i
CiAgICAgInN1YmwgJCIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkg
IiwgJWVzcCIgIlxuIgpAQCAtMTkwLDkgKzIwMCw5IEBAIGFzbSAoCiAgICAgIm1vdmwgJWVicCwg
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VCUF9PRkZTRVQpICIoJWVzcCkiICJcbiIK
ICAgICAibW92bCAlZXNwLCAlZWJwIiAiXG4iIC8vIFNhdmUgdGhlIFByb2JlOjpTdGF0ZSouCiAK
LSAgICAibW92bCAlZWN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUNYX09GRlNF
VCkgIiglZWJwKSIgIlxuIgotICAgICJtb3ZsICVlZHgsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9FRFhfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCi0gICAgIm1vdmwgJWVieCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VCWF9PRkZTRVQpICIoJWVicCkiICJcbiIKKyAgICAi
bW92bCAlZWN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9FWEVDVVRPUl9PRkZTRVQpICIo
JWVicCkiICJcbiIKKyAgICAibW92bCAlZWR4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9Q
Uk9CRV9GVU5DVElPTl9PRkZTRVQpICIoJWVicCkiICJcbiIKKyAgICAibW92bCAlZWJ4LCAiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9BUkdfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAgICAgIm1v
dmwgJWVzaSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VTSV9PRkZTRVQpICIoJWVi
cCkiICJcbiIKICAgICAibW92bCAlZWRpLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
RURJX09GRlNFVCkgIiglZWJwKSIgIlxuIgogCkBAIC0yMDEsMTIgKzIxMSwxNiBAQCBhc20gKAog
ICAgICJtb3ZsIDEgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIiglZWF4KSwgJWVj
eCIgIlxuIgogICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9F
SVBfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAgICAgIm1vdmwgMiAqICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBUUl9TSVpFKSAiKCVlYXgpLCAlZWN4IiAiXG4iCi0gICAgIm1vdmwgJWVjeCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiKCVlYnApIiAiXG4i
CisgICAgIm1vdmwgJWVjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VCWF9PRkZT
RVQpICIoJWVicCkiICJcbiIKICAgICAibW92bCAzICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRS
X1NJWkUpICIoJWVheCksICVlY3giICJcbiIKLSAgICAibW92bCAlZWN4LCAiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9BUkdfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCisgICAgIm1vdmwgJWVjeCwg
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VEWF9PRkZTRVQpICIoJWVicCkiICJcbiIK
ICAgICAibW92bCA0ICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICIoJWVheCksICVl
Y3giICJcbiIKLSAgICAibW92bCAlZWN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
RUFYX09GRlNFVCkgIiglZWJwKSIgIlxuIgorICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9FQ1hfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAgICAgIm1vdmwgNSAq
ICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiKCVlYXgpLCAlZWN4IiAiXG4iCisgICAg
Im1vdmwgJWVjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VBWF9PRkZTRVQpICIo
JWVicCkiICJcbiIKKworICAgICJtb3ZsICVlYXgsICVlY3giICJcbiIKKyAgICAiYWRkbCAkIiBT
VFJJTkdJWkVfVkFMVUVfT0YoNiAqIFBUUl9TSVpFKSAiLCAlZWN4IiAiXG4iCiAgICAgIm1vdmwg
JWVjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VTUF9PRkZTRVQpICIoJWVicCki
ICJcbiIKIAogICAgICJtb3ZxICV4bW0wLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
WE1NMF9PRkZTRVQpICIoJWVicCkiICJcbiIKQEAgLTIxOCwxNSArMjMyLDEyIEBAIGFzbSAoCiAg
ICAgIm1vdnEgJXhtbTYsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YTU02X09GRlNF
VCkgIiglZWJwKSIgIlxuIgogICAgICJtb3ZxICV4bW03LCAiIFNUUklOR0laRV9WQUxVRV9PRihQ
Uk9CRV9DUFVfWE1NN19PRkZTRVQpICIoJWVicCkiICJcbiIKIAotICAgICJ4b3JsICVlYXgsICVl
YXgiICJcbiIKLSAgICAibW92bCAlZWF4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9JTklU
X1NUQUNLX0ZVTkNUSU9OX09GRlNFVCkgIiglZWJwKSIgIlxuIgotCiAgICAgLy8gUmVzZXJ2ZSBz
dGFjayBzcGFjZSBmb3IgdGhlIGFyZyB3aGlsZSBtYWludGFpbmluZyB0aGUgcmVxdWlyZWQgc3Rh
Y2sKICAgICAvLyBwb2ludGVyIDMyIGJ5dGUgYWxpZ25tZW50OgogICAgICJzdWJsICQweDIwLCAl
ZXNwIiAiXG4iCiAgICAgIm1vdmwgJWVicCwgMCglZXNwKSIgIlxuIiAvLyB0aGUgUHJvYmU6OlN0
YXRlKiBhcmcuCiAKLSAgICAiY2FsbCAqIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVf
RlVOQ1RJT05fT0ZGU0VUKSAiKCVlYnApIiAiXG4iCisgICAgImNhbGwgKiIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0VYRUNVVE9SX09GRlNFVCkgIiglZWJwKSIgIlxuIgogCiAgICAgLy8gTWFr
ZSBzdXJlIHRoZSBQcm9iZTo6U3RhdGUgaXMgZW50aXJlbHkgYmVsb3cgdGhlIHJlc3VsdCBzdGFj
ayBwb2ludGVyIHNvCiAgICAgLy8gdGhhdCByZWdpc3RlciB2YWx1ZXMgYXJlIHN0aWxsIHByZXNl
cnZlZCB3aGVuIHdlIGNhbGwgdGhlIGluaXRpYWxpemVTdGFjawpAQCAtMzM2LDEwICszNDcsMTYg
QEAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKG5ha2VkKSB2b2lkIGN0aU1hcwogICAgICAgICAvLyB0
aGlzOgogICAgICAgICAvLyAgICAgZXNwWzAgKiBwdHJTaXplXTogZWZsYWdzCiAgICAgICAgIC8v
ICAgICBlc3BbMSAqIHB0clNpemVdOiByZXR1cm4gYWRkcmVzcyAvIHNhdmVkIGVpcAotICAgICAg
ICAvLyAgICAgZXNwWzIgKiBwdHJTaXplXTogcHJvYmUgaGFuZGxlciBmdW5jdGlvbgotICAgICAg
ICAvLyAgICAgZXNwWzMgKiBwdHJTaXplXTogcHJvYmUgYXJnCi0gICAgICAgIC8vICAgICBlc3Bb
NCAqIHB0clNpemVdOiBzYXZlZCBlYXgKLSAgICAgICAgLy8gICAgIGVzcFs1ICogcHRyU2l6ZV06
IHNhdmVkIGVzcAorICAgICAgICAvLyAgICAgZXNwWzIgKiBwdHJTaXplXTogc2F2ZWQgZWJ4Cisg
ICAgICAgIC8vICAgICBlc3BbMyAqIHB0clNpemVdOiBzYXZlZCBlZHgKKyAgICAgICAgLy8gICAg
IGVzcFs0ICogcHRyU2l6ZV06IHNhdmVkIGVjeAorICAgICAgICAvLyAgICAgZXNwWzUgKiBwdHJT
aXplXTogc2F2ZWQgZWF4CisgICAgICAgIC8vCisgICAgICAgIC8vIEluY29taW5nIHJlZ2lzdGVy
cyBjb250YWluOgorICAgICAgICAvLyAgICAgZWN4OiBQcm9iZTo6ZXhlY3V0ZVByb2JlCisgICAg
ICAgIC8vICAgICBlZHg6IHByb2JlIGZ1bmN0aW9uCisgICAgICAgIC8vICAgICBlYng6IHByb2Jl
IGFyZworICAgICAgICAvLyAgICAgZWF4OiBzY3JhdGNoICh3YXMgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSkKIAogICAgICAgICBtb3YgZWF4LCBlc3AKICAgICAgICAgc3ViIGVzcCwgUFJPQkVfU0la
RSArIE9VVF9TSVpFCkBAIC0zNTAsOSArMzY3LDkgQEAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKG5h
a2VkKSB2b2lkIGN0aU1hcwogICAgICAgICBtb3YgW1BST0JFX0NQVV9FQlBfT0ZGU0VUICsgZXNw
XSwgZWJwCiAgICAgICAgIG1vdiBlYnAsIGVzcCAvLyBTYXZlIHRoZSBQcm9iZUNvbnRleHQqLgog
Ci0gICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VDWF9PRkZTRVQgKyBlYnBdLCBlY3gKLSAgICAgICAg
bW92IFtQUk9CRV9DUFVfRURYX09GRlNFVCArIGVicF0sIGVkeAotICAgICAgICBtb3YgW1BST0JF
X0NQVV9FQlhfT0ZGU0VUICsgZWJwXSwgZWJ4CisgICAgICAgIG1vdiBbUFJPQkVfRVhFQ1VUT1Jf
T0ZGU0VUICsgZWJwXSwgZWN4CisgICAgICAgIG1vdiBbUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZG
U0VUICsgZWJwXSwgZWR4CisgICAgICAgIG1vdiBbUFJPQkVfQVJHX09GRlNFVCArIGVicF0sIGVi
eAogICAgICAgICBtb3YgW1BST0JFX0NQVV9FU0lfT0ZGU0VUICsgZWJwXSwgZXNpCiAgICAgICAg
IG1vdiBbUFJPQkVfQ1BVX0VESV9PRkZTRVQgKyBlYnBdLCBlZGkKIApAQCAtMzYxLDEyICszNzgs
MTYgQEAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKG5ha2VkKSB2b2lkIGN0aU1hcwogICAgICAgICBt
b3YgZWN4LCBbMSAqIFBUUl9TSVpFICsgZWF4XQogICAgICAgICBtb3YgW1BST0JFX0NQVV9FSVBf
T0ZGU0VUICsgZWJwXSwgZWN4CiAgICAgICAgIG1vdiBlY3gsIFsyICogUFRSX1NJWkUgKyBlYXhd
Ci0gICAgICAgIG1vdiBbUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUICsgZWJwXSwgZWN4Cisg
ICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VCWF9PRkZTRVQgKyBlYnBdLCBlY3gKICAgICAgICAgbW92
IGVjeCwgWzMgKiBQVFJfU0laRSArIGVheF0KLSAgICAgICAgbW92IFtQUk9CRV9BUkdfT0ZGU0VU
ICsgZWJwXSwgZWN4CisgICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VEWF9PRkZTRVQgKyBlYnBdLCBl
Y3gKICAgICAgICAgbW92IGVjeCwgWzQgKiBQVFJfU0laRSArIGVheF0KLSAgICAgICAgbW92IFtQ
Uk9CRV9DUFVfRUFYX09GRlNFVCArIGVicF0sIGVjeAorICAgICAgICBtb3YgW1BST0JFX0NQVV9F
Q1hfT0ZGU0VUICsgZWJwXSwgZWN4CiAgICAgICAgIG1vdiBlY3gsIFs1ICogUFRSX1NJWkUgKyBl
YXhdCisgICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VBWF9PRkZTRVQgKyBlYnBdLCBlY3gKKworICAg
ICAgICBtb3YgZWN4LCBlYXgKKyAgICAgICAgYWRkIGVjeCwgNiAqIFBUUl9TSVpFCiAgICAgICAg
IG1vdiBbUFJPQkVfQ1BVX0VTUF9PRkZTRVQgKyBlYnBdLCBlY3gKIAogICAgICAgICBtb3ZxIHF3
b3JkIHB0cltQUk9CRV9DUFVfWE1NMF9PRkZTRVQgKyBlYnBdLCB4bW0wCkBAIC0zNzgsMTUgKzM5
OSwxMiBAQCBleHRlcm4gIkMiIF9fZGVjbHNwZWMobmFrZWQpIHZvaWQgY3RpTWFzCiAgICAgICAg
IG1vdnEgcXdvcmQgcHRyW1BST0JFX0NQVV9YTU02X09GRlNFVCArIGVicF0sIHhtbTYKICAgICAg
ICAgbW92cSBxd29yZCBwdHJbUFJPQkVfQ1BVX1hNTTdfT0ZGU0VUICsgZWJwXSwgeG1tNwogCi0g
ICAgICAgIHhvciBlYXgsIGVheAotICAgICAgICBtb3YgW1BST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJ
T05fT0ZGU0VUICsgZWJwXSwgZWF4Ci0KICAgICAgICAgLy8gUmVzZXJ2ZSBzdGFjayBzcGFjZSBm
b3IgdGhlIGFyZyB3aGlsZSBtYWludGFpbmluZyB0aGUgcmVxdWlyZWQgc3RhY2sKICAgICAgICAg
Ly8gcG9pbnRlciAzMiBieXRlIGFsaWdubWVudDoKICAgICAgICAgc3ViIGVzcCwgMHgyMAogICAg
ICAgICBtb3YgWzAgKyBlc3BdLCBlYnAgLy8gdGhlIFByb2JlQ29udGV4dCogYXJnLgogCi0gICAg
ICAgIGNhbGwgW1BST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCArIGVicF0KKyAgICAgICAgY2Fs
bCBbUFJPQkVfRVhFQ1VUT1JfT0ZGU0VUICsgZWJwXQogCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0
aGUgUHJvYmVDb250ZXh0IGlzIGVudGlyZWx5IGJlbG93IHRoZSByZXN1bHQgc3RhY2sgcG9pbnRl
ciBzbwogICAgICAgICAvLyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VydmVk
IHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNrCkBAIC00ODQsNyArNTAyLDcgQEAgZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKG5ha2VkKSB2b2lkIGN0aU1hcwogICAgICAgICByZXQKICAgICB9
CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBDT01QSUxFUihNU1ZDKQogCiAjZW5kaWYgLy8gQ1BVKFg4
NikKIApAQCAtNDk4LDE0ICs1MTYsMTkgQEAgYXNtICgKICAgICAicHVzaGZxIiAiXG4iCiAKICAg
ICAvLyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJvYmUoKSBoYXMgYWxyZWFkeSBnZW5lcmF0
ZWQgY29kZSB0byBzdG9yZSBzb21lIHZhbHVlcy4KLSAgICAvLyBUb2dldGhlciB3aXRoIHRoZSBy
ZmxhZ3MgcHVzaGVkIGFib3ZlLCB0aGUgdG9wIG9mIHN0YWNrIG5vdyBsb29rcyBsaWtlCi0gICAg
Ly8gdGhpczoKLSAgICAvLyAgICAgZXNwWzAgKiBwdHJTaXplXTogcmZsYWdzCi0gICAgLy8gICAg
IGVzcFsxICogcHRyU2l6ZV06IHJldHVybiBhZGRyZXNzIC8gc2F2ZWQgcmlwCi0gICAgLy8gICAg
IGVzcFsyICogcHRyU2l6ZV06IHByb2JlIGhhbmRsZXIgZnVuY3Rpb24KLSAgICAvLyAgICAgZXNw
WzMgKiBwdHJTaXplXTogcHJvYmUgYXJnCi0gICAgLy8gICAgIGVzcFs0ICogcHRyU2l6ZV06IHNh
dmVkIHJheAotICAgIC8vICAgICBlc3BbNSAqIHB0clNpemVdOiBzYXZlZCByc3AKKyAgICAvLyBU
b2dldGhlciB3aXRoIHRoZSByZmxhZ3MgcHVzaGVkIGFib3ZlLCB0aGUgdG9wIG9mIHN0YWNrIG5v
dyBsb29rcyBsaWtlIHRoaXM6CisgICAgLy8gICAgIHJzcFswICogcHRyU2l6ZV06IHJmbGFncwor
ICAgIC8vICAgICByc3BbMSAqIHB0clNpemVdOiByZXR1cm4gYWRkcmVzcyAvIHNhdmVkIHJpcAor
ICAgIC8vICAgICByc3BbMiAqIHB0clNpemVdOiBzYXZlZCByYngKKyAgICAvLyAgICAgcnNwWzMg
KiBwdHJTaXplXTogc2F2ZWQgcmR4CisgICAgLy8gICAgIHJzcFs0ICogcHRyU2l6ZV06IHNhdmVk
IHJjeAorICAgIC8vICAgICByc3BbNSAqIHB0clNpemVdOiBzYXZlZCByYXgKKyAgICAvLworICAg
IC8vIEluY29taW5nIHJlZ2lzdGVycyBjb250YWluOgorICAgIC8vICAgICByY3g6IFByb2JlOjpl
eGVjdXRlUHJvYmUKKyAgICAvLyAgICAgcmR4OiBwcm9iZSBmdW5jdGlvbgorICAgIC8vICAgICBy
Yng6IHByb2JlIGFyZworICAgIC8vICAgICByYXg6IHNjcmF0Y2ggKHdhcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lKQogCiAgICAgIm1vdnEgJXJzcCwgJXJheCIgIlxuIgogICAgICJzdWJxICQiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9TSVpFICsgT1VUX1NJWkUpICIsICVyc3AiICJcbiIKQEAg
LTUxNyw5ICs1NDAsOSBAQCBhc20gKAogICAgICJtb3ZxICVyYnAsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9FQlBfT0ZGU0VUKSAiKCVyc3ApIiAiXG4iCiAgICAgIm1vdnEgJXJzcCwg
JXJicCIgIlxuIiAvLyBTYXZlIHRoZSBQcm9iZTo6U3RhdGUqLgogCi0gICAgIm1vdnEgJXJjeCwg
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VDWF9PRkZTRVQpICIoJXJicCkiICJcbiIK
LSAgICAibW92cSAlcmR4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRURYX09GRlNF
VCkgIiglcmJwKSIgIlxuIgotICAgICJtb3ZxICVyYngsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9FQlhfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCisgICAgIm1vdnEgJXJjeCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfRVhFQ1VUT1JfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCisgICAg
Im1vdnEgJXJkeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZG
U0VUKSAiKCVyYnApIiAiXG4iCisgICAgIm1vdnEgJXJieCwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQVJHX09GRlNFVCkgIiglcmJwKSIgIlxuIgogICAgICJtb3ZxICVyc2ksICIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FU0lfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCiAgICAgIm1v
dnEgJXJkaSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VESV9PRkZTRVQpICIoJXJi
cCkiICJcbiIKIApAQCAtNTI4LDEyICs1NTEsMTYgQEAgYXNtICgKICAgICAibW92cSAxICogIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICIoJXJheCksICVyY3giICJcbiIKICAgICAibW92
cSAlcmN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUlQX09GRlNFVCkgIiglcmJw
KSIgIlxuIgogICAgICJtb3ZxIDIgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIigl
cmF4KSwgJXJjeCIgIlxuIgotICAgICJtb3ZxICVyY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIiglcmJwKSIgIlxuIgorICAgICJtb3ZxICVyY3gs
ICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQlhfT0ZGU0VUKSAiKCVyYnApIiAiXG4i
CiAgICAgIm1vdnEgMyAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiKCVyYXgpLCAl
cmN4IiAiXG4iCi0gICAgIm1vdnEgJXJjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJH
X09GRlNFVCkgIiglcmJwKSIgIlxuIgorICAgICJtb3ZxICVyY3gsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9FRFhfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCiAgICAgIm1vdnEgNCAqICIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiKCVyYXgpLCAlcmN4IiAiXG4iCi0gICAgIm1v
dnEgJXJjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VBWF9PRkZTRVQpICIoJXJi
cCkiICJcbiIKKyAgICAibW92cSAlcmN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
RUNYX09GRlNFVCkgIiglcmJwKSIgIlxuIgogICAgICJtb3ZxIDUgKiAiIFNUUklOR0laRV9WQUxV
RV9PRihQVFJfU0laRSkgIiglcmF4KSwgJXJjeCIgIlxuIgorICAgICJtb3ZxICVyY3gsICIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQVhfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCisKKyAg
ICAibW92cSAlcmF4LCAlcmN4IiAiXG4iCisgICAgImFkZHEgJCIgU1RSSU5HSVpFX1ZBTFVFX09G
KDYgKiBQVFJfU0laRSkgIiwgJXJjeCIgIlxuIgogICAgICJtb3ZxICVyY3gsICIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0NQVV9FU1BfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCiAKICAgICAibW92
cSAlcjgsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SOF9PRkZTRVQpICIoJXJicCki
ICJcbiIKQEAgLTU2MiwxMSArNTg5LDggQEAgYXNtICgKICAgICAibW92cSAleG1tMTQsICIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YTU0xNF9PRkZTRVQpICIoJXJicCkiICJcbiIKICAg
ICAibW92cSAleG1tMTUsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YTU0xNV9PRkZT
RVQpICIoJXJicCkiICJcbiIKIAotICAgICJ4b3JxICVyYXgsICVyYXgiICJcbiIKLSAgICAibW92
cSAlcmF4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9JTklUX1NUQUNLX0ZVTkNUSU9OX09G
RlNFVCkgIiglcmJwKSIgIlxuIgotCiAgICAgIm1vdnEgJXJicCwgJXJkaSIgIlxuIiAvLyB0aGUg
UHJvYmU6OlN0YXRlKiBhcmcuCi0gICAgImNhbGwgKiIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIiglcmJwKSIgIlxuIgorICAgICJjYWxsICoiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9FWEVDVVRPUl9PRkZTRVQpICIoJXJicCkiICJcbiIKIAogICAg
IC8vIE1ha2Ugc3VyZSB0aGUgUHJvYmU6OlN0YXRlIGlzIGVudGlyZWx5IGJlbG93IHRoZSByZXN1
bHQgc3RhY2sgcG9pbnRlciBzbwogICAgIC8vIHRoYXQgcmVnaXN0ZXIgdmFsdWVzIGFyZSBzdGls
bCBwcmVzZXJ2ZWQgd2hlbiB3ZSBjYWxsIHRoZSBpbml0aWFsaXplU3RhY2sKQEAgLTczMSwxMyAr
NzU1LDE0IEBAIGV4dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCkKIAogdm9p
ZCBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoUHJvYmU6OkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBh
cmcpCiB7Ci0gICAgcHVzaChSZWdpc3RlcklEOjplc3ApOwotICAgIHB1c2goUmVnaXN0ZXJJRDo6
ZWF4KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJnKSwgUmVnaXN0ZXJJRDo6ZWF4KTsKLSAg
ICBwdXNoKFJlZ2lzdGVySUQ6OmVheCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSksIFJlZ2lzdGVySUQ6OmVheCk7CiAgICAgcHVzaChS
ZWdpc3RlcklEOjplYXgpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSksIFJlZ2lzdGVySUQ6OmVheCk7CisgICAg
cHVzaChSZWdpc3RlcklEOjplY3gpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihQcm9iZTo6ZXhlY3V0ZVByb2JlKSksIFJlZ2lzdGVySUQ6OmVjeCk7Cisg
ICAgcHVzaChSZWdpc3RlcklEOjplZHgpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCBSZWdpc3RlcklEOjplZHgpOworICAgIHB1c2go
UmVnaXN0ZXJJRDo6ZWJ4KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJnKSwgUmVnaXN0ZXJJ
RDo6ZWJ4KTsKICAgICBjYWxsKFJlZ2lzdGVySUQ6OmVheCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KE1BU01fUFJPQkUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1ByaW50
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1ByaW50
ZXIuaAkocmV2aXNpb24gMjIwOTM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9QcmludGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBuYW1lc3BhY2UgUHJvYmUgewotc3RydWN0IFN0YXRlOworY2xhc3MgQ29udGV4dDsK
IH0gLy8gbmFtZXNwYWNlIFByb2JlCiAKIG5hbWVzcGFjZSBQcmludGVyIHsKQEAgLTg2LDEyICs4
NiwxMiBAQCB1bmlvbiBEYXRhIHsKIH07CiAKIHN0cnVjdCBDb250ZXh0IHsKLSAgICBDb250ZXh0
KFByb2JlOjpTdGF0ZSYgcHJvYmVDb250ZXh0LCBEYXRhJiBkYXRhKQorICAgIENvbnRleHQoUHJv
YmU6OkNvbnRleHQmIHByb2JlQ29udGV4dCwgRGF0YSYgZGF0YSkKICAgICAgICAgOiBwcm9iZUNv
bnRleHQocHJvYmVDb250ZXh0KQogICAgICAgICAsIGRhdGEoZGF0YSkKICAgICB7IH0KIAotICAg
IFByb2JlOjpTdGF0ZSYgcHJvYmVDb250ZXh0OworICAgIFByb2JlOjpDb250ZXh0JiBwcm9iZUNv
bnRleHQ7CiAgICAgRGF0YSYgZGF0YTsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIFByb2JlIHsKKworc3RhdGljIHZvaWQgZmx1
c2hEaXJ0eVN0YWNrUGFnZXMoU3RhdGUqKTsKKwordm9pZCBleGVjdXRlUHJvYmUoU3RhdGUqIHN0
YXRlKQoreworICAgIENvbnRleHQgY29udGV4dChzdGF0ZSk7CisjaWYgQ1BVKEFSTTY0KQorICAg
IGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OworICAgIHZvaWQqIG9yaWdpbmFsTFIgPSBjcHUuZ3By
PHZvaWQqPihBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIHZvaWQqIG9yaWdpbmFsUEMgPSBjcHUu
cGMoKTsKKyNlbmRpZgorCisgICAgc3RhdGUtPmluaXRpYWxpemVTdGFja0Z1bmN0aW9uID0gbnVs
bHB0cjsKKyAgICBzdGF0ZS0+aW5pdGlhbGl6ZVN0YWNrQXJnID0gbnVsbHB0cjsKKyAgICBzdGF0
ZS0+cHJvYmVGdW5jdGlvbihjb250ZXh0KTsKKworI2lmIENQVShBUk02NCkKKyAgICAvLyBUaGUg
QVJNNjQgcHJvYmUgdHJhbXBvbGluZSBkb2VzIG5vdCBzdXBwb3J0IGNoYW5naW5nIGJvdGggbHIg
YW5kIHBjLgorICAgIFJFTEVBU0VfQVNTRVJUKG9yaWdpbmFsUEMgPT0gY3B1LnBjKCkgfHwgb3Jp
Z2luYWxMUiA9PSBjcHUuZ3ByPHZvaWQqPihBUk02NFJlZ2lzdGVyczo6bHIpKTsKKyNlbmRpZgor
CisgICAgaWYgKGNvbnRleHQuaGFzV3JpdGVzVG9GbHVzaCgpKSB7CisgICAgICAgIGNvbnRleHQu
c3RhY2soKS5zZXROZXdTdGFja1BvaW50ZXIoc3RhdGUtPmNwdS5zcCgpKTsKKyAgICAgICAgc3Rh
dGUtPmNwdS5zcCgpID0gc3RkOjptaW4oY29udGV4dC5zdGFjaygpLmxvd1dhdGVybWFyaygpLCBz
dGF0ZS0+Y3B1LnNwKCkpOworCisgICAgICAgIHN0YXRlLT5pbml0aWFsaXplU3RhY2tGdW5jdGlv
biA9IGZsdXNoRGlydHlTdGFja1BhZ2VzOworICAgICAgICBzdGF0ZS0+aW5pdGlhbGl6ZVN0YWNr
QXJnID0gY29udGV4dC5yZWxlYXNlU3RhY2soKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGZs
dXNoRGlydHlTdGFja1BhZ2VzKFN0YXRlKiBzdGF0ZSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3RhY2s+IHN0YWNrKHJlaW50ZXJwcmV0X2Nhc3Q8UHJvYmU6OlN0YWNrKj4oc3RhdGUtPmluaXRp
YWxpemVTdGFja0FyZykpOworICAgIHN0YWNrLT5mbHVzaFdyaXRlcygpOworICAgIHN0YXRlLT5j
cHUuc3AoKSA9IHN0YWNrLT5uZXdTdGFja1BvaW50ZXIoKTsKK30KKworLy8gTm90IGZvciBnZW5l
cmFsIHVzZS4gVGhpcyBzaG91bGQgb25seSBiZSBmb3Igd3JpdGluZyB0ZXN0cy4KK0pTX0VYUE9S
VF9QUklWQVRFIHZvaWQqIHByb2JlU3RhdGVGb3JDb250ZXh0KENvbnRleHQmKTsKK3ZvaWQqIHBy
b2JlU3RhdGVGb3JDb250ZXh0KENvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGNvbnRl
eHQubV9zdGF0ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgUHJvYmUKK30gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4
dC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJv
YmVDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiUHJvYmVTdGFjay5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKK25hbWVzcGFjZSBQcm9iZSB7CisKK3N0cnVjdCBDUFVTdGF0ZSB7CisgICAgdXNp
bmcgUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEOworICAgIHVzaW5nIFNQ
UmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpTUFJlZ2lzdGVySUQ7CisgICAgdXNpbmcgRlBS
ZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRDsKKworICAgIHN0YXRpYyBp
bmxpbmUgY29uc3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7IHJldHVybiBNYWNyb0Fz
c2VtYmxlcjo6Z3ByTmFtZShpZCk7IH0KKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIHNw
ck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6c3ByTmFtZShp
ZCk7IH0KKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGZwck5hbWUoRlBSZWdpc3RlcklE
IGlkKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6ZnByTmFtZShpZCk7IH0KKyAgICBpbmxpbmUg
dWludHB0cl90JiBncHIoUmVnaXN0ZXJJRCk7CisgICAgaW5saW5lIHVpbnRwdHJfdCYgc3ByKFNQ
UmVnaXN0ZXJJRCk7CisgICAgaW5saW5lIGRvdWJsZSYgZnByKEZQUmVnaXN0ZXJJRCk7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2lu
dGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KKyAgICBUIGdwcihSZWdpc3RlcklE
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgorICAgIFQgZ3By
KFJlZ2lzdGVySUQpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRy
PgorICAgIFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5
cGUqID0gbnVsbHB0cj4KKyAgICBUIHNwcihTUFJlZ2lzdGVySUQpIGNvbnN0OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IFQgZnByKEZQUmVnaXN0ZXJJRCkgY29uc3Q7CisKKyAgICB2b2lkKiYg
cGMoKTsKKyAgICB2b2lkKiYgZnAoKTsKKyAgICB2b2lkKiYgc3AoKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBUIHBjKCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmcCgp
IGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgc3AoKSBjb25zdDsKKworICAgIHVp
bnRwdHJfdCBncHJzW01hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpXTsKKyAgICB1
aW50cHRyX3Qgc3Byc1tNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZTUFJlZ2lzdGVycygpXTsKKyAg
ICBkb3VibGUgZnByc1tNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygpXTsKK307
CisKK2lubGluZSB1aW50cHRyX3QmIENQVVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBpZCkKK3sKKyAg
ICBBU1NFUlQoaWQgPj0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSAmJiBpZCA8PSBN
YWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCkpOworICAgIHJldHVybiBncHJzW2lkXTsKK30K
KworaW5saW5lIHVpbnRwdHJfdCYgQ1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpCit7Cisg
ICAgQVNTRVJUKGlkID49IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFNQUmVnaXN0ZXIoKSAmJiBpZCA8
PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFNQUmVnaXN0ZXIoKSk7CisgICAgcmV0dXJuIHNwcnNbaWRd
OworfQorCitpbmxpbmUgZG91YmxlJiBDUFVTdGF0ZTo6ZnByKEZQUmVnaXN0ZXJJRCBpZCkKK3sK
KyAgICBBU1NFUlQoaWQgPj0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpICYmIGlk
IDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0RlBSZWdpc3RlcigpKTsKKyAgICByZXR1cm4gZnByc1tp
ZF07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSo+CitUIENQVVN0YXRlOjpncHIoUmVnaXN0
ZXJJRCBpZCkgY29uc3QKK3sKKyAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0
ZSo+KHRoaXMpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihjcHUtPmdwcihpZCkpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Bv
aW50ZXI8VD46OnZhbHVlPjo6dHlwZSo+CitUIENQVVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBpZCkg
Y29uc3QKK3sKKyAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMp
OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+Z3ByKGlkKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdy
YWw8VD46OnZhbHVlPjo6dHlwZSo+CitUIENQVVN0YXRlOjpzcHIoU1BSZWdpc3RlcklEIGlkKSBj
b25zdAoreworICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNwdS0+c3ByKGlkKSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6
dmFsdWU+Ojp0eXBlKj4KK1QgQ1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0Cit7
CisgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPnNwcihpZCkpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorVCBDUFVTdGF0ZTo6ZnByKEZQUmVnaXN0ZXJJRCBpZCkgY29uc3QKK3sKKyAg
ICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOworICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8VD4oY3B1LT5mcHIoaWQpKTsKK30KKworaW5saW5lIHZvaWQqJiBDUFVT
dGF0ZTo6cGMoKQoreworI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCisgICAgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnNwcihYODZSZWdpc3RlcnM6OmVpcCkpOworI2VsaWYg
Q1BVKEFSTTY0KQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZzcHIoQVJN
NjRSZWdpc3RlcnM6OnBjKSk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFE
SVRJT05BTCkKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKEFSTVJl
Z2lzdGVyczo6cGMpKTsKKyNlbGlmIENQVShNSVBTKQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBDUFUiCisjZW5kaWYKK30KKwor
aW5saW5lIHZvaWQqJiBDUFVTdGF0ZTo6ZnAoKQoreworI2lmIENQVShYODYpIHx8IENQVShYODZf
NjQpCisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihYODZSZWdpc3Rl
cnM6OmVicCkpOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KCZncHIoQVJNNjRSZWdpc3RlcnM6OmZwKSk7CisjZWxpZiBDUFUoQVJNX1RIVU1C
MikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCoqPigmZ3ByKEFSTVJlZ2lzdGVyczo6ZnApKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoTUlQU1JlZ2lzdGVyczo6ZnApKTsK
KyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIENQVSIKKyNlbmRpZgorfQorCitpbmxpbmUgdm9p
ZComIENQVVN0YXRlOjpzcCgpCit7CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKFg4NlJlZ2lzdGVyczo6ZXNwKSk7
CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4o
JmdwcihBUk02NFJlZ2lzdGVyczo6c3ApKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUo
QVJNX1RSQURJVElPTkFMKQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZn
cHIoQVJNUmVnaXN0ZXJzOjpzcCkpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVnaXN0ZXJzOjpzcCkpOworI2Vsc2UKKyNl
cnJvciAiVW5zdXBwb3J0ZWQgQ1BVIgorI2VuZGlmCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitUIENQVVN0YXRlOjpwYygpIGNvbnN0Cit7CisgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nh
c3Q8Q1BVU3RhdGUqPih0aGlzKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUt
PnBjKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVCBDUFVTdGF0ZTo6ZnAoKSBjb25z
dAoreworICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5mcCgpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK1QgQ1BVU3RhdGU6OnNwKCkgY29uc3QKK3sKKyAgICBDUFVTdGF0ZSogY3B1
ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFQ+KGNwdS0+c3AoKSk7Cit9CisKK3N0cnVjdCBTdGF0ZTsKK3R5cGVkZWYgdm9pZCAoKlN0
YWNrSW5pdGlhbGl6YXRpb25GdW5jdGlvbikoU3RhdGUqKTsKKworc3RydWN0IFN0YXRlIHsKKyAg
ICBQcm9iZTo6RnVuY3Rpb24gcHJvYmVGdW5jdGlvbjsKKyAgICB2b2lkKiBhcmc7CisgICAgU3Rh
Y2tJbml0aWFsaXphdGlvbkZ1bmN0aW9uIGluaXRpYWxpemVTdGFja0Z1bmN0aW9uOworICAgIHZv
aWQqIGluaXRpYWxpemVTdGFja0FyZzsKKyAgICBDUFVTdGF0ZSBjcHU7Cit9OworCitjbGFzcyBD
b250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ7CisgICAgdXNpbmcgU1BS
ZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OlNQUmVnaXN0ZXJJRDsKKyAgICB1c2luZyBGUFJl
Z2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEOworCisgICAgQ29udGV4dChT
dGF0ZSogc3RhdGUpCisgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKKyAgICAgICAgLCBhcmcoc3Rh
dGUtPmFyZykKKyAgICAgICAgLCBjcHUoc3RhdGUtPmNwdSkKKyAgICB7IH0KKworICAgIHVpbnRw
dHJfdCYgZ3ByKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5ncHIoaWQpOyB9
CisgICAgdWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBtX3N0YXRlLT5j
cHUuc3ByKGlkKTsgfQorICAgIGRvdWJsZSYgZnByKEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4g
bV9zdGF0ZS0+Y3B1LmZwcihpZCk7IH0KKyAgICBjb25zdCBjaGFyKiBncHJOYW1lKFJlZ2lzdGVy
SUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5ncHJOYW1lKGlkKTsgfQorICAgIGNvbnN0IGNo
YXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuc3ByTmFt
ZShpZCk7IH0KKyAgICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1
cm4gbV9zdGF0ZS0+Y3B1LmZwck5hbWUoaWQpOyB9CisKKyAgICB2b2lkKiYgcGMoKSB7IHJldHVy
biBtX3N0YXRlLT5jcHUucGMoKTsgfQorICAgIHZvaWQqJiBmcCgpIHsgcmV0dXJuIG1fc3RhdGUt
PmNwdS5mcCgpOyB9CisgICAgdm9pZComIHNwKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwKCk7
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgcGMoKSB7IHJldHVybiBtX3N0YXRlLT5j
cHUucGM8VD4oKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZnAoKSB7IHJldHVybiBt
X3N0YXRlLT5jcHUuZnA8VD4oKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgc3AoKSB7
IHJldHVybiBtX3N0YXRlLT5jcHUuc3A8VD4oKTsgfQorCisgICAgU3RhY2smIHN0YWNrKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3N0YWNrLmlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBt
X3N0YWNrOworICAgIH07CisKKyAgICBib29sIGhhc1dyaXRlc1RvRmx1c2goKSB7IHJldHVybiBt
X3N0YWNrLmhhc1dyaXRlc1RvRmx1c2goKTsgfQorICAgIFN0YWNrKiByZWxlYXNlU3RhY2soKSB7
IHJldHVybiBuZXcgU3RhY2soV1RGTW92ZShtX3N0YWNrKSk7IH0KKworcHJpdmF0ZToKKyAgICBT
dGF0ZSogbV9zdGF0ZTsKK3B1YmxpYzoKKyAgICB2b2lkKiBhcmc7CisgICAgQ1BVU3RhdGUmIGNw
dTsKKworcHJpdmF0ZToKKyAgICBTdGFjayBtX3N0YWNrOworCisgICAgZnJpZW5kIHZvaWQqIHBy
b2JlU3RhdGVGb3JDb250ZXh0KENvbnRleHQmKTsgLy8gTm90IGZvciBnZW5lcmFsIHVzZS4gVGhp
cyBzaG91bGQgb25seSBiZSBmb3Igd3JpdGluZyB0ZXN0cy4KK307CisKK3ZvaWQgZXhlY3V0ZVBy
b2JlKFN0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIFByb2JlCisKK30gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2su
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJv
YmVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHJvYmVTdGFjay5oIgorCisjaW5jbHVkZSA8bWVtb3J5PgorCituYW1lc3BhY2Ug
SlNDIHsKK25hbWVzcGFjZSBQcm9iZSB7CisKK1BhZ2U6OlBhZ2Uodm9pZCogYmFzZUFkZHJlc3Mp
CisgICAgOiBtX2Jhc2VMb2dpY2FsQWRkcmVzcyhiYXNlQWRkcmVzcykKK3sKKyAgICBtZW1jcHko
Jm1fYnVmZmVyLCBiYXNlQWRkcmVzcywgc19wYWdlU2l6ZSk7Cit9CisKK3ZvaWQgUGFnZTo6Zmx1
c2hXcml0ZXMoKQoreworICAgIHVpbnRwdHJfdCBkaXJ0eUJpdHMgPSBtX2RpcnR5Qml0czsKKyAg
ICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAoZGlydHlCaXRzKSB7CisgICAgICAgIC8v
IEZpbmQgc3RhcnQuCisgICAgICAgIGlmIChkaXJ0eUJpdHMgJiAxKSB7CisgICAgICAgICAgICBz
aXplX3Qgc3RhcnRPZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgICAgICAvLyBGaW5kIGVuZC4KKyAg
ICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBkaXJ0eUJpdHMgPSBkaXJ0eUJpdHMgPj4g
MTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gc19jaHVua1NpemU7CisgICAgICAgICAgICB9
IHdoaWxlIChkaXJ0eUJpdHMgJiAxKTsKKworICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBvZmZz
ZXQgLSBzdGFydE9mZnNldDsKKyAgICAgICAgICAgIHVpbnQ4X3QqIHNyYyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KCZtX2J1ZmZlcikgKyBzdGFydE9mZnNldDsKKyAgICAgICAgICAgIHVp
bnQ4X3QqIGRzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1fYmFzZUxvZ2ljYWxBZGRy
ZXNzKSArIHN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCBzaXplKTsK
KyAgICAgICAgfQorICAgICAgICBkaXJ0eUJpdHMgPSBkaXJ0eUJpdHMgPj4gMTsKKyAgICAgICAg
b2Zmc2V0ICs9IHNfY2h1bmtTaXplOworICAgIH0KKyAgICBtX2RpcnR5Qml0cyA9IDA7Cit9CisK
K1N0YWNrOjpTdGFjayhTdGFjayYmIG90aGVyKQorICAgIDogbV9uZXdTdGFja1BvaW50ZXIob3Ro
ZXIubV9uZXdTdGFja1BvaW50ZXIpCisgICAgLCBtX2xvd1dhdGVybWFyayhvdGhlci5tX2xvd1dh
dGVybWFyaykKKyAgICAsIG1fc3RhY2tCb3VuZHMoV1RGTW92ZShvdGhlci5tX3N0YWNrQm91bmRz
KSkKKyAgICAsIG1fcGFnZXMoV1RGTW92ZShvdGhlci5tX3BhZ2VzKSkKK3sKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgb3RoZXIubV9pc1ZhbGlkID0gZmFsc2U7CisjZW5kaWYKK30KKworYm9v
bCBTdGFjazo6aGFzV3JpdGVzVG9GbHVzaCgpCit7CisgICAgZm9yIChhdXRvIGl0ID0gbV9wYWdl
cy5iZWdpbigpOyBpdCAhPSBtX3BhZ2VzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+
dmFsdWUtPmhhc1dyaXRlc1RvRmx1c2goKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgU3RhY2s6OmZsdXNoV3JpdGVzKCkKK3sK
KyAgICBmb3IgKGF1dG8gaXQgPSBtX3BhZ2VzLmJlZ2luKCk7IGl0ICE9IG1fcGFnZXMuZW5kKCk7
ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+Zmx1c2hXcml0ZXNJZk5lZWRlZCgpOworfQorCitQ
YWdlKiBTdGFjazo6ZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNzKQoreworICAgIC8vIFNpbmNl
IHRoZSBtYWNoaW5lIHN0YWNrIGlzIGFsd2F5cyBhbGxvY2F0ZWQgaW4gdW5pdHMgb2Ygd2hvbGUg
cGFnZXMsIGFzc2VydGluZworICAgIC8vIHRoYXQgdGhlIGFkZHJlc3MgaXMgY29udGFpbmVkIGlu
IHRoZSBzdGFjayBpcyBzdWZmaWNpZW50IHRvIGluZmVyIHRoYXQgaXRzIHBhZ2UKKyAgICAvLyBp
cyBhbHNvIGNvbnRhaW5lZCBpbiB0aGUgc3RhY2suCisgICAgUkVMRUFTRV9BU1NFUlQobV9zdGFj
a0JvdW5kcy5jb250YWlucyhhZGRyZXNzKSk7CisKKyAgICAvLyBXZSBtYXkgaGF2ZSBnb3R0ZW4g
aGVyZSBiZWNhdXNlIG9mIGEgY2FjaGUgbWlzcy4gU28sIGxvb2sgdXAgdGhlIHBhZ2UgZmlyc3QK
KyAgICAvLyBiZWZvcmUgYWxsb2NhdGluZyBhIG5ldyBvbmUsCisgICAgdm9pZCogYmFzZUFkZHJl
c3MgPSBQYWdlOjpiYXNlQWRkcmVzc0ZvcihhZGRyZXNzKTsKKyAgICBhdXRvIGl0ID0gbV9wYWdl
cy5maW5kKGJhc2VBZGRyZXNzKTsKKyAgICBpZiAoTElLRUxZKGl0ICE9IG1fcGFnZXMuZW5kKCkp
KQorICAgICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgZWxz
ZSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxQYWdlPihiYXNlQWRkcmVzcyk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQo
YmFzZUFkZHJlc3MsIFdURk1vdmUocGFnZSkpOworICAgICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2Ug
PSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIH0KKyAgICBtX2xhc3RBY2Nlc3Nl
ZFBhZ2VCYXNlQWRkcmVzcyA9IGJhc2VBZGRyZXNzOworICAgIHJldHVybiBtX2xhc3RBY2Nlc3Nl
ZFBhZ2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFByb2JlCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJvYmVDb250ZXh0OworCitu
YW1lc3BhY2UgUHJvYmUgeworCitjbGFzcyBQYWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBQYWdlKHZvaWQqIGJhc2VBZGRyZXNzKTsKKworICAgIHN0YXRp
YyB2b2lkKiBiYXNlQWRkcmVzc0Zvcih2b2lkKiBwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwKSAmIH5z
X3BhZ2VNYXNrKTsKKyAgICB9CisgICAgc3RhdGljIHZvaWQqIGNodW5rQWRkcmVzc0Zvcih2b2lk
KiBwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwKSAmIH5zX2NodW5rTWFzayk7CisgICAgfQorCisgICAg
dm9pZCogYmFzZUFkZHJlc3MoKSB7IHJldHVybiBtX2Jhc2VMb2dpY2FsQWRkcmVzczsgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldCh2b2lkKiBsb2dpY2FsQWRkcmVzcykK
KyAgICB7CisgICAgICAgIHJldHVybiAqcGh5c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRk
cmVzcyk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldCh2
b2lkKiBsb2dpY2FsQWRkcmVzcywgVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fZGlydHlCaXRz
IHw9IGRpcnR5Qml0Rm9yKGxvZ2ljYWxBZGRyZXNzKTsKKyAgICAgICAgKnBoeXNpY2FsQWRkcmVz
c0ZvcjxUKj4obG9naWNhbEFkZHJlc3MpID0gdmFsdWU7CisgICAgfQorCisgICAgYm9vbCBoYXNX
cml0ZXNUb0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gISFtX2RpcnR5Qml0czsgfQorICAgIHZvaWQg
Zmx1c2hXcml0ZXNJZk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAobV9kaXJ0eUJpdHMpCisg
ICAgICAgICAgICBmbHVzaFdyaXRlcygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50cHRy
X3QgZGlydHlCaXRGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgeworICAgICAgICB1aW50
cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGxvZ2ljYWxBZGRyZXNz
KSAmIHNfcGFnZU1hc2s7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEp
IDw8IChvZmZzZXQgPj4gc19jaHVua1NpemVTaGlmdCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Bv
aW50ZXI8VD46OnZhbHVlPjo6dHlwZT4KKyAgICBUIHBoeXNpY2FsQWRkcmVzc0Zvcih2b2lkKiBs
b2dpY2FsQWRkcmVzcykKKyAgICB7CisgICAgICAgIHVpbnRwdHJfdCBvZmZzZXQgPSByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4obG9naWNhbEFkZHJlc3MpICYgc19wYWdlTWFzazsKKyAgICAg
ICAgdm9pZCogcGh5c2ljYWxBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1f
YnVmZmVyKSArIG9mZnNldDsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4ocGh5
c2ljYWxBZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoV3JpdGVzKCk7CisKKyAgICB2
b2lkKiBtX2Jhc2VMb2dpY2FsQWRkcmVzcyB7IG51bGxwdHIgfTsKKyAgICB1aW50cHRyX3QgbV9k
aXJ0eUJpdHMgeyAwIH07CisKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzX3BhZ2VTaXpl
ID0gMTAyNDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBzX3BhZ2VNYXNrID0gc19w
YWdlU2l6ZSAtIDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc19jaHVua3NQZXJQYWdl
ID0gc2l6ZW9mKHVpbnRwdHJfdCkgKiA4OyAvLyBzaXplb2YobV9kaXJ0eUJpdHMpIGluIGJpdHMu
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc19jaHVua1NpemUgPSBzX3BhZ2VTaXplIC8g
c19jaHVua3NQZXJQYWdlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHNfY2h1bmtN
YXNrID0gc19jaHVua1NpemUgLSAxOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3Qgc19jaHVua1NpemVTaGlmdCA9IDQ7CisjZWxzZQorICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IHNfY2h1bmtTaXplU2hpZnQgPSA1OworI2VuZGlmCisgICAgc3RhdGlj
X2Fzc2VydChzX3BhZ2VTaXplID4gc19jaHVua1NpemUsICJiYWQgcGFnZVNpemUgb3IgY2h1bmtT
aXplIik7CisgICAgc3RhdGljX2Fzc2VydChzX2NodW5rU2l6ZSA9PSAoMSA8PCBzX2NodW5rU2l6
ZVNoaWZ0KSwgImJhZCBjaHVua1NpemVTaGlmdCIpOworCisKKyAgICB0eXBlZGVmIHR5cGVuYW1l
IHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNfcGFnZVNpemUsIHN0ZDo6YWxpZ25tZW50X29mPHVpbnRw
dHJfdD46OnZhbHVlPjo6dHlwZSBCdWZmZXI7CisgICAgQnVmZmVyIG1fYnVmZmVyOworfTsKKwor
Y2xhc3MgU3RhY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IFN0YWNrKCkKKyAgICAgICAgOiBtX2xvd1dhdGVybWFyayhyZWludGVycHJldF9jYXN0PHZvaWQq
PigtMSkpCisgICAgICAgICwgbV9zdGFja0JvdW5kcyhUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygp
KQorICAgIHsgfQorICAgIFN0YWNrKFN0YWNrJiYgb3RoZXIpOworCisgICAgdm9pZCogbG93V2F0
ZXJtYXJrKCkgeyByZXR1cm4gbV9sb3dXYXRlcm1hcms7IH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUs
IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2
b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgUGFnZSogcGFnZSA9IHBhZ2VGb3IoYWRkcmVz
cyk7CisgICAgICAgIHJldHVybiBwYWdlLT5nZXQ8VD4oYWRkcmVzcyk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwh
c3RkOjppc19zYW1lPGRvdWJsZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2
YWx1ZT46OnR5cGU+CisgICAgdm9pZCBzZXQodm9pZCogYWRkcmVzcywgVCB2YWx1ZSkKKyAgICB7
CisgICAgICAgIFBhZ2UqIHBhZ2UgPSBwYWdlRm9yKGFkZHJlc3MpOworICAgICAgICBwYWdlLT5z
ZXQ8VD4oYWRkcmVzcywgdmFsdWUpOworCisgICAgICAgIC8vIFdlIHVzZSB0aGUgY2h1bmtBZGRy
ZXNzIGZvciB0aGUgbG93IHdhdGVybWFyayBiZWNhdXNlIHdlJ2xsIGJlIGRvaW5nIHdyaXRlIGJh
Y2tzCisgICAgICAgIC8vIHRvIHRoZSBzdGFjayBpbiBpbmNyZW1lbnRzIG9mIGNodW5rcy4gSGVu
Y2UsIHdlJ2xsIHRyZWF0IHRoZSBsb3dlc3QgYWRkcmVzcyBvZgorICAgICAgICAvLyB0aGUgY2h1
bmsgYXMgdGhlIGxvdyB3YXRlcm1hcmsgb2YgYW55IGdpdmVuIHNldCBhZGRyZXNzLgorICAgICAg
ICB2b2lkKiBjaHVua0FkZHJlc3MgPSBQYWdlOjpjaHVua0FkZHJlc3NGb3IoYWRkcmVzcyk7Cisg
ICAgICAgIGlmIChjaHVua0FkZHJlc3MgPCBtX2xvd1dhdGVybWFyaykKKyAgICAgICAgICAgIG1f
bG93V2F0ZXJtYXJrID0gY2h1bmtBZGRyZXNzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPGRvdWJsZSwg
dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZSwgVD46OnR5cGUgZ2V0KHZv
aWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNz
KTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KHBhZ2UtPmdldDx1aW50NjRf
dD4oYWRkcmVzcykpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
ID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPGRvdWJsZSwgdHlwZW5hbWUg
c3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+CisgICAgdm9pZCBzZXQodm9p
ZCogYWRkcmVzcywgZG91YmxlIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0PHVpbnQ2NF90Pihh
ZGRyZXNzLCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSk7CisgICAgfQorCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUGFnZSogZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNzKTsKKworICAg
IHZvaWQqIG5ld1N0YWNrUG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3RhY2tQb2ludGVy
OyB9OworICAgIHZvaWQgc2V0TmV3U3RhY2tQb2ludGVyKHZvaWQqIHNwKSB7IG1fbmV3U3RhY2tQ
b2ludGVyID0gc3A7IH07CisKKyAgICBib29sIGhhc1dyaXRlc1RvRmx1c2goKTsKKyAgICB2b2lk
IGZsdXNoV3JpdGVzKCk7CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgYm9vbCBpc1ZhbGlk
KCkgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBQYWdlKiBw
YWdlRm9yKHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoTElLRUxZKFBhZ2U6OmJh
c2VBZGRyZXNzRm9yKGFkZHJlc3MpID09IG1fbGFzdEFjY2Vzc2VkUGFnZUJhc2VBZGRyZXNzKSkK
KyAgICAgICAgICAgIHJldHVybiBtX2xhc3RBY2Nlc3NlZFBhZ2U7CisgICAgICAgIHJldHVybiBl
bnN1cmVQYWdlRm9yKGFkZHJlc3MpOworICAgIH0KKworICAgIHZvaWQqIG1fbmV3U3RhY2tQb2lu
dGVyIHsgbnVsbHB0ciB9OworICAgIHZvaWQqIG1fbG93V2F0ZXJtYXJrOworCisgICAgLy8gQSBj
YWNoZSBvZiB0aGUgbGFzdCBhY2Nlc3NlZCBwYWdlIGRldGFpbHMgZm9yIHF1aWNrIGFjY2Vzcy4K
KyAgICB2b2lkKiBtX2xhc3RBY2Nlc3NlZFBhZ2VCYXNlQWRkcmVzcyB7IG51bGxwdHIgfTsKKyAg
ICBQYWdlKiBtX2xhc3RBY2Nlc3NlZFBhZ2UgeyBudWxscHRyIH07CisKKyAgICBTdGFja0JvdW5k
cyBtX3N0YWNrQm91bmRzOworICAgIEhhc2hNYXA8dm9pZCosIHN0ZDo6dW5pcXVlX3B0cjxQYWdl
Pj4gbV9wYWdlczsKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIG1faXNWYWxpZCB7
IHRydWUgfTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgUHJvYmUKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvdGVzdG1hc20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3Rm
L0NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KQEAgLTYxLDEyICs2MiwyMCBAQCBzdGF0aWMgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvCiB9IC8vIG5hbWVzcGFjZSBXVEYKICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9Q
Uk9CRSkKIAorbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgUHJvYmUgeworCit2b2lkKiBwcm9i
ZVN0YXRlRm9yQ29udGV4dChQcm9iZTo6Q29udGV4dCYpOworCit9IC8vIG5hbWVzcGFjZSBQcm9i
ZQorfSAvLyBuYW1lc3BhY2UgSlNDCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSB7CiAKICNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKLXVzaW5nIENQVVN0YXRlID0gTWFjcm9Bc3Nl
bWJsZXI6OkNQVVN0YXRlOwordXNpbmcgQ1BVU3RhdGUgPSBQcm9iZTo6Q1BVU3RhdGU7CiAjZW5k
aWYKIAogU3RhdGljTG9jayBjcmFzaExvY2s7CkBAIC0xODQsOCArMTkzLDggQEAgdm9pZCB0ZXN0
UHJvYmVSZWFkc0FyZ3VtZW50UmVnaXN0ZXJzKCkKICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIodGVzdFdvcmQoMykpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwog
I2VuZGlmCiAKLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKiBjb250ZXh0KSB7
Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7CisgICAgICAgIGppdC5wcm9i
ZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiBjcHUg
PSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlV2FzQ2FsbGVkID0gdHJ1ZTsKICAgICAg
ICAgICAgIENIRUNLX0VRKGNwdS5ncHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQo
MCkpOwogICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjEp
LCB0ZXN0V29yZCgxKSk7CkBAIC0yMjYsOCArMjM1LDggQEAgdm9pZCB0ZXN0UHJvYmVXcml0ZXNB
cmd1bWVudFJlZ2lzdGVycygpCiAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEZQUkluZm86OmZwUmVnVDEpOwogCiAgICAgICAgIC8vIFdyaXRl
IGV4cGVjdGVkIHZhbHVlcy4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7CisgICAgICAg
IGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0ZXN0V29yZCgwKTsK
ICAgICAgICAgICAgIGNwdS5ncHIoR1BSSW5mbzo6YXJndW1lbnRHUFIxKSA9IHRlc3RXb3JkKDEp
OwpAQCAtMjM5LDggKzI0OCw4IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRSZWdpc3Rl
cnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGV4cGVjdGVkIHZh
bHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSog
Y29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC0+Y3B1OworICAgICAg
ICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAg
YXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwog
ICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0
V29yZCgwKSk7CiAgICAgICAgICAgICBDSEVDS19FUShjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50
R1BSMSksIHRlc3RXb3JkKDEpKTsKQEAgLTI4Miw4ICsyOTEsOCBAQCB2b2lkIHRlc3RQcm9iZVBy
ZXNlcnZlc0dQUlMoKQogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAg
ICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJzIChleGNlcHQg
Zm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRl
KiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7CisgICAg
ICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIo
KTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7
CiAgICAgICAgICAgICAgICAgb3JpZ2luYWxTdGF0ZS5ncHIoaWQpID0gY3B1LmdwcihpZCk7CkBA
IC0yOTgsMTUgKzMwNywxNSBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAg
ICB9KTsKIAogICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwgYSBsb3Qgb2YgZnVu
Y3Rpb25zIGFuZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0g
KFByb2JlOjpTdGF0ZSopIHsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQm
KSB7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgQ0hFQ0tfRVEo
dGVzdEZ1bmN0aW9uVG9UcmFzaEdQUnMoMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSksIDEw
KTsKICAgICAgICAgICAgIENIRUNLX0VRKHRlc3RGdW5jdGlvblRvVHJhc2hGUFJzKDAsIDEsIDIs
IDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAxMCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFZh
bGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMuCi0gICAg
ICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAg
YXV0byYgY3B1ID0gY29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7
CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlk
ID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFz
dFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewogICAgICAgICAgICAgICAgIGlmIChpc1NQ
KGlkKSB8fCBpc0ZQKGlkKSkgewpAQCAtMzIyLDggKzMzMSw4IEBAIHZvaWQgdGVzdFByb2JlUHJl
c2VydmVzR1BSUygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdp
bmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNvbnRleHQp
IHsKLSAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAgaml0LnBy
b2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIGNw
dSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAg
ICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBD
Q2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoaXNTcGVjaWFsR1BSKGlkKSkKQEAgLTMzNSw4ICszNDQsOCBAQCB2b2lkIHRl
c3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0
ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9yZWQuCi0gICAgICAgIGppdC5wcm9i
ZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0g
Y29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29u
dGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAg
ICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxw
ZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7
IGlkID0gbmV4dElEKGlkKSkgewogICAgICAgICAgICAgICAgIGlmIChpc1NwZWNpYWxHUFIoaWQp
KQpAQCAtMzUzLDcgKzM2Miw3IEBAIHZvaWQgdGVzdFByb2JlUHJlc2VydmVzR1BSUygpCiAgICAg
Q0hFQ0tfRVEocHJvYmVDYWxsQ291bnQsIDUpOwogfQogCi12b2lkIHRlc3RQcm9iZU1vZGlmaWVz
U3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OlN0YXRlKik+IGNvbXB1dGVN
b2RpZmllZFN0YWNrKQordm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OkZ1
bmN0aW9uPHZvaWQqKFByb2JlOjpDb250ZXh0Jik+IGNvbXB1dGVNb2RpZmllZFN0YWNrUG9pbnRl
cikKIHsKICAgICB1bnNpZ25lZCBwcm9iZUNhbGxDb3VudCA9IDA7CiAgICAgQ1BVU3RhdGUgb3Jp
Z2luYWxTdGF0ZTsKQEAgLTM2Niw3ICszNzUsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3Rh
Y2tQb2ludGVyKFdURjo6CiAgICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4YzU7CiAjZWxpZiBD
UFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKICAgICBhdXRvIGZsYWdzU1BS
ID0gQVJNUmVnaXN0ZXJzOjphcHNyOwotICAgIHVpbnRwdHJfdCBmbGFnc01hc2sgPSAweGYwMDAw
MDAwOworICAgIHVpbnRwdHJfdCBmbGFnc01hc2sgPSAweGY4MDAwMDAwOwogI2VsaWYgQ1BVKEFS
TTY0KQogICAgIGF1dG8gZmxhZ3NTUFIgPSBBUk02NFJlZ2lzdGVyczo6bnpjdjsKICAgICB1aW50
cHRyX3QgZmxhZ3NNYXNrID0gMHhmMDAwMDAwMDsKQEAgLTM3Nyw4ICszODYsOCBAQCB2b2lkIHRl
c3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6CiAKICAgICAgICAgLy8gUHJlc2VydmUg
b3JpZ2luYWwgc3RhY2sgcG9pbnRlciBhbmQgbW9kaWZ5IHRoZSBzcCwgYW5kCiAgICAgICAgIC8v
IHdyaXRlIGV4cGVjdGVkIHZhbHVlcyBpbnRvIG90aGVyIHJlZ2lzdGVycyAoZXhjZXB0IGZvciBm
cCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKiBjb250ZXh0
KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7CisgICAgICAgIGppdC5w
cm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiBj
cHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0g
Q0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CiAgICAgICAg
ICAgICAgICAgb3JpZ2luYWxTdGF0ZS5ncHIoaWQpID0gY3B1LmdwcihpZCk7CkBAIC0zOTYsMTMg
KzQwNSwxMyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6CiAgICAg
ICAgICAgICBjcHUuc3ByKGZsYWdzU1BSKSA9IG1vZGlmaWVkRmxhZ3M7CiAKICAgICAgICAgICAg
IG9yaWdpbmFsU1AgPSBjcHUuc3AoKTsKLSAgICAgICAgICAgIG1vZGlmaWVkU1AgPSBjb21wdXRl
TW9kaWZpZWRTdGFjayhjb250ZXh0KTsKKyAgICAgICAgICAgIG1vZGlmaWVkU1AgPSBjb21wdXRl
TW9kaWZpZWRTdGFja1BvaW50ZXIoY29udGV4dCk7CiAgICAgICAgICAgICBjcHUuc3AoKSA9IG1v
ZGlmaWVkU1A7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJl
Z2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0g
KFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4
dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9i
ZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpm
aXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0g
bmV4dElEKGlkKSkgewogICAgICAgICAgICAgICAgIGlmIChpc0ZQKGlkKSkgewpAQCAtNDE1LDEz
ICs0MjQsMTMgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OgogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJz
dEZQUmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdpc3RlcigpOyBpZCA9
IG5leHRJRChpZCkpCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmZwcjx1aW50NjRfdD4o
aWQpLCB0ZXN0V29yZDY0KGlkKSk7Ci0gICAgICAgICAgICBDSEVDS19FUShjcHUuc3ByKGZsYWdz
U1BSKSwgbW9kaWZpZWRGbGFncyk7CisgICAgICAgICAgICBDSEVDS19FUShjcHUuc3ByKGZsYWdz
U1BSKSAmIGZsYWdzTWFzaywgbW9kaWZpZWRGbGFncyAmIGZsYWdzTWFzayk7CiAgICAgICAgICAg
ICBDSEVDS19FUShjcHUuc3AoKSwgbW9kaWZpZWRTUCk7CiAgICAgICAgIH0pOwogCiAgICAgICAg
IC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQ
cm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQt
PmNwdTsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVD
YWxsQ291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmly
c3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5l
eHRJRChpZCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNTcGVjaWFsR1BSKGlkKSkKQEAgLTQz
NSw4ICs0NDQsOCBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIG9yaWdpbmFsIHN0YXRl
IHdhcyByZXN0b3JlZC4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7CisgICAgICAgIGpp
dC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRv
JiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQg
PD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGlzU3BlY2lhbEdQUihpZCkpCkBAIC00NDUsNyArNDU0LDcgQEAgdm9p
ZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OgogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsg
aWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpCiAg
ICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmZwcjx1aW50NjRfdD4oaWQpLCBvcmlnaW5hbFN0
YXRlLmZwcjx1aW50NjRfdD4oaWQpKTsKLSAgICAgICAgICAgIENIRUNLX0VRKGNwdS5zcHIoZmxh
Z3NTUFIpLCBvcmlnaW5hbFN0YXRlLnNwcihmbGFnc1NQUikpOworICAgICAgICAgICAgQ0hFQ0tf
RVEoY3B1LnNwcihmbGFnc1NQUikgJiBmbGFnc01hc2ssIG9yaWdpbmFsU3RhdGUuc3ByKGZsYWdz
U1BSKSAmIGZsYWdzTWFzayk7CiAgICAgICAgICAgICBDSEVDS19FUShjcHUuc3AoKSwgb3JpZ2lu
YWxTUCk7CiAgICAgICAgIH0pOwogCkBAIC00NjMsOCArNDcyLDkgQEAgdm9pZCB0ZXN0UHJvYmVN
b2RpZmllc1N0YWNrUG9pbnRlclRvSW5zaQogICAgIGluY3JlbWVudCA9IDIgKiBzaXplb2YodWlu
dHB0cl90KTsKICNlbmRpZgogICAgIGZvciAoc2l6ZV90IG9mZnNldCA9IDA7IG9mZnNldCA8IHNp
emVvZihQcm9iZTo6U3RhdGUpOyBvZmZzZXQgKz0gaW5jcmVtZW50KSB7Ci0gICAgICAgIHRlc3RQ
cm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFs9XSAoUHJvYmU6OlN0YXRlKiBjb250ZXh0KSAtPiB2
b2lkKiB7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oY29u
dGV4dCkgKyBvZmZzZXQ7CisgICAgICAgIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFs9
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIC0+IHZvaWQqIHsKKyAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihwcm9iZVN0YXRlRm9yQ29udGV4dChjb250ZXh0
KSkgKyBvZmZzZXQ7CisKICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtNDc3LDggKzQ4Nyw4IEBA
IHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXJUb05CeXQKICAgICBpbmNyZW1lbnQg
PSAyICogc2l6ZW9mKHVpbnRwdHJfdCk7CiAjZW5kaWYKICAgICBmb3IgKHNpemVfdCBvZmZzZXQg
PSAwOyBvZmZzZXQgPCAxICogS0I7IG9mZnNldCArPSBpbmNyZW1lbnQpIHsKLSAgICAgICAgdGVz
dFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoWz1dIChQcm9iZTo6U3RhdGUqIGNvbnRleHQpIC0+
IHZvaWQqIHsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihj
b250ZXh0LT5jcHUuc3AoKSkgLSBvZmZzZXQ7CisgICAgICAgIHRlc3RQcm9iZU1vZGlmaWVzU3Rh
Y2tQb2ludGVyKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIC0+IHZvaWQqIHsKKyAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNwdS5zcDx1aW50OF90Kj4oKSAtIG9mZnNldDsKICAgICAg
ICAgfSk7CiAgICAgfQogfQpAQCAtNDkzLDcgKzUwMyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZp
ZXNQcm9ncmFtQ291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29udGludWF0
aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgIC8vIFZhbGlk
YXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAgICAgICBqaXQucHJvYmUo
WyZdIChQcm9iZTo6U3RhdGUqKSB7CisgICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250
ZXh0JikgewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIGNvbnRp
bnVhdGlvbldhc1JlYWNoZWQgPSB0cnVlOwogICAgICAgICB9KTsKQEAgLTUwNiw5ICs1MTYsOSBA
QCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIoKQogICAgICAgICBqaXQuZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMg
aW50byB0aGUgcmVnaXN0ZXJzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUq
IGNvbnRleHQpIHsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRl
eHQpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7Ci0gICAgICAgICAgICBjb250ZXh0
LT5wYygpID0gY29udGludWF0aW9uLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAg
ICAgICAgY29udGV4dC5jcHUucGMoKSA9IGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsgLy8gV2Ug
c2hvdWxkIG5ldmVyIGdldCBoZXJlLgpAQCAtNTE3LDcxICs1MjcsMjMgQEAgdm9pZCB0ZXN0UHJv
YmVNb2RpZmllc1Byb2dyYW1Db3VudGVyKCkKICAgICBDSEVDS19FUShjb250aW51YXRpb25XYXNS
ZWFjaGVkLCB0cnVlKTsKIH0KIAotc3RydWN0IEZpbGxTdGFja0RhdGEgewordm9pZCB0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKK3sKKyAgICB1bnNpZ25lZCBwcm9iZUNhbGxDb3VudCA9
IDA7CiAgICAgQ1BVU3RhdGUgb3JpZ2luYWxTdGF0ZTsKICAgICB2b2lkKiBvcmlnaW5hbFNQIHsg
bnVsbHB0ciB9OwogICAgIHZvaWQqIG5ld1NQIHsgbnVsbHB0ciB9OwogICAgIHVpbnRwdHJfdCBt
b2RpZmllZEZsYWdzIHsgMCB9OwotICAgIE1hY3JvQXNzZW1ibGVyOjpTUFJlZ2lzdGVySUQgZmxh
Z3NTUFI7Ci19OwotCi1zdGF0aWMgdm9pZCBmaWxsU3RhY2soUHJvYmU6OlN0YXRlKiBjb250ZXh0
KQotewotICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKLQotICAgIEZpbGxTdGFja0RhdGEm
IGRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxGaWxsU3RhY2tEYXRhKj4oY29udGV4dC0+aW5pdGlh
bGl6ZVN0YWNrQXJnKTsKLSAgICBDUFVTdGF0ZSYgb3JpZ2luYWxTdGF0ZSA9IGRhdGEub3JpZ2lu
YWxTdGF0ZTsKLSAgICB2b2lkKiYgb3JpZ2luYWxTUCA9IGRhdGEub3JpZ2luYWxTUDsKLSAgICB2
b2lkKiYgbmV3U1AgPSBkYXRhLm5ld1NQOwotICAgIHVpbnRwdHJfdCYgbW9kaWZpZWRGbGFncyA9
IGRhdGEubW9kaWZpZWRGbGFnczsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEJiBm
bGFnc1NQUiA9IGRhdGEuZmxhZ3NTUFI7Ci0KLSAgICBDSEVDS19FUShyZWludGVycHJldF9jYXN0
PHZvaWQqPihjb250ZXh0LT5pbml0aWFsaXplU3RhY2tGdW5jdGlvbiksIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGZpbGxTdGFjaykpOwotICAgIENIRUNLX0VRKGNwdS5zcCgpLCBuZXdTUCk7Ci0K
LSAgICAvLyBWZXJpZnkgdGhhdCB0aGUgcHJvYmUgaGFzIHB1dCB0aGUgUHJvYmU6OlN0YXRlIG91
dCBvZiBoYXJtJ3Mgd2F5LgotICAgIENIRUNLX0VRKChyZWludGVycHJldF9jYXN0PHZvaWQqPihj
b250ZXh0ICsgMSkgPD0gY3B1LnNwKCkpLCB0cnVlKTsKLQotICAgIC8vIFZlcmlmeSB0aGUgQ1BV
IHN0YXRlLgotICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3Rlcigp
OyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsK
LSAgICAgICAgaWYgKGlzRlAoaWQpKSB7Ci0gICAgICAgICAgICBDSEVDS19FUShjcHUuZ3ByKGlk
KSwgb3JpZ2luYWxTdGF0ZS5ncHIoaWQpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChpc1NwZWNpYWxHUFIoaWQpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIENIRUNLX0VRKGNwdS5ncHIoaWQpLCB0ZXN0V29yZChpZCkpOwotICAgIH0KLSAg
ICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0RlBSZWdpc3RlcigpOyBpZCA8PSBD
Q2FsbEhlbHBlcnM6Omxhc3RGUFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkKLSAgICAgICAg
Q0hFQ0tfRVEoY3B1LmZwcjx1aW50NjRfdD4oaWQpLCB0ZXN0V29yZDY0KGlkKSk7Ci0gICAgQ0hF
Q0tfRVEoY3B1LnNwcihmbGFnc1NQUiksIG1vZGlmaWVkRmxhZ3MpOwotCi0gICAgLy8gRmlsbCB0
aGUgc3RhY2sgd2l0aCB2YWx1ZXMuCi0gICAgdWludHB0cl90KiBwID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3QqPihuZXdTUCk7Ci0gICAgaW50IGNvdW50ID0gMDsKLSAgICB3aGlsZSAocCA8
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4ob3JpZ2luYWxTUCkpCi0gICAgICAgICpwKysg
PSB0ZXN0V29yZChjb3VudCsrKTsKLX07Ci0KLXZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1dp
dGhDYWxsYmFjaygpCi17Ci0gICAgdW5zaWduZWQgcHJvYmVDYWxsQ291bnQgPSAwOwotICAgIEZp
bGxTdGFja0RhdGEgZGF0YTsKLSAgICBDUFVTdGF0ZSYgb3JpZ2luYWxTdGF0ZSA9IGRhdGEub3Jp
Z2luYWxTdGF0ZTsKLSAgICB2b2lkKiYgb3JpZ2luYWxTUCA9IGRhdGEub3JpZ2luYWxTUDsKLSAg
ICB2b2lkKiYgbmV3U1AgPSBkYXRhLm5ld1NQOwotICAgIHVpbnRwdHJfdCYgbW9kaWZpZWRGbGFn
cyA9IGRhdGEubW9kaWZpZWRGbGFnczsKLSAgICBzaXplX3QgbnVtYmVyT2ZFeHRyYUVudHJpZXNU
b1dyaXRlID0gMTA7IC8vIEFSTTY0IHJlcXVpcmVzIHRoYXQgdGhpcyBiZSAyIHdvcmQgYWxpZ25l
ZC4KLSAgICBNYWNyb0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEJiBmbGFnc1NQUiA9IGRhdGEuZmxh
Z3NTUFI7CisgICAgc2l6ZV90IG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0ZSB7IDEwIH07IC8v
IEFSTTY0IHJlcXVpcmVzIHRoYXQgdGhpcyBiZSAyIHdvcmQgYWxpZ25lZC4KIAogI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCi0gICAgZmxhZ3NTUFIgPSBYODZSZWdpc3RlcnM6OmVmbGFnczsK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEIGZsYWdzU1BSID0gWDg2UmVnaXN0ZXJz
OjplZmxhZ3M7CiAgICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4YzU7CiAjZWxpZiBDUFUoQVJN
X1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICBmbGFnc1NQUiA9IEFSTVJlZ2lz
dGVyczo6YXBzcjsKLSAgICB1aW50cHRyX3QgZmxhZ3NNYXNrID0gMHhmMDAwMDAwMDsKKyAgICBN
YWNyb0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEIGZsYWdzU1BSID0gQVJNUmVnaXN0ZXJzOjphcHNy
OworICAgIHVpbnRwdHJfdCBmbGFnc01hc2sgPSAweGY4MDAwMDAwOwogI2VsaWYgQ1BVKEFSTTY0
KQotICAgIGZsYWdzU1BSID0gQVJNNjRSZWdpc3RlcnM6Om56Y3Y7CisgICAgTWFjcm9Bc3NlbWJs
ZXI6OlNQUmVnaXN0ZXJJRCBmbGFnc1NQUiA9IEFSTTY0UmVnaXN0ZXJzOjpuemN2OwogICAgIHVp
bnRwdHJfdCBmbGFnc01hc2sgPSAweGYwMDAwMDAwOwogI2VuZGlmCiAKQEAgLTU4OSw4ICs1NTEs
OSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tXaXRoQ2FsbGJhY2soCiAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAgICAgICAgIC8vIFdyaXRlIGV4cGVjdGVkIHZh
bHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpT
dGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC0+Y3B1Owor
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgICAgICAgICBhdXRvJiBzdGFjayA9
IGNvbnRleHQuc3RhY2soKTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAKICAgICAg
ICAgICAgIC8vIFByZXNlcnZlIHRoZSBvcmlnaW5hbCBDUFUgc3RhdGUuCkBAIC02MDgsMjEgKzU3
MSwyNSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tXaXRoQ2FsbGJhY2soCiAgICAgICAg
ICAgICBtb2RpZmllZEZsYWdzID0gb3JpZ2luYWxTdGF0ZS5zcHIoZmxhZ3NTUFIpIF4gZmxhZ3NN
YXNrOwogICAgICAgICAgICAgY3B1LnNwcihmbGFnc1NQUikgPSBtb2RpZmllZEZsYWdzOwogCi0g
ICAgICAgICAgICBDSEVDS19FUShyZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LT5pbml0
aWFsaXplU3RhY2tGdW5jdGlvbiksIDApOwotCi0gICAgICAgICAgICAvLyBQcmVwYXJlIGZvciBp
bml0aWFsaXplU3RhY2sgY2FsbGJhY2suCi0gICAgICAgICAgICBjb250ZXh0LT5pbml0aWFsaXpl
U3RhY2tGdW5jdGlvbiA9IGZpbGxTdGFjazsKLSAgICAgICAgICAgIGNvbnRleHQtPmluaXRpYWxp
emVTdGFja0FyZyA9ICZkYXRhOwotCiAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB3ZSdsbCBi
ZSB3cml0aW5nIG92ZXIgdGhlIHJlZ2lvbnMgb2YgdGhlIHN0YWNrIHdoZXJlIHRoZSBQcm9iZTo6
U3RhdGUgaXMuCiAgICAgICAgICAgICBvcmlnaW5hbFNQID0gY3B1LnNwKCk7Ci0gICAgICAgICAg
ICBuZXdTUCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4oY29udGV4dCkgLSBudW1iZXJP
ZkV4dHJhRW50cmllc1RvV3JpdGU7CisgICAgICAgICAgICBuZXdTUCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Kj4ocHJvYmVTdGF0ZUZvckNvbnRleHQoY29udGV4dCkpIC0gbnVtYmVyT2ZF
eHRyYUVudHJpZXNUb1dyaXRlOwogICAgICAgICAgICAgY3B1LnNwKCkgPSBuZXdTUDsKKworICAg
ICAgICAgICAgLy8gRmlsbCB0aGUgc3RhY2sgd2l0aCB2YWx1ZXMuCisgICAgICAgICAgICB1aW50
cHRyX3QqIHAgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCo+KG5ld1NQKTsKKyAgICAgICAg
ICAgIGludCBjb3VudCA9IDA7CisgICAgICAgICAgICBzdGFjay5zZXQ8ZG91YmxlPihwKyssIDEu
MjM0NTY3ODkpOworICAgICAgICAgICAgaWYgKGlzMzJCaXQoKSkKKyAgICAgICAgICAgICAgICBw
Kys7IC8vIE9uIDMyLWJpdCB0YXJnZXRzLCBhIGRvdWJsZSB0YWtlcyB1cCAyIHVpbnRwdHJfdC4K
KyAgICAgICAgICAgIHdoaWxlIChwIDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPihvcmln
aW5hbFNQKSkKKyAgICAgICAgICAgICAgICBzdGFjay5zZXQ8dWludHB0cl90PihwKyssIHRlc3RX
b3JkKGNvdW50KyspKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0
aGUgcmVnaXN0ZXJzIGFuZCBzdGFjayBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMuCi0gICAgICAg
IGppdC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0
byYgY3B1ID0gY29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7Cisg
ICAgICAgICAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKICAgICAgICAgICAgIHBy
b2JlQ2FsbENvdW50Kys7CiAKICAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSByZWdpc3RlciB2
YWx1ZXMuCkBAIC02MzcsMTkgKzYwNCwyMiBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tX
aXRoQ2FsbGJhY2soCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBD
Q2FsbEhlbHBlcnM6OmZpcnN0RlBSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RG
UFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkKICAgICAgICAgICAgICAgICBDSEVDS19FUShj
cHUuZnByPHVpbnQ2NF90PihpZCksIHRlc3RXb3JkNjQoaWQpKTsKLSAgICAgICAgICAgIENIRUNL
X0VRKGNwdS5zcHIoZmxhZ3NTUFIpLCBtb2RpZmllZEZsYWdzKTsKKyAgICAgICAgICAgIENIRUNL
X0VRKGNwdS5zcHIoZmxhZ3NTUFIpICYgZmxhZ3NNYXNrLCBtb2RpZmllZEZsYWdzICYgZmxhZ3NN
YXNrKTsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5zcCgpLCBuZXdTUCk7CiAKLSAgICAgICAg
ICAgIC8vIFZhbGlkYXRlIHRoZSBzdGFjayB3aXRoIHZhbHVlcy4KKyAgICAgICAgICAgIC8vIFZh
bGlkYXRlIHRoZSBzdGFjayB2YWx1ZXMuCiAgICAgICAgICAgICB1aW50cHRyX3QqIHAgPSByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdCo+KG5ld1NQKTsKICAgICAgICAgICAgIGludCBjb3VudCA9
IDA7CisgICAgICAgICAgICBDSEVDS19FUShzdGFjay5nZXQ8ZG91YmxlPihwKyspLCAxLjIzNDU2
Nzg5KTsKKyAgICAgICAgICAgIGlmIChpczMyQml0KCkpCisgICAgICAgICAgICAgICAgcCsrOyAv
LyBPbiAzMi1iaXQgdGFyZ2V0cywgYSBkb3VibGUgdGFrZXMgdXAgMiB1aW50cHRyX3QuCiAgICAg
ICAgICAgICB3aGlsZSAocCA8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4ob3JpZ2luYWxT
UCkpCi0gICAgICAgICAgICAgICAgQ0hFQ0tfRVEoKnArKywgdGVzdFdvcmQoY291bnQrKykpOwor
ICAgICAgICAgICAgICAgIENIRUNLX0VRKHN0YWNrLmdldDx1aW50cHRyX3Q+KHArKyksIHRlc3RX
b3JkKGNvdW50KyspKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gUmVzdG9yZSB0aGUgb3Jp
Z2luYWwgc3RhdGUuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4
dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC0+Y3B1OworICAgICAgICBqaXQu
cHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byYg
Y3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAg
ICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9
IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewogICAgICAg
ICAgICAgICAgIGlmIChpc1NwZWNpYWxHUFIoaWQpKQpAQCAtNzA3LDcgKzY3Nyw3IEBAIHZvaWQg
cnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFByb2JlTW9kaWZpZXNTdGFja1Bv
aW50ZXJUb0luc2lkZVByb2JlU3RhdGVPblN0YWNrKCkpOwogICAgIFJVTih0ZXN0UHJvYmVNb2Rp
Zmllc1N0YWNrUG9pbnRlclRvTkJ5dGVzQmVsb3dTUCgpKTsKICAgICBSVU4odGVzdFByb2JlTW9k
aWZpZXNQcm9ncmFtQ291bnRlcigpKTsKLSAgICBSVU4odGVzdFByb2JlTW9kaWZpZXNTdGFja1dp
dGhDYWxsYmFjaygpKTsKKyAgICBSVU4odGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpKTsK
ICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKIAogICAgIGlmICh0YXNrcy5pc0VtcHR5KCkp
Cg==
</data>
<flag name="review"
          id="338960"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318608</attachid>
            <date>2017-08-20 17:13:53 -0700</date>
            <delta_ts>2017-08-20 19:52:25 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-175688.patch</filename>
            <type>text/plain</type>
            <size>126278</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwOTU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2MyBA
QAorMjAxNy0wOC0xOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoKSB0byBhbGxvdyB0aGUgcHJvYmUgZnVuY3Rp
b24gdG8gcmVzaXplIHRoZSBzdGFjayBmcmFtZSBhbmQgYWx0ZXIgc3RhY2sgZGF0YSBpbiBvbmUg
cGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTY4OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM0MzY4NzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHRoZSBjbGllbnRz
IG9mIHRoZSBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoKSBjYW4gbm93IGNoYW5nZQorICAgICAgICBz
dGFjayB2YWx1ZXMgd2l0aG91dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQgd2hldGhlciB0aGVyZSBp
cyBlbm91Z2ggcm9vbSBpbiB0aGUKKyAgICAgICAgY3VycmVudCBzdGFjayBmcmFtZSBmb3IgaXQg
b3Igbm90LiAgVGhpcyBpcyBkb25lIHVzaW5nIHRoZSBQcm9iZTo6Q29udGV4dCdzIHN0YWNrCisg
ICAgICAgIG1lbWJlciBsaWtlIHNvOgorCisgICAgICAgICAgICBqaXQucHJvYmUoW10gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgYXV0byBjcHUgPSBjb250ZXh0
LmNwdTsKKyAgICAgICAgICAgICAgICBhdXRvIHN0YWNrID0gY29udGV4dC5zdGFjaygpOworICAg
ICAgICAgICAgICAgIHVpbnRwdHJfdCogY3VycmVudFNQID0gY3B1LnNwPHVpbnRwdHJfdCo+KCk7
CisKKyAgICAgICAgICAgICAgICAvLyBHZXQgYSB2YWx1ZSBhdCB0aGUgY3VycmVudCBzdGFjayBw
b2ludGVyIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBzdGFjay5nZXQ8
dWludHB0cl90PihjdXJyZW50U1ApOworCisgICAgICAgICAgICAgICAgLy8gU2V0IGEgdmFsdWUg
YWJvdmUgdGhlIGN1cnJlbnQgc3RhY2sgcG9pbnRlciAod2l0aGluIGN1cnJlbnQgZnJhbWUpLgor
ICAgICAgICAgICAgICAgIHN0YWNrLnNldDx1aW50cHRyX3Q+KGN1cnJlbnRTUCArIDEwLCB2YWx1
ZSk7CisKKyAgICAgICAgICAgICAgICAvLyBTZXQgYSB2YWx1ZSBiZWxvdyB0aGUgY3VycmVudCBz
dGFjayBwb2ludGVyIChvdXQgb2YgY3VycmVudCBmcmFtZSkuCisgICAgICAgICAgICAgICAgc3Rh
Y2suc2V0PHVpbnRwdHJfdD4oY3VycmVudFNQIC0gMTAsIHZhbHVlKTsKKworICAgICAgICAgICAg
ICAgIC8vIFNldCB0aGUgbmV3IHN0YWNrIHBvaW50ZXIuCisgICAgICAgICAgICAgICAgY3B1LnNw
KCkgPSBjdXJyZW50U1AgLSAyMDsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIFdoYXQgaGFw
cGVucyBiZWhpbmQgdGhlIHNjZW5lOgorCisgICAgICAgIDEuIHRoZSBnZW5lcmF0ZWQgSklUIHBy
b2JlIGNvZGUgd2lsbCBub3cgY2FsbCBQcm9iZTo6ZXhlY3V0ZVByb2JlKCksIGFuZAorICAgICAg
ICAgICBQcm9iZTo6ZXhlY3V0ZVByb2JlKCkgd2lsbCBpbiB0dXJuIGNhbGwgdGhlIGNsaWVudCdz
IHByb2JlIGZ1bmN0aW9uLgorCisgICAgICAgICAgIFByb2JlOjpleGVjdXRlUHJvYmUoKSByZWNl
aXZlcyB0aGUgUHJvYmU6OlN0YXRlIG9uIHRoZSBtYWNoaW5lIHN0YWNrIHBhc3NlZAorICAgICAg
ICAgICB0byBpdCBieSB0aGUgcHJvYmUgdHJhbXBvbGluZS4gIFByb2JlOjpleGVjdXRlUHJvYmUo
KSB3aWxsIGluc3RhbnRpYXRlIGEKKyAgICAgICAgICAgUHJvYmU6OkNvbnRleHQgdG8gYmUgcGFz
c2VkIHRvIHRoZSBjbGllbnQncyBwcm9iZSBmdW5jdGlvbi4gIFRoZSBjbGllbnQgd2lsbAorICAg
ICAgICAgICBubyBsb25nZXIgc2VlIHRoZSBQcm9iZTo6U3RhdGUgZGlyZWN0bHkuCisKKyAgICAg
ICAgMi4gVGhlIFByb2JlOjpDb250ZXh0IGNvbWVzIHdpdGggYSBQcm9iZTo6U3RhY2sgd2hpY2gg
c2VydmVzIGFzIGEgbWFuYWdlciBvZgorICAgICAgICAgICBzdGFjayBwYWdlcy4gIEN1cnJlbnRs
eSwgZWFjaCBwYWdlIGlzIDFLIGluIHNpemUuCisgICAgICAgICAgIFByb2JlOjpDb250ZXh0Ojpz
dGFjaygpIHJldHVybnMgYSByZWZlcmVuY2UgdG8gYW4gaW5zdGFuY2Ugb2YgUHJvYmU6OlN0YWNr
LgorCisgICAgICAgIDMuIEludm9raW5nIGdldCgpIG9mIHNldCgpIG9uIFByb2JlOjpTdGFjayB3
aXRoIGFuIGFkZHJlc3Mgd2lsbCBsZWFkIHRvIHRoZQorICAgICAgICAgICBmb2xsb3dpbmc6CisK
KyAgICAgICAgICAgYS4gdGhlIGFkZHJlc3Mgd2lsbCBiZSBkZWNvZGVkIHRvIGEgYmFzZUFkZHJl
c3MgdGhhdCBwb2ludHMgdG8gdGhlIDFLIHBhZ2UKKyAgICAgICAgICAgICAgdGhhdCBjb250YWlu
cyB0aGF0IGFkZHJlc3MuCisKKyAgICAgICAgICAgYi4gdGhlIFByb2JlOjpTdGFjayB3aWxsIGNo
ZWNrIGlmIGl0IGFscmVhZHkgaGFzIGEgY2FjaGVkIDFLIHBhZ2UgZm9yIHRoYXQgYmFzZUFkZHJl
c3MuCisgICAgICAgICAgICAgIElmIHNvLCBnbyB0byBzdGVwIChmKS4gIEVsc2UsIGNvbnRpbnVl
IHdpdGggc3RlcCAoYykuCisKKyAgICAgICAgICAgYy4gdGhlIFByb2JlOjpTdGFjayB3aWxsIG1h
bGxvYyBhIDFLIG1pcnJvciBwYWdlLCBhbmQgbWVtY3B5IHRoZSAxSyBzdGFjayBwYWdlCisgICAg
ICAgICAgICAgIGZvciB0aGF0IHNwZWNpZmllZCBiYXNlQWRkcmVzcyB0byB0aGlzIG1pcnJvciBw
YWdlLgorCisgICAgICAgICAgIGQuIHRoZSBtaXJyb3IgcGFnZSB3aWxsIGJlIGFkZGVkIHRvIHRo
ZSBQcm9iZVN0YWNrJ3MgbV9wYWdlcyBIYXNoTWFwLAorICAgICAgICAgICAgICBrZXllZCBvbiB0
aGUgYmFzZUFkZHJlc3MuCisKKyAgICAgICAgICAgZS4gdGhlIFByb2JlU3RhY2sgd2lsbCBhbHNv
IGNhY2hlIHRoZSBsYXN0IGJhc2VBZGRyZXNzIGFuZCBpdHMgY29ycmVzcG9uZGluZworICAgICAg
ICAgICAgICBtaXJyb3IgcGFnZSBpbiB1c2UuICBXaXRoIG1lbW9yeSBhY2Nlc3NlcyB0ZW5kaW5n
IHRvIGJlIGxvY2FsaXplZCwgdGhpcworICAgICAgICAgICAgICB3aWxsIHNhdmUgdXMgZnJvbSBo
YXZpbmcgdG8gbG9vayB1cCB0aGUgcGFnZSBpbiB0aGUgSGFzaE1hcC4KKworICAgICAgICAgICBm
LiBnZXQoKSB3aWxsIG1hcCB0aGUgcmVxdWVzdGVkIGFkZHJlc3MgdG8gYSBwaHlzaWNhbCBhZGRy
ZXNzIGluIHRoZSBtaXJyb3IKKyAgICAgICAgICAgICAgcGFnZSwgYW5kIHJldHVybiB0aGUgdmFs
dWUgYXQgdGhhdCBsb2NhdGlvbi4KKworICAgICAgICAgICBnLiBzZXQoKSB3aWxsIG1hcCB0aGUg
cmVxdWVzdGVkIGFkZHJlc3MgdG8gYSBwaHlzaWNhbCBhZGRyZXNzIGluIHRoZSBtaXJyb3IKKyAg
ICAgICAgICAgICAgcGFnZSwgYW5kIHNldCB0aGUgdmFsdWUgYXQgdGhhdCBsb2NhdGlvbiBpbiB0
aGUgbWlycm9yIHBhZ2UuCisKKyAgICAgICAgICAgICAgc2V0KCkgd2lsbCBhbHNvIHNldCBhIGRp
cnR5IGJpdCBjb3JyZXNwb25kaW5nIHRvIHRoZSAiY2FjaGUgbGluZSIgdGhhdAorICAgICAgICAg
ICAgICB3YXMgbW9kaWZpZWQgaW4gdGhlIG1pcnJvciBwYWdlLgorCisgICAgICAgIDQuIFdoZW4g
dGhlIGNsaWVudCdzIHByb2JlIGZ1bmN0aW9uIHJldHVybnMsIFByb2JlOjpleGVjdXRlUHJvYmUo
KSB3aWxsIGNoZWNrIGlmCisgICAgICAgICAgIHRoZXJlIGFyZSBzdGFjayBjaGFuZ2VzIHRoYXQg
bmVlZCB0byBiZSBhcHBsaWVkLiAgSWYgc3RhY2sgY2hhbmdlcyBhcmUgbmVlZGVkOgorCisgICAg
ICAgICAgIGEuIFByb2JlOjpleGVjdXRlUHJvYmUoKSB3aWxsIGFkanVzdCB0aGUgc3RhY2sgcG9p
bnRlciB0byBlbnN1cmUgZW5vdWdoIHN0YWNrCisgICAgICAgICAgICAgIHNwYWNlIGlzIGF2YWls
YWJsZSB0byBmbHVzaCB0aGUgZGlydHkgc3RhY2sgcGFnZXMuICBJdCB3aWxsIGFsc28gcmVnaXN0
ZXIgYQorICAgICAgICAgICAgICBmbHVzaFN0YWNrRGlydHlQYWdlcyBjYWxsYmFjayBmdW5jdGlv
biBpbiB0aGUgUHJvYmU6OlN0YXRlLiAgVGhlcmVhZnRlciwKKyAgICAgICAgICAgICAgUHJvYmU6
OmV4ZWN1dGVQcm9iZSgpIHJldHVybnMgdG8gdGhlIHByb2JlIHRyYW1wb2xpbmUuCisKKyAgICAg
ICAgICAgYi4gdGhlIHByb2JlIHRyYW1wb2xpbmUgYWRqdXN0cyB0aGUgc3RhY2sgcG9pbnRlciwg
bW92ZXMgdGhlIFByb2JlOjpTdGF0ZSB0bworICAgICAgICAgICAgICBhIHNhZmUgcGxhY2UgaWYg
bmVlZGVkLCBhbmQgdGhlbiBjYWxscyB0aGUgZmx1c2hTdGFja0RpcnR5UGFnZXMgY2FsbGJhY2sK
KyAgICAgICAgICAgICAgaWYgbmVlZGVkLgorCisgICAgICAgICAgIGMuIHRoZSBmbHVzaFN0YWNr
RGlydHlQYWdlcygpIGNhbGxiYWNrIGl0ZXJhdGVzIHRoZSBQcm9iZTo6U3RhY2sncyBtX3BhZ2Vz
CisgICAgICAgICAgICAgIEhhc2hNYXAgYW5kIGZsdXNoIGFsbCBkaXJ0eSAiY2FjaGUgbGluZXMi
IHRvIHRoZSBtYWNoaW5lIHN0YWNrLgorICAgICAgICAgICAgICBUaGVyZWFmdGVyLCBmbHVzaFN0
YWNrRGlydHlQYWdlcygpIHJldHVybnMgdG8gdGhlIHByb2JlIHRyYW1wb2xpbmUuCisKKyAgICAg
ICAgICAgZC4gbGFzdGx5LCB0aGUgcHJvYmUgdHJhbXBvbGluZSB3aWxsIHJlc3RvcmUgYWxsIHJl
Z2lzdGVyIHZhbHVlcyBhbmQgcmV0dXJuCisgICAgICAgICAgICAgIHRvIHRoZSBwYyBzZXQgaW4g
dGhlIFByb2JlOjpTdGF0ZS4KKworICAgICAgICBUbyBtYWtlIHRoaXMgcGF0Y2ggd29yaywgSSBh
bHNvIGhhZCB0byBkbyB0aGUgZm9sbG93aW5nIHdvcms6CisKKyAgICAgICAgNS4gUmVmYWN0b3Ig
TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlIGludG8gUHJvYmU6OkNQVVN0YXRlLgorICAgICAgICAg
ICBNYWlubHksIHRoaXMgbWVhbnMgbW92aW5nIHRoZSBjb2RlIG92ZXIgdG8gUHJvYmVDb250ZXh0
LmguCisgICAgICAgICAgIEkgYWxzbyBhZGRlZCBzb21lIGNvbnZlbmllbmNlIGFjY2Vzc29yIG1l
dGhvZHMgZm9yIHNwciByZWdpc3RlcnMuIAorCisgICAgICAgICAgIE1vdmVkIFByb2JlOjpDb250
ZXh0IG92ZXIgdG8gaXRzIG93biBmaWxlIFByb2JlQ29udGV4dC5oL2NwcC4KKworICAgICAgICA2
LiBGaXggYWxsIHByb2JlIHRyYW1wb2xpbmVzIHRvIHBhc3MgdGhlIGFkZHJlc3Mgb2YgUHJvYmU6
OmV4ZWN1dGVQcm9iZSBpbgorICAgICAgICAgICBhZGRpdGlvbiB0byB0aGUgY2xpZW50J3MgcHJv
YmUgZnVuY3Rpb24gYW5kIGFyZy4KKworICAgICAgICAgICBJIGFsc28gdG9vayB0aGlzIG9wcG9y
dHVuaXR5IHRvIG9wdGltaXplIHRoZSBnZW5lcmF0ZWQgSklUIHByb2JlIGNvZGUgdG8KKyAgICAg
ICAgICAgbWluaW1pemUgdGhlIGFtb3VudCBvZiBtZW1vcnkgc3RvcmVzIG5lZWRlZC4gCisKKyAg
ICAgICAgNy4gU2ltcGxpZmllZCB0aGUgQVJNNjQgcHJvYmUgdHJhbXBvbGluZS4gIFRoZSBBUk02
NCBwcm9iZSBvbmx5IHN1cHBvcnRzIGNoYW5naW5nCisgICAgICAgICAgIGVpdGhlciBsciBvciBw
YyAob3IgbmVpdGhlciksIGJ1dCBub3QgYm90aCBhdCBpbiB0aGUgc2FtZSBwcm9iZSBpbnZvY2F0
aW9uLgorICAgICAgICAgICBUaGUgQVJNNjQgcHJvYmUgdHJhbXBvbGluZSB1c2VkIHRvIGhhdmUg
dG8gY2hlY2sgZm9yIHRoaXMgaW52YXJpYW50IGluIHRoZQorICAgICAgICAgICBhc3NlbWJseSB0
cmFtcG9saW5lIGNvZGUuICBXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgUHJvYmU6OmV4ZWN1dGVQ
cm9iZSgpLAorICAgICAgICAgICB3ZSBjYW4gbm93IGRvIGl0IHRoZXJlIGFuZCBzaW1wbGlmeSB0
aGUgdHJhbXBvbGluZS4KKworICAgICAgICA4LiBGaXggYSBidWcgaW4gdGhlIG9sZCAgQVJNNjQg
cHJvYmUgdHJhbXBvbGluZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIGNsaWVudAorICAgICAgICAg
ICBjaGFuZ2VzIGxyLiAgVGhhdCBjb2RlIHBhdGggbmV2ZXIgd29ya2VkIGJlZm9yZSwgYnV0IGhh
cyBub3cgYmVlbiBmaXhlZC4KKworICAgICAgICA5LiBSZW1vdmVkIHRydXN0ZWRJbW0zMkZyb21Q
dHIoKSBoZWxwZXIgZnVuY3Rpb25zIGluIE1hY3JvQXNzZW1ibGVyQVJNIGFuZAorICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckFSTXY3LgorCisgICAgICAgICAgIFdlIGNhbiBub3cgdXNlIG1vdmUo
KSB3aXRoIFRydXN0ZWRJbW1QdHIsIGFuZCBpdCBkb2VzIHRoZSBzYW1lIHRoaW5nIGJ1dCBpbiBh
CisgICAgICAgICAgIG1vcmUgZ2VuZXJpYyB3YXkuCisKKyAgICAgICAxMC4gQVJNdjcncyBtb3Zl
KCkgZW1pdHRlciBtYXkgZW5jb2RlIGEgVDEgbW92ZSBpbnN0cnVjdGlvbiwgd2hpY2ggaGFwcGVu
cyB0byBoYXZlCisgICAgICAgICAgIHRoZSBzYW1lIHNlbWFudGljcyBhcyBtb3ZzIChhY2NvcmRp
bmcgdG8gdGhlIFRodW1iIHNwZWMpLiAgVGhpcyBtZWFucyB0aGVzZQorICAgICAgICAgICBpbnN0
cnVjdGlvbnMgbWF5IHRyYXNoIHRoZSBBUFNSIGZsYWdzIGJlZm9yZSB3ZSBoYXZlIGEgY2hhbmNl
IHRvIHByZXNlcnZlIHRoZW0uCisKKyAgICAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIE1hY3Jv
QXNzZW1ibGVyQVJNdjcncyBwcm9iZSgpIHRvIHByZXNlcnZlIHRoZSBBUFNSIHJlZ2lzdGVyCisg
ICAgICAgICAgIGVhcmx5IG9uLiAgVGhpcyBlbnRhaWxzIGFkZGluZyBzdXBwb3J0IGZvciB0aGUg
bXJzIGluc3RydWN0aW9uIGluIHRoZQorICAgICAgICAgICBBUk12N0Fzc2VtYmxlci4KKworICAg
ICAgIDEwLiBDaGFuZ2UgdGVzdG1hc20ncyB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKCkg
dG8gbm93IG1vZGlmeSBzdGFjayB2YWx1ZXMKKyAgICAgICAgICAgdGhlIGVhc3kgd2F5LgorCisg
ICAgICAgICAgIEFsc28gZml4ZWQgdGVzdG1hc20gdGVzdHMgd2hpY2ggY2hlY2sgZmxhZyByZWdp
c3RlcnMgdG8gb25seSBjb21wYXJlIHRoZQorICAgICAgICAgICBwb3J0aW9ucyB0aGF0IGFyZSBt
b2RpZmlhYmxlIGJ5IHRoZSBjbGllbnQgaS5lLiBzb21lIG1hc2tpbmcgaXMgYXBwbGllZC4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGhhcyBwYXNzZWQgdGhlIHRlc3RtYXNtIHRlc3RzIG9uIHg4Niwg
eDg2XzY0LCBhcm02NCwgYW5kIGFybXY3LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNdjdBc3Nl
bWJsZXI6Om1ycyk6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlND
OjpzdGRGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBy
b2JlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpncHJOYW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpzcHJOYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpmcHJOYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpncHIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OnNwcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6ZnByKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6
OkNQVVN0YXRlOjpmcHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6Q1BVU3RhdGU6OnBjKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OkNQVVN0YXRlOjpmcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
OjpDUFVTdGF0ZTo6c3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
Q1BVU3RhdGU6OnBjIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OkNQVVN0YXRlOjpmcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpDUFVTdGF0ZTo6c3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9i
ZTo6U3RhdGU6Omdwcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlByb2JlOjpTdGF0ZTo6c3By
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YXRlOjpmcHIpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpQcm9iZTo6U3RhdGU6Omdwck5hbWUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpQcm9iZTo6U3RhdGU6OnNwck5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9i
ZTo6U3RhdGU6OmZwck5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhdGU6
OnBjKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YXRlOjpmcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlByb2JlOjpTdGF0ZTo6c3ApOiBEZWxldGVkLgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHA6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyOjpwcm9iZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp0cnVzdGVkSW1tMzJGcm9tUHRyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHA6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwcm9iZSk6CisgICAgICAgIChKU0M6OmFybTY0UHJv
YmVFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuY3BwOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cHJvYmUpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNdjc6OmFybVY3Q29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk12Nzo6dHJ1c3RlZEltbTMyRnJvbVB0cik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHA6CisgICAgICAgIChKU0M6OlByaW50ZXI6OnBy
aW50Q2FsbGJhY2spOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIu
aDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwOgorICAg
ICAgICAoSlNDOjpjdGlNYXNtUHJvYmVUcmFtcG9saW5lKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnByb2JlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUHJpbnRlci5oOgorICAgICAg
ICAoSlNDOjpQcmludGVyOjpDb250ZXh0OjpDb250ZXh0KToKKyAgICAgICAgKiBhc3NlbWJsZXIv
UHJvYmVDb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByb2JlOjpleGVjdXRlUHJv
YmUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6aGFuZGxlUHJvYmVTdGFja0luaXRpYWxpemF0aW9u
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OnByb2JlU3RhdGVGb3JDb250ZXh0KToKKyAgICAgICAg
KiBhc3NlbWJsZXIvUHJvYmVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcm9iZTo6
Q1BVU3RhdGU6Omdwck5hbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OnNwck5h
bWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OmZwck5hbWUpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6Q1BVU3RhdGU6Omdwcik6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0
ZTo6c3ByKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpmcHIpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpmcHIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OnBjKToKKyAgICAgICAgKEpT
Qzo6UHJvYmU6OkNQVVN0YXRlOjpmcCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6
c3ApOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OnBjIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpmcCBjb25zdCk6CisgICAgICAgIChKU0M6OlByb2JlOjpD
UFVTdGF0ZTo6c3AgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6Q29udGV4
dCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpncHIpOgorICAgICAgICAoSlNDOjpQ
cm9iZTo6Q29udGV4dDo6c3ByKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmZwcik6
CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpncHJOYW1lKToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OkNvbnRleHQ6OnNwck5hbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6
ZnByTmFtZSk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpwYyk6CisgICAgICAgIChK
U0M6OlByb2JlOjpDb250ZXh0OjpmcCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0Ojpz
cCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpzdGFjayk6CisgICAgICAgIChKU0M6
OlByb2JlOjpDb250ZXh0OjpoYXNXcml0ZXNUb0ZsdXNoKToKKyAgICAgICAgKEpTQzo6UHJvYmU6
OkNvbnRleHQ6OnJlbGVhc2VTdGFjayk6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlU3RhY2su
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJvYmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6UGFnZTo6Zmx1c2hXcml0ZXMpOgorICAgICAgICAoSlNDOjpQcm9iZTo6U3Rh
Y2s6OlN0YWNrKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpoYXNXcml0ZXNUb0ZsdXNo
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpmbHVzaFdyaXRlcyk6CisgICAgICAgIChK
U0M6OlByb2JlOjpTdGFjazo6ZW5zdXJlUGFnZUZvcik6CisgICAgICAgICogYXNzZW1ibGVyL1By
b2JlU3RhY2suaDogQWRkZWQuCisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpiYXNlQWRkcmVz
c0Zvcik6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpjaHVua0FkZHJlc3NGb3IpOgorICAg
ICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6YmFzZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpQcm9i
ZTo6UGFnZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlBhZ2U6OnNldCk6CisgICAgICAg
IChKU0M6OlByb2JlOjpQYWdlOjpoYXNXcml0ZXNUb0ZsdXNoIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJvYmU6OlBhZ2U6OmZsdXNoV3JpdGVzSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpQcm9i
ZTo6UGFnZTo6ZGlydHlCaXRGb3IpOgorICAgICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6cGh5c2lj
YWxBZGRyZXNzRm9yKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpTdGFjayk6CisgICAg
ICAgIChKU0M6OlByb2JlOjpTdGFjazo6bG93V2F0ZXJtYXJrKToKKyAgICAgICAgKEpTQzo6UHJv
YmU6OlN0YWNrOjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6OnNldCk6CisgICAg
ICAgIChKU0M6OlByb2JlOjpTdGFjazo6bmV3U3RhY2tQb2ludGVyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJvYmU6OlN0YWNrOjpzZXROZXdTdGFja1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpQ
cm9iZTo6U3RhY2s6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6OnBhZ2VG
b3IpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRl
c3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVX
cml0ZXNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZVByZXNlcnZl
c0dQUlMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcik6Cisg
ICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyVG9JbnNpZGVQcm9iZVN0
YXRlT25TdGFjayk6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVy
VG9OQnl0ZXNCZWxvd1NQKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNQcm9ncmFt
Q291bnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMpOgor
ICAgICAgICAoSlNDOjpydW4pOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
ZmlsbFN0YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFj
a1dpdGhDYWxsYmFjayk6IERlbGV0ZWQuCisKIDIwMTctMDgtMTggIFBlciBBcm5lIFZvbGxhbiAg
PHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCAzMi1iaXQgTWFjcm9Bc3Nl
bWJsZXI6OnByb2JlIHN1cHBvcnQgZm9yIFdpbmRvd3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDggQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVy
LmNwcAogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAKICAgICBhc3Nl
bWJsZXIvUHJpbnRlci5jcHAKKyAgICBhc3NlbWJsZXIvUHJvYmVDb250ZXh0LmNwcAorICAgIGFz
c2VtYmxlci9Qcm9iZVN0YWNrLmNwcAogCiAgICAgYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJz
QW5kU3RhY2tCeUxpbmVhclNjYW4uY3BwCiAgICAgYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJz
QnlHcmFwaENvbG9yaW5nLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDI5LDYgKzI0Mjks
MTAgQEAKIAkJRkEzQUIyMTFDODQ5NDUyNEFCMzkwMjY3IC8qIEpTU291cmNlQ29kZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNzM5MjY5MThEQzY0
MzMwQUZDREYwRDcgLyogSlNTb3VyY2VDb2RlLmNwcCAqLzsgfTsKIAkJRkUwRDRBMDYxQUI4REQw
QTAwMkY1NEJGIC8qIEV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwRDRBMDQxQUI4REQwQTAwMkY1NEJGIC8q
IEV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwICovOyB9OwogCQlGRTBENEEwOTFBQkEyNDM3MDAy
RjU0QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA3MUFCQTI0MzcwMDJGNTRC
RiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwICovOyB9OworCQlGRTEwQUFF
QjFGNDRENTI4MDA5REVEQzUgLyogUHJvYmVTdGFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2Jl
U3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlGRTEwQUFFQzFGNDRENTQ1MDA5REVEQzUgLyogUHJvYmVTdGFjay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEwQUFFOTFGNDRENTEwMDA5REVE
QzUgLyogUHJvYmVTdGFjay5jcHAgKi87IH07CisJCUZFMTBBQUVFMUY0NEQ5NTQwMDlERURDNSAv
KiBQcm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMTBBQUVEMUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTEwQUFGNDFGNDY4
Mzk2MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAvKiBQcm9iZUNv
bnRleHQuY3BwICovOyB9OwogCQlGRTEyMjAyNzFCRTdGNThDMDAzOUU2RjIgLyogSklUQWRkR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTEyMjAyNjFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggKi87IH07CiAJCUZF
MTIyMDI4MUJFN0Y1OTEwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMjIwMjUxQkU3RjU2NDAwMzlF
NkYyIC8qIEpJVEFkZEdlbmVyYXRvci5jcHAgKi87IH07CiAJCUZFMTg3QTAxMUJGQkU1NUUwMDM4
QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUxODc5RkYxQkZCQzczQzAwMzhCQkNBIC8qIEpJVE11bEdlbmVy
YXRvci5jcHAgKi87IH07CkBAIC01MTA1LDYgKzUxMDksMTAgQEAKIAkJRkUwRDRBMDUxQUI4REQw
QTAwMkY1NEJGIC8qIEV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5oOyBwYXRoID0gQVBJL3Rlc3Rz
L0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUwRDRBMDcxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBHbG9iYWxDb250ZXh0
V2l0aEZpbmFsaXplclRlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL0dsb2JhbENvbnRleHRXaXRo
RmluYWxpemVyVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMEQ0QTA4
MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJU
ZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTBBQUU5MUY0NEQ1MTAwMDlERURDNSAv
KiBQcm9iZVN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
b2JlU3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTEwQUFFQTFGNDRE
NTEyMDA5REVEQzUgLyogUHJvYmVTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQcm9iZVN0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMTBBQUVE
MUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJvYmVDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvYmVDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkUxMjIwMjUxQkU3RjU2NDAwMzlFNkYyIC8qIEpJVEFkZEdlbmVy
YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBZGRHZW5l
cmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEyMjAyNjFCRTdGNTY0
MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpJVEFkZEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTE4NzlGRjFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE11bEdlbmVyYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Njc2LDYgKzc2ODQsMTAgQEAKIAkJCQk4NkM1NjhERjEx
QTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovLAogCQkJCUZFNjNERDU1MUVBOUJD
NUQwMDEwM0E2OSAvKiBQcmludGVyLmNwcCAqLywKIAkJCQlGRTYzREQ1MzFFQTlCNjBFMDAxMDNB
NjkgLyogUHJpbnRlci5oICovLAorCQkJCUZFMTBBQUYzMUY0NjgyNkQwMDlERURDNSAvKiBQcm9i
ZUNvbnRleHQuY3BwICovLAorCQkJCUZFMTBBQUVEMUY0NEQ5NDYwMDlERURDNSAvKiBQcm9iZUNv
bnRleHQuaCAqLywKKwkJCQlGRTEwQUFFOTFGNDRENTEwMDA5REVEQzUgLyogUHJvYmVTdGFjay5j
cHAgKi8sCisJCQkJRkUxMEFBRUExRjQ0RDUxMjAwOURFREM1IC8qIFByb2JlU3RhY2suaCAqLywK
IAkJCQlGRTUzM0NBMDFGMjE3QzMxMDAxNkExRkUgLyogdGVzdG1hc20uY3BwICovLAogCQkJCTk2
ODhDQjE0MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCAqLywKIAkJCSk7CkBAIC04
NTkxLDYgKzg2MDMsNyBAQAogCQkJCTBGQkYxNThEMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9j
a1NldElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzNDRDAwMTlBREE0MTAwMDZBQzcy
QSAvKiBERkdCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzNjRCNzE2NEIw
QzExMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTEwQUFFRTFGNDREOTU0MDA5REVEQzUgLyogUHJvYmVDb250ZXh0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCREI5QUQx
QUIwRkJDNjAwMEI1N0U1IC8qIERGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NjMxLDYgKzk2NDQsNyBAQAogCQkJCUFENDkz
N0M4MURERDBBQUUwMDc3QzgwNyAvKiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUQyRkNDMkQxREI4MzhGRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGOTFEQjU4REFEMDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUx
MEFBRUIxRjQ0RDUyODAwOURFREM1IC8qIFByb2JlU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUFEMkZDQzFFMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0
cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRkIxREI1OERBRDAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBRDJGQ0MxRjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTEwNDQxLDYgKzEwNDU1LDcgQEAKIAkJCQkw
RjY5Q0M4ODE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZFQzlEQzcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMkZDQ0Y5MThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2lu
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTEwQUFGNDFGNDY4Mzk2MDA5REVEQzUgLyogUHJv
YmVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjE3NjYwMTk2QjhGOUUwMDkxMDUy
QSAvKiBERkdIZWFwTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODQxNjgxQkE4
QzMyMTAwNjE4MzdEIC8qIERGR0luZmVycmVkVHlwZUNoZWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3MDREOTA1MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTEwNzI5LDYgKzEwNzQ0LDcgQEAKIAkJCQkxNDdGMzlENjEw
N0VDMzc2MDA0MjdBNDggLyogSlNDSlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQw
RkNFNDBBNTFFNDZCMDAwNUYwNjEgLyogSlNDbGFzc1JlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkUzQzYxNjE2N0JBQkVFMDA2RDc2MEEgLyogSlNDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJRkUxMEFBRUMxRjQ0RDU0NTAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTRCRDVBMzAwQTNFOTFGNjAwQkFGNTlDIC8qIEpTQ29udGV4dFJlZi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1
bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcyQUFGN0NEMUQwRDMxQjMwMDVFNjBC
RSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIu
aAkocmV2aXNpb24gMjIwOTM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
Uk12N0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MzUsNiArNzM1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgT1BfU0RJVl9UMSAgICAgID0gMHhGQjkwLAogICAgICAgICBPUF9VRElWX1Qx
ICAgICAgPSAweEZCQjAsCiAjZW5kaWYKKyAgICAgICAgT1BfTVJTX1QxICAgICAgID0gMHhGM0VG
LAogICAgIH0gT3Bjb2RlSUQxOwogCiAgICAgdHlwZWRlZiBlbnVtIHsKQEAgLTE0MzMsNiArMTQz
NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtdm4ocmQsIHJtLCBTaGlmdFR5cGVBbmRBbW91
bnQoKSk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1ycyhSZWdpc3RlcklEIHJk
LCBTUFJlZ2lzdGVySUQgc3BlY1JlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChzcGVjUmVnID09
IEFSTVJlZ2lzdGVyczo6YXBzcik7CisgICAgICAgIEFTU0VSVCghQmFkUmVnKHJkKSk7CisgICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNwZWNpYWxSZWdpc3RlckJpdCA9IChzcGVjUmVnID09IEFSTVJl
Z2lzdGVyczo6YXBzcikgPyAwIDogKDEgPDwgNCk7CisgICAgICAgIE9wY29kZUlEMSBtcnNPcCA9
IHN0YXRpY19jYXN0PE9wY29kZUlEMT4oT1BfTVJTX1QxIHwgc3BlY2lhbFJlZ2lzdGVyQml0KTsK
KyAgICAgICAgbV9mb3JtYXR0ZXIudHdvV29yZE9wMTZGb3VyRm91cnMobXJzT3AsIEZvdXJGb3Vy
cygweDgsIHJkLCAwLCAwKSk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIG5lZyhS
ZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJtKQogICAgIHsKICAgICAgICAgQVJNVGh1bWJJbW1l
ZGlhdGUgemVybyA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDEyKDApOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Mywx
MyArNDMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAKLSNp
ZiBFTkFCTEUoTUFTTV9QUk9CRSkKLW5hbWVzcGFjZSBQcm9iZSB7Ci1zdHJ1Y3QgU3RhdGU7Ci10
eXBlZGVmIHZvaWQgKCpGdW5jdGlvbikoc3RydWN0IFN0YXRlKik7Ci19IC8vIG5hbWVzcGFjZSBQ
cm9iZQotI2VuZGlmCi0gICAgCiBjbGFzcyBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7
CiBjbGFzcyBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7CiBjbGFzcyBMaW5rQnVm
ZmVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQogCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0
LmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
MzUsMTUgKzM2LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogY29uc3QgZG91YmxlIE1hY3JvQXNzZW1i
bGVyOjp0d29Ub1RoZTMyID0gKGRvdWJsZSkweDEwMDAwMDAwMHVsbDsKIAogI2lmIEVOQUJMRShN
QVNNX1BST0JFKQotc3RhdGljIHZvaWQgc3RkRnVuY3Rpb25DYWxsYmFjayhQcm9iZTo6U3RhdGUq
IHN0YXRlKQorc3RhdGljIHZvaWQgc3RkRnVuY3Rpb25DYWxsYmFjayhQcm9iZTo6Q29udGV4dCYg
Y29udGV4dCkKIHsKLSAgICBhdXRvIGZ1bmMgPSBzdGF0aWNfY2FzdDxjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoUHJvYmU6OlN0YXRlKik+Kj4oc3RhdGUtPmFyZyk7Ci0gICAgKCpmdW5jKShzdGF0
ZSk7CisgICAgYXV0byBmdW5jID0gc3RhdGljX2Nhc3Q8Y29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
KFByb2JlOjpDb250ZXh0Jik+Kj4oY29udGV4dC5hcmcpOworICAgICgqZnVuYykoY29udGV4dCk7
CiB9CiAgICAgCi12b2lkIE1hY3JvQXNzZW1ibGVyOjpwcm9iZShzdGQ6OmZ1bmN0aW9uPHZvaWQo
UHJvYmU6OlN0YXRlKik+IGZ1bmMpCit2b2lkIE1hY3JvQXNzZW1ibGVyOjpwcm9iZShzdGQ6OmZ1
bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykKIHsKLSAgICBwcm9iZShzdGRGdW5j
dGlvbkNhbGxiYWNrLCBuZXcgc3RkOjpmdW5jdGlvbjx2b2lkKFByb2JlOjpTdGF0ZSopPihmdW5j
KSk7CisgICAgcHJvYmUoc3RkRnVuY3Rpb25DYWxsYmFjaywgbmV3IHN0ZDo6ZnVuY3Rpb248dm9p
ZChQcm9iZTo6Q29udGV4dCYpPihmdW5jKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJP
QkUpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDIx
IEBAIG5hbWVzcGFjZSBKU0MgeyB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyWDgKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKK25hbWVzcGFjZSBQcm9iZSB7CisKK2Ns
YXNzIENvbnRleHQ7Cit0eXBlZGVmIHZvaWQgKCpGdW5jdGlvbikoQ29udGV4dCYpOworCit9IC8v
IG5hbWVzcGFjZSBQcm9iZQorI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQorCiBuYW1lc3Bh
Y2UgUHJpbnRlciB7CiAKIHN0cnVjdCBQcmludFJlY29yZDsKIHR5cGVkZWYgVmVjdG9yPFByaW50
UmVjb3JkPiBQcmludFJlY29yZExpc3Q7CiAKLX0KK30gLy8gbmFtZXNwYWNlIFByaW50ZXIKIAog
Y2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKIHB1Ymxp
YzoKQEAgLTE4MjUsOCArMTgzNCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBFTkFCTEUoTUFT
TV9QUk9CRSkKLSAgICBzdHJ1Y3QgQ1BVU3RhdGU7Ci0KICAgICAvLyBUaGlzIGZ1bmN0aW9uIGVt
aXRzIGNvZGUgdG8gcHJlc2VydmUgdGhlIENQVVN0YXRlIChlLmcuIHJlZ2lzdGVycyksCiAgICAg
Ly8gY2FsbCBhIHVzZXIgc3VwcGxpZWQgcHJvYmUgZnVuY3Rpb24sIGFuZCByZXN0b3JlIHRoZSBD
UFVTdGF0ZSBiZWZvcmUKICAgICAvLyBjb250aW51aW5nIHdpdGggb3RoZXIgSklUIGdlbmVyYXRl
ZCBjb2RlLgpAQCAtMTg3OCw3ICsxODg1LDcgQEAgcHVibGljOgogICAgIC8vIE1hY3JvQXNzZW1i
bGVyLgogICAgIHZvaWQgcHJvYmUoUHJvYmU6OkZ1bmN0aW9uLCB2b2lkKiBhcmcpOwogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9iZShzdGQ6OmZ1bmN0aW9uPHZvaWQoUHJvYmU6OlN0
YXRlKik+KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByb2JlKHN0ZDo6ZnVuY3Rpb248
dm9pZChQcm9iZTo6Q29udGV4dCYpPik7CiAKICAgICAvLyBMZXQncyB5b3UgcHJpbnQgZnJvbSB5
b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAvLyBTZWUgY29tbWVudHMgaW4gTWFjcm9Bc3Nl
bWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgdGhpcy4KQEAgLTE4ODks
MTczICsxODk2LDYgQEAgcHVibGljOgogI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQogfTsK
IAotI2lmIEVOQUJMRShNQVNNX1BST0JFKQotc3RydWN0IE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0
ZSB7Ci0gICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBncHJOYW1lKFJlZ2lzdGVySUQgaWQp
IHsgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpncHJOYW1lKGlkKTsgfQotICAgIHN0YXRpYyBpbmxp
bmUgY29uc3QgY2hhciogc3ByTmFtZShTUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyOjpzcHJOYW1lKGlkKTsgfQotICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogZnBy
TmFtZShGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpmcHJOYW1lKGlk
KTsgfQotICAgIGlubGluZSB1aW50cHRyX3QmIGdwcihSZWdpc3RlcklEKTsKLSAgICBpbmxpbmUg
dWludHB0cl90JiBzcHIoU1BSZWdpc3RlcklEKTsKLSAgICBpbmxpbmUgZG91YmxlJiBmcHIoRlBS
ZWdpc3RlcklEKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgotICAg
IFQgZ3ByKFJlZ2lzdGVySUQpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51
bGxwdHI+Ci0gICAgVCBncHIoUmVnaXN0ZXJJRCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gVCBmcHIoRlBSZWdpc3RlcklEKSBjb25zdDsKLQotICAgIHZvaWQqJiBwYygpOwotICAg
IHZvaWQqJiBmcCgpOwotICAgIHZvaWQqJiBzcCgpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgcGMoKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBzcCgpIGNvbnN0OwotCi0gICAgdWludHB0cl90IGdw
cnNbTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCldOwotICAgIHVpbnRwdHJfdCBz
cHJzW01hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlNQUmVnaXN0ZXJzKCldOwotICAgIGRvdWJsZSBm
cHJzW01hY3JvQXNzZW1ibGVyOjpudW1iZXJPZkZQUmVnaXN0ZXJzKCldOwotfTsKLQotaW5saW5l
IHVpbnRwdHJfdCYgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBpZCkK
LXsKLSAgICBBU1NFUlQoaWQgPj0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSAmJiBp
ZCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCkpOwotICAgIHJldHVybiBncHJzW2lk
XTsKLX0KLQotaW5saW5lIHVpbnRwdHJfdCYgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpzcHIo
U1BSZWdpc3RlcklEIGlkKQotewotICAgIEFTU0VSVChpZCA+PSBNYWNyb0Fzc2VtYmxlcjo6Zmly
c3RTUFJlZ2lzdGVyKCkgJiYgaWQgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RTUFJlZ2lzdGVyKCkp
OwotICAgIHJldHVybiBzcHJzW2lkXTsKLX0KLQotaW5saW5lIGRvdWJsZSYgTWFjcm9Bc3NlbWJs
ZXI6OkNQVVN0YXRlOjpmcHIoRlBSZWdpc3RlcklEIGlkKQotewotICAgIEFTU0VSVChpZCA+PSBN
YWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCkgJiYgaWQgPD0gTWFjcm9Bc3NlbWJsZXI6
Omxhc3RGUFJlZ2lzdGVyKCkpOwotICAgIHJldHVybiBmcHJzW2lkXTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6
dmFsdWU+Ojp0eXBlKj4KLVQgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpncHIoUmVnaXN0ZXJJ
RCBpZCkgY29uc3QKLXsKLSAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+
KHRoaXMpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihjcHUtPmdwcihpZCkpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50
ZXI8VD46OnZhbHVlPjo6dHlwZSo+Ci1UIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6Z3ByKFJl
Z2lzdGVySUQgaWQpIGNvbnN0Ci17Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BV
U3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPmdwcihp
ZCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotVCBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3Rh
dGU6OmZwcihGUFJlZ2lzdGVySUQgaWQpIGNvbnN0Ci17Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNv
bnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KGNw
dS0+ZnByKGlkKSk7Ci19Ci0KLWlubGluZSB2b2lkKiYgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRl
OjpwYygpCi17Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gKnJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmc3ByKFg4NlJlZ2lzdGVyczo6ZWlwKSk7Ci0jZWxpZiBDUFUo
QVJNNjQpCi0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnNwcihBUk02NFJl
Z2lzdGVyczo6cGMpKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElP
TkFMKQotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNUmVnaXN0
ZXJzOjpwYykpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSNlbHNlCi0jZXJyb3IgIlVuc3VwcG9ydGVkIENQVSIKLSNlbmRpZgotfQotCi1pbmxp
bmUgdm9pZComIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6ZnAoKQotewotI2lmIENQVShYODYp
IHx8IENQVShYODZfNjQpCi0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdw
cihYODZSZWdpc3RlcnM6OmVicCkpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNNjRSZWdpc3RlcnM6OmZwKSk7Ci0jZWxpZiBD
UFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICByZXR1cm4gKnJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKEFSTVJlZ2lzdGVyczo6ZnApKTsKLSNlbGlmIENQVShN
SVBTKQotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoTUlQU1JlZ2lz
dGVyczo6ZnApKTsKLSNlbHNlCi0jZXJyb3IgIlVuc3VwcG9ydGVkIENQVSIKLSNlbmRpZgotfQot
Ci1pbmxpbmUgdm9pZComIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6c3AoKQotewotI2lmIENQ
VShYODYpIHx8IENQVShYODZfNjQpCi0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4oJmdwcihYODZSZWdpc3RlcnM6OmVzcCkpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNNjRSZWdpc3RlcnM6OnNwKSk7Ci0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKEFSTVJlZ2lzdGVyczo6c3ApKTsKLSNlbGlm
IENQVShNSVBTKQotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoTUlQ
U1JlZ2lzdGVyczo6c3ApKTsKLSNlbHNlCi0jZXJyb3IgIlVuc3VwcG9ydGVkIENQVSIKLSNlbmRp
ZgotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotVCBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6
OnBjKCkgY29uc3QKLXsKLSAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+
KHRoaXMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+cGMoKSk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6ZnAoKSBj
b25zdAotewotICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5mcCgpKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLVQgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpzcCgpIGNvbnN0Ci17
Ci0gICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPnNwKCkpOwotfQotCi1uYW1lc3BhY2UgUHJv
YmUgewotCi1zdHJ1Y3QgU3RhdGUgewotICAgIHVzaW5nIENQVVN0YXRlID0gTWFjcm9Bc3NlbWJs
ZXI6OkNQVVN0YXRlOwotICAgIHVzaW5nIFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6UmVn
aXN0ZXJJRDsKLSAgICB1c2luZyBTUFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6U1BSZWdp
c3RlcklEOwotICAgIHVzaW5nIEZQUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lz
dGVySUQ7Ci0KLSAgICBGdW5jdGlvbiBwcm9iZUZ1bmN0aW9uOwotICAgIHZvaWQqIGFyZzsKLSAg
ICBGdW5jdGlvbiBpbml0aWFsaXplU3RhY2tGdW5jdGlvbjsKLSAgICB2b2lkKiBpbml0aWFsaXpl
U3RhY2tBcmc7Ci0gICAgQ1BVU3RhdGUgY3B1OwotCi0gICAgLy8gQ29udmVuaWVuY2UgbWV0aG9k
czoKLSAgICB1aW50cHRyX3QmIGdwcihSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuZ3ByKGlk
KTsgfQotICAgIHVpbnRwdHJfdCYgc3ByKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LnNw
cihpZCk7IH0KLSAgICBkb3VibGUmIGZwcihGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5m
cHIoaWQpOyB9Ci0gICAgY29uc3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7IHJldHVy
biBjcHUuZ3ByTmFtZShpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVnaXN0ZXJJ
RCBpZCkgeyByZXR1cm4gY3B1LnNwck5hbWUoaWQpOyB9Ci0gICAgY29uc3QgY2hhciogZnByTmFt
ZShGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5mcHJOYW1lKGlkKTsgfQotCi0gICAgdm9p
ZComIHBjKCkgeyByZXR1cm4gY3B1LnBjKCk7IH0KLSAgICB2b2lkKiYgZnAoKSB7IHJldHVybiBj
cHUuZnAoKTsgfQotICAgIHZvaWQqJiBzcCgpIHsgcmV0dXJuIGNwdS5zcCgpOyB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHBjKCkgeyByZXR1cm4gY3B1LnBjPFQ+KCk7IH0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgeyByZXR1cm4gY3B1LmZwPFQ+KCk7IH0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgeyByZXR1cm4gY3B1LnNwPFQ+KCk7IH0KLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFByb2JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKLQog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuY3Bw
CShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFSTTY0KQogI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyLmgiCiAKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5l
QVNNLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTI2LDggKzEyNyw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBBUk02NFJlZ2lzdGVyczsKICNkZWZpbmUgUFJPQkVfU0laRSAoUFJPQkVfRklSU1RfRlBS
RUdfT0ZGU0VUICsgKDMyICogRlBSRUdfU0laRSkpCiAKICNkZWZpbmUgU0FWRURfUFJPQkVfUkVU
VVJOX1BDX09GRlNFVCAgICAgICAgKFBST0JFX1NJWkUgKyAoMCAqIFBUUl9TSVpFKSkKLSNkZWZp
bmUgU0FWRURfUFJPQkVfTFJfT0ZGU0VUICAgICAgICAgICAgICAgKFBST0JFX1NJWkUgKyAoMSAq
IFBUUl9TSVpFKSkKLSNkZWZpbmUgU0FWRURfUFJPQkVfRVJST1JfRlVOQ1RJT05fT0ZGU0VUICAg
KFBST0JFX1NJWkUgKyAoMiAqIFBUUl9TSVpFKSkKICNkZWZpbmUgUFJPQkVfU0laRV9QTFVTX0VY
VFJBUyAgICAgICAgICAgICAgKFBST0JFX1NJWkUgKyAoMyAqIFBUUl9TSVpFKSkKIAogLy8gVGhl
c2UgQVNTRVJUcyByZW1pbmQgeW91IHRoYXQgaWYgeW91IGNoYW5nZSB0aGUgbGF5b3V0IG9mIFBy
b2JlOjpTdGF0ZSwKQEAgLTIyNSwzMSArMjI0LDI5IEBAIHN0YXRpY19hc3NlcnQoIShQUk9CRV9T
SVpFX1BMVVNfRVhUUkFTICYKICNkZWZpbmUgRlBSX09GRlNFVChmcHIpIChQUk9CRV9DUFVfIyNm
cHIjI19PRkZTRVQgLSBQUk9CRV9DUFVfUTBfT0ZGU0VUKQogCiBzdHJ1Y3QgSW5jb21pbmdQcm9i
ZVJlY29yZCB7Ci0gICAgdWludHB0cl90IHByb2JlSGFuZGxlckZ1bmN0aW9uOwotICAgIHVpbnRw
dHJfdCBwcm9iZUFyZzsKKyAgICB1aW50cHRyX3QgeDI0OworICAgIHVpbnRwdHJfdCB4MjU7CiAg
ICAgdWludHB0cl90IHgyNjsKICAgICB1aW50cHRyX3QgeDI3OwotICAgIHVpbnRwdHJfdCBscjsK
LSAgICB1aW50cHRyX3Qgc3A7Ci0gICAgdWludHB0cl90IHByb2JlRXJyb3JGdW5jdGlvbjsKLSAg
ICB1aW50cHRyX3QgdW51c2VkOyAvLyBQYWRkaW5nIGZvciBhbGlnbm1lbnQuCisgICAgdWludHB0
cl90IHgyODsKKyAgICB1aW50cHRyX3QgeDMwOyAvLyBscgogfTsKIAotI2RlZmluZSBJTl9IQU5E
TEVSX0ZVTkNUSU9OX09GRlNFVCAoMCAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9BUkdfT0ZGU0VU
ICAgICAgICAgICAgICAoMSAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9YMjZfT0ZGU0VUICAgICAg
ICAgICAgICAoMiAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9YMjdfT0ZGU0VUICAgICAgICAgICAg
ICAoMyAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9MUl9PRkZTRVQgICAgICAgICAgICAgICAoNCAq
IFBUUl9TSVpFKQotI2RlZmluZSBJTl9TUF9PRkZTRVQgICAgICAgICAgICAgICAoNSAqIFBUUl9T
SVpFKQotI2RlZmluZSBJTl9FUlJPUl9GVU5DVElPTl9PRkZTRVQgICAoNiAqIFBUUl9TSVpFKQor
I2RlZmluZSBJTl9YMjRfT0ZGU0VUICgwICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1gyNV9PRkZT
RVQgKDEgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fWDI2X09GRlNFVCAoMiAqIFBUUl9TSVpFKQor
I2RlZmluZSBJTl9YMjdfT0ZGU0VUICgzICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1gyOF9PRkZT
RVQgKDQgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fWDMwX09GRlNFVCAoNSAqIFBUUl9TSVpFKQor
I2RlZmluZSBJTl9TSVpFICAgICAgICg2ICogUFRSX1NJWkUpCiAKLXN0YXRpY19hc3NlcnQoSU5f
SEFORExFUl9GVU5DVElPTl9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwg
cHJvYmVIYW5kbGVyRnVuY3Rpb24pLCAiSU5fSEFORExFUl9GVU5DVElPTl9PRkZTRVQgaXMgaW5j
b3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElOX0FSR19PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21p
bmdQcm9iZVJlY29yZCwgcHJvYmVBcmcpLCAiSU5fQVJHX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsK
K3N0YXRpY19hc3NlcnQoSU5fWDI0X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVj
b3JkLCB4MjQpLCAiSU5fWDI0X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQo
SU5fWDI1X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjUpLCAiSU5f
WDI1X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKIHN0YXRpY19hc3NlcnQoSU5fWDI2X09GRlNFVCA9
PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjYpLCAiSU5fWDI2X09GRlNFVCBpcyBp
bmNvcnJlY3QiKTsKIHN0YXRpY19hc3NlcnQoSU5fWDI3X09GRlNFVCA9PSBvZmZzZXRvZihJbmNv
bWluZ1Byb2JlUmVjb3JkLCB4MjcpLCAiSU5fWDI3X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0
YXRpY19hc3NlcnQoSU5fTFJfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQs
IGxyKSwgIklOX0xSX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRpY19hc3NlcnQoSU5fU1Bf
T0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIHNwKSwgIklOX1NQX09GRlNF
VCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRpY19hc3NlcnQoSU5fRVJST1JfRlVOQ1RJT05fT0ZGU0VU
ID09IG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIHByb2JlRXJyb3JGdW5jdGlvbiksICJJ
Tl9FUlJPUl9GVU5DVElPTl9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElO
X1gyOF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDI4KSwgIklOX1gy
Ml9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1gzMF9PRkZTRVQgPT0g
b2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDMwKSwgIklOX1gyM19PRkZTRVQgaXMgaW5j
b3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1NJWkUgPT0gc2l6ZW9mKEluY29taW5nUHJvYmVS
ZWNvcmQpLCAiSU5fU0laRSBpcyBpbmNvcnJlY3QiKTsKIHN0YXRpY19hc3NlcnQoIShzaXplb2Yo
SW5jb21pbmdQcm9iZVJlY29yZCkgJiAweGYpLCAiSW5jb21pbmdQcm9iZVN0YWNrIG11c3QgYmUg
MTYtYnl0ZSBhbGlnbmVkIik7CiAKIHN0cnVjdCBPdXRnb2luZ1Byb2JlUmVjb3JkIHsKQEAgLTI3
OCw5ICsyNzUsMTcgQEAgc3RhdGljX2Fzc2VydChPVVRfTFJfT0ZGU0VUID09IG9mZnNldG9mKAog
c3RhdGljX2Fzc2VydChPVVRfU0laRSA9PSBzaXplb2YoT3V0Z29pbmdQcm9iZVJlY29yZCksICJP
VVRfU0laRSBpcyBpbmNvcnJlY3QiKTsKIHN0YXRpY19hc3NlcnQoIShzaXplb2YoT3V0Z29pbmdQ
cm9iZVJlY29yZCkgJiAweGYpLCAiT3V0Z29pbmdQcm9iZVN0YWNrIG11c3QgYmUgMTYtYnl0ZSBh
bGlnbmVkIik7CiAKLSNkZWZpbmUgU1RBVEVfUENfTk9UX0NIQU5HRUQgMAotI2RlZmluZSBTVEFU
RV9QQ19DSEFOR0VEIDEKLXN0YXRpY19hc3NlcnQoU1RBVEVfUENfTk9UX0NIQU5HRUQgIT0gU1RB
VEVfUENfQ0hBTkdFRCwgIlNUQVRFX1BDX05PVF9DSEFOR0VEIGFuZCBTVEFURV9QQ19DSEFOR0VE
IHNob3VsZCBub3QgYmUgZXF1YWwiKTsKK3N0cnVjdCBMUlJlc3RvcmF0aW9uUmVjb3JkIHsKKyAg
ICB1aW50cHRyX3QgbHI7CisgICAgdWludHB0cl90IHVudXNlZER1bW15VG9FbnN1cmVTaXplSXMx
NkJ5dGVBbGlnbmVkOworfTsKKworI2RlZmluZSBMUl9SRVNUT1JBVElPTl9MUl9PRkZTRVQgKDAg
KiBQVFJfU0laRSkKKyNkZWZpbmUgTFJfUkVTVE9SQVRJT05fU0laRSAgICAgICgyICogUFRSX1NJ
WkUpCisKK3N0YXRpY19hc3NlcnQoTFJfUkVTVE9SQVRJT05fTFJfT0ZGU0VUID09IG9mZnNldG9m
KExSUmVzdG9yYXRpb25SZWNvcmQsIGxyKSwgIkxSX1JFU1RPUkFUSU9OX0xSX09GRlNFVCBpcyBp
bmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoTFJfUkVTVE9SQVRJT05fU0laRSA9PSBzaXplb2Yo
TFJSZXN0b3JhdGlvblJlY29yZCksICJMUl9SRVNUT1JBVElPTl9TSVpFIGlzIGluY29ycmVjdCIp
Oworc3RhdGljX2Fzc2VydCghKHNpemVvZihMUlJlc3RvcmF0aW9uUmVjb3JkKSAmIDB4ZiksICJM
UlJlc3RvcmF0aW9uUmVjb3JkIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkIik7CiAKIC8vIFdlIHVz
ZSB4MjkgYW5kIHgzMCBpbnN0ZWFkIG9mIGZwIGFuZCBsciBiZWNhdXNlIEdDQydzIGlubGluZSBh
c3NlbWJsZXIgZG9lcyBub3QgcmVjb2duaXplIGZwIGFuZCBsci4KIC8vIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTEyIGZvciBkZXRhaWxzLgpAQCAtMjkz
LDYgKzI5OCwxNCBAQCBhc20gKAogCiAgICAgLy8gTWFjcm9Bc3NlbWJsZXJBUk02NDo6cHJvYmUo
KSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0byBzdG9yZSBzb21lIHZhbHVlcyBpbiBhbgog
ICAgIC8vIEluY29taW5nUHJvYmVSZWNvcmQuIHNwIHBvaW50cyB0byB0aGUgSW5jb21pbmdQcm9i
ZVJlY29yZC4KKyAgICAvLworICAgIC8vIEluY29taW5nIHJlZ2lzdGVyIHZhbHVlczoKKyAgICAv
LyAgICAgeDI0OiBwcm9iZSBmdW5jdGlvbgorICAgIC8vICAgICB4MjU6IHByb2JlIGFyZworICAg
IC8vICAgICB4MjY6IHNjcmF0Y2gsIHdhcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lCisgICAgLy8g
ICAgIHgyNzogc2NyYXRjaAorICAgIC8vICAgICB4Mjg6IFByb2JlOjpleGVjdXRlUHJvYmUKKyAg
ICAvLyAgICAgeDMwOiByZXR1cm4gYWRkcmVzcwogCiAgICAgIm1vdiAgICAgICB4MjYsIHNwIiAi
XG4iCiAgICAgIm1vdiAgICAgICB4MjcsIHNwIiAiXG4iCkBAIC0zMDEsNiArMzE0LDggQEAgYXNt
ICgKICAgICAiYmljICAgICAgIHgyNywgeDI3LCAjMHhmIiAiXG4iIC8vIFRoZSBBUk0gRUFCSSBz
cGVjaWZpZXMgdGhhdCB0aGUgc3RhY2sgbmVlZHMgdG8gYmUgMTYgYnl0ZSBhbGlnbmVkLgogICAg
ICJtb3YgICAgICAgc3AsIHgyNyIgIlxuIiAvLyBTZXQgdGhlIHNwIHRvIHByb3RlY3QgdGhlIFBy
b2JlOjpTdGF0ZSBmcm9tIGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRpYWxpemUgaXQuCiAKKyAg
ICAic3RwICAgICAgIHgyNCwgeDI1LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9Q
Uk9CRV9GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iIC8vIFN0b3JlIHRoZSBwcm9iZSBoYW5kbGVy
IGZ1bmN0aW9uIGFuZCBhcmcgKHByZWxvYWRlZCBpbnRvIHgyNCBhbmQgeDI1CisKICAgICAic3Rw
ICAgICAgIHgwLCB4MSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gwX09G
RlNFVCkgIl0iICJcbiIKICAgICAibXJzICAgICAgIHgwLCBuemN2IiAiXG4iIC8vIFByZWxvYWQg
bnpjdi4KICAgICAic3RwICAgICAgIHgyLCB4MywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1gyX09GRlNFVCkgIl0iICJcbiIKQEAgLTMwOSwxMCArMzI0LDEwIEBAIGFzbSAo
CiAgICAgInN0cCAgICAgICB4NiwgeDcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X0NQVV9YNl9PRkZTRVQpICJdIiAiXG4iCiAgICAgInN0cCAgICAgICB4OCwgeDksIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YOF9PRkZTRVQpICJdIiAiXG4iCiAKLSAgICAi
bGRwICAgICAgIHgyLCB4MywgW3gyNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX0hBTkRMRVJf
RlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVsb2FkIHByb2JlIGhhbmRsZXIgZnVuY3Rp
b24gYW5kIHByb2JlIGFyZy4KLSAgICAibGRwICAgICAgIHg0LCB4NSwgW3gyNiwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKElOX1gyNl9PRkZTRVQpICJdIiAiXG4iIC8vIFByZWxvYWQgc2F2ZWQgcjI2
IGFuZCByMjcuCi0gICAgImxkcCAgICAgICB4NiwgeDcsIFt4MjYsICMiIFNUUklOR0laRV9WQUxV
RV9PRihJTl9MUl9PRkZTRVQpICJdIiAiXG4iIC8vIFByZWxvYWQgc2F2ZWQgbHIgYW5kIHNwLgot
ICAgICJsZHIgICAgICAgeDgsIFt4MjYsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9FUlJPUl9G
VU5DVElPTl9PRkZTRVQpICJdIiAiXG4iIC8vIFByZWxvYWQgcHJvYmUgZXJyb3IgZnVuY3Rpb24u
CisgICAgImxkcCAgICAgICB4MiwgeDMsIFt4MjYsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9Y
MjRfT0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVsb2FkIHNhdmVkIHgyNCBhbmQgeDI1LgorICAgICJs
ZHAgICAgICAgeDQsIHg1LCBbeDI2LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fWDI2X09GRlNF
VCkgIl0iICJcbiIgLy8gUHJlbG9hZCBzYXZlZCB4MjYgYW5kIHgyNy4KKyAgICAibGRwICAgICAg
IHg2LCB4NywgW3gyNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1gyOF9PRkZTRVQpICJdIiAi
XG4iIC8vIFByZWxvYWQgc2F2ZWQgeDI4IGFuZCBsci4KKyAgICAiYWRkICAgICAgIHgyNiwgeDI2
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fU0laRSkgIlxuIiAvLyBDb21wdXRlIHRoZSBzcCBi
ZWZvcmUgdGhlIHByb2JlLgogCiAgICAgInN0cCAgICAgICB4MTAsIHgxMSwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gxMF9PRkZTRVQpICJdIiAiXG4iCiAgICAgInN0cCAg
ICAgICB4MTIsIHgxMywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gxMl9P
RkZTRVQpICJdIiAiXG4iCkBAIC0zMjEsMTIgKzMzNiwxMSBAQCBhc20gKAogICAgICJzdHAgICAg
ICAgeDE4LCB4MTksIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YMThfT0ZG
U0VUKSAiXSIgIlxuIgogICAgICJzdHAgICAgICAgeDIwLCB4MjEsIFtzcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0NQVV9YMjBfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJzdHAgICAgICAg
eDIyLCB4MjMsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YMjJfT0ZGU0VU
KSAiXSIgIlxuIgotICAgICJzdHAgICAgICAgeDI0LCB4MjUsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9YMjRfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHAgICAgICAgeDIs
IHgzLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDI0X09GRlNFVCkgIl0i
ICJcbiIgLy8gU3RvcmUgc2F2ZWQgcjI0IGFuZCByMjUgKHByZWxvYWRlZCBpbnRvIHgyIGFuZCB4
MyBhYm92ZSkuCiAgICAgInN0cCAgICAgICB4NCwgeDUsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9YMjZfT0ZGU0VUKSAiXSIgIlxuIiAvLyBTdG9yZSBzYXZlZCByMjYgYW5k
IHIyNyAocHJlbG9hZGVkIGludG8geDQgYW5kIHg1IGFib3ZlKS4KLSAgICAic3RwICAgICAgIHgy
OCwgeDI5LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDI4X09GRlNFVCkg
Il0iICJcbiIKLSAgICAic3RwICAgICAgIHg2LCB4NywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0iICJcbiIgLy8gU2F2ZSB2YWx1ZXMgbHIgYW5kIHNw
IChwcmVsb2FkZWQgaW50byB4NiBhbmQgeDcgYWJvdmUpLgorICAgICJzdHAgICAgICAgeDYsIHgy
OSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyOF9PRkZTRVQpICJdIiAi
XG4iCisgICAgInN0cCAgICAgICB4NywgeDI2LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQ
Uk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxuIiAvLyBTYXZlIHZhbHVlcyBsciBhbmQgc3AgKG9y
aWdpbmFsIHNwIHZhbHVlIGNvbXB1dGVkIGludG8geDI2IGFib3ZlKS4KIAotICAgICJzdHIgICAg
ICAgeDYsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX0xSX09GRlNFVCkg
Il0iICJcbiIgLy8gU2F2ZSBhIGR1cGxpY2F0ZSBjb3B5IG9mIGxyIChpbiB4NikuCiAgICAgInN0
ciAgICAgICB4MzAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX1JFVFVS
Tl9QQ19PRkZTRVQpICJdIiAiXG4iIC8vIFNhdmUgYSBkdXBsaWNhdGUgY29weSBvZiByZXR1cm4g
cGMgKGluIGxyKS4KIAogICAgICJhZGQgICAgICAgeDMwLCB4MzAsICMiIFNUUklOR0laRV9WQUxV
RV9PRigyICogUFRSX1NJWkUpICJcbiIgLy8gVGhlIFBDIGFmdGVyIHRoZSBwcm9iZSBpcyBhdCAy
IGluc3RydWN0aW9ucyBwYXN0IHRoZSByZXR1cm4gcG9pbnQuCkBAIC0zMzQsOSArMzQ4LDYgQEAg
YXNtICgKIAogICAgICJzdHAgICAgICAgeDAsIHgxLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9DUFVfTlpDVl9PRkZTRVQpICJdIiAiXG4iIC8vIFN0b3JlIG56Y3YgYW5kIGZwc3Ig
KHByZWxvYWRlZCBpbnRvIHgwIGFuZCB4MSBhYm92ZSkuCiAKLSAgICAic3RwICAgICAgIHgyLCB4
MywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VU
KSAiXSIgIlxuIiAvLyBTdG9yZSB0aGUgcHJvYmUgaGFuZGxlciBmdW5jdGlvbiBhbmQgYXJnIChw
cmVsb2FkZWQgaW50byB4MiBhbmQgeDMgYWJvdmUpLgotICAgICJzdHIgICAgICAgeDgsIFtzcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX0VSUk9SX0ZVTkNUSU9OX09GRlNFVCkg
Il0iICJcbiIgLy8gU3RvcmUgdGhlIHByb2JlIGhhbmRsZXIgZnVuY3Rpb24gYW5kIGFyZyAocHJl
bG9hZGVkIGludG8geDggYWJvdmUpLgotCiAgICAgImFkZCAgICAgICB4OSwgc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUTBfT0ZGU0VUKSAiXG4iCiAgICAgInN0cCAgICAgICBk
MCwgZDEsIFt4OSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKEZQUl9PRkZTRVQoUTApKSAiXSIgIlxu
IgogICAgICJzdHAgICAgICAgZDIsIGQzLCBbeDksICMiIFNUUklOR0laRV9WQUxVRV9PRihGUFJf
T0ZGU0VUKFEyKSkgIl0iICJcbiIKQEAgLTM1NywxMyArMzY4LDEwIEBAIGFzbSAoCiAKICAgICAi
bW92ICAgICAgIHgyNywgc3AiICJcbiIgLy8gU2F2ZSB0aGUgUHJvYmU6OlN0YXRlKiBpbiBhIGNh
bGxlZSBzYXZlZCByZWdpc3Rlci4KIAotICAgIC8vIEluaXRpYWxpemUgUHJvYmU6OlN0YXRlOjpp
bml0aWFsaXplU3RhY2tGdW5jdGlvbiB0byB6ZXJvLgotICAgICJzdHIgICAgICAgeHpyLCBbeDI3
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQp
ICJdIiAiXG4iCi0KICAgICAvLyBOb3RlOiB3ZSBoYXZlbid0IGNoYW5nZWQgdGhlIHZhbHVlIG9m
IGZwLiBIZW5jZSwgaXQgaXMgc3RpbGwgcG9pbnRpbmcgdG8gdGhlIGZyYW1lIG9mCiAgICAgLy8g
dGhlIGNhbGxlciBvZiB0aGUgcHJvYmUgKHdoaWNoIGlzIHdoYXQgd2Ugd2FudCBpbiBvcmRlciB0
byBwbGF5IG5pY2Ugd2l0aCBkZWJ1Z2dlcnMgZS5nLiBsbGRiKS4KICAgICAibW92ICAgICAgIHgw
LCBzcCIgIlxuIiAvLyBTZXQgdGhlIFByb2JlOjpTdGF0ZSogYXJnLgotICAgICJibHIgICAgICAg
eDIiICJcbiIgLy8gQ2FsbCB0aGUgcHJvYmUgaGFuZGxlciBmdW5jdGlvbiAobG9hZGVkIGludG8g
eDIgYWJvdmUpLgorICAgICJibHIgICAgICAgeDI4IiAiXG4iIC8vIENhbGwgdGhlIHByb2JlIGhh
bmRsZXIuCiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBi
ZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgc28KICAgICAvLyB0aGF0IHJlZ2lzdGVyIHZh
bHVlcyBhcmUgc3RpbGwgcHJlc2VydmVkIHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNr
CkBAIC00NDYsNjMgKzQ1NCwzNyBAQCBhc20gKAogCiAgICAgLy8gUmVtYWluaW5nIHJlZ2lzdGVy
cyB0byByZXN0b3JlIGFyZTogZnBzciwgbnpjdiwgeDI3LCB4MjgsIGZwLCBsciwgc3AsIGFuZCBw
Yy4KIAotICAgICJtb3YgICAgICAgeDMwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoU1RBVEVfUENf
Tk9UX0NIQU5HRUQpICJcbiIKLQogICAgIC8vIFRoZSBvbmx5IHdheSB0byBzZXQgdGhlIHBjIG9u
IEFSTTY0IChmcm9tIHVzZXIgc3BhY2UpIGlzIHZpYSBhbiBpbmRpcmVjdCBicmFuY2gKICAgICAv
LyBvciBhIHJldCwgd2hpY2ggbWVhbnMgd2UnbGwgbmVlZCBhIGZyZWUgcmVnaXN0ZXIgdG8gZG8g
c28uIEZvciBvdXIgcHVycG9zZXMsIGxyCiAgICAgLy8gaGFwcGVucyB0byBiZSBhdmFpbGFibGUg
aW4gYXBwbGljYXRpb25zIG9mIHRoZSBwcm9iZSB3aGVyZSB3ZSBtYXkgd2FudCB0bwogICAgIC8v
IGNvbnRpbnVlIGV4ZWN1dGluZyBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbiAoaS5lLiBjaGFuZ2Ug
dGhlIHBjKSBhZnRlciB0aGUgcHJvYmUKICAgICAvLyByZXR1cm5zLiBTbywgdGhlIEFSTTY0IHBy
b2JlIGltcGxlbWVudGF0aW9uIHdpbGwgYWxsb3cgdGhlIHByb2JlIGhhbmRsZXIgdG8KICAgICAv
LyBlaXRoZXIgbW9kaWZ5IGxyIG9yIHBjLCBidXQgbm90IGJvdGggaW4gdGhlIHNhbWUgcHJvYmUg
aW52b2NhdGlvbi4gVGhlIHByb2JlCi0gICAgLy8gbWVjaGFuaXNtIGVuc3VyZXMgdGhhdCB3ZSBu
ZXZlciB0cnkgdG8gbW9kaWZ5IGJvdGggbHIgYW5kIHBjLCBlbHNlIGl0IHdpbGwKLSAgICAvLyBm
YWlsIHdpdGggYSBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCBpbiBhcm02NFByb2JlRXJyb3Io
KS4KKyAgICAvLyBtZWNoYW5pc20gZW5zdXJlcyB0aGF0IHdlIG5ldmVyIHRyeSB0byBtb2RpZnkg
Ym90aCBsciBhbmQgcGMgd2l0aCBhIFJFTEVBU0VfQVNTRVJUCisgICAgLy8gaW4gUHJvYmU6OmV4
ZWN1dGVQcm9iZSgpLgogCiAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBwcm9iZSBoYW5kbGVyIGNo
YW5nZWQgdGhlIHBjLgorICAgICJsZHIgICAgICAgeDMwLCBbc3AsICMiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfU1BfT0ZGU0VUKSAiXSIgIlxuIiAvLyBwcmVsb2FkIHRoZSB0YXJnZXQg
c3AuCiAgICAgImxkciAgICAgICB4MjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVE
X1BST0JFX1JFVFVSTl9QQ19PRkZTRVQpICJdIiAiXG4iCiAgICAgImxkciAgICAgICB4MjgsIFtz
cCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9QQ19PRkZTRVQpICJdIiAiXG4iCiAg
ICAgImFkZCAgICAgICB4MjcsIHgyNywgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKDIgKiBQVFJfU0la
RSkgIlxuIgogICAgICJjbXAgICAgICAgeDI3LCB4MjgiICJcbiIKLSAgICAiYmVxICAgICAiIExP
Q0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUHJlcGFyZU91dGdvaW5nUmVj
b3JkcykgIlxuIgotCi0gICAgLy8gcGMgd2FzIGNoYW5nZWQuIERldGVybWluZSBpZiB0aGUgcHJv
YmUgaGFuZGxlciBhbHNvIGNoYW5nZWQgbHIuCi0gICAgImxkciAgICAgICB4MjcsIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX0xSX09GRlNFVCkgIl0iICJcbiIKLSAgICAi
bGRyICAgICAgIHgyOCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0xSX09G
RlNFVCkgIl0iICJcbiIKLSAgICAiY21wICAgICAgIHgyNywgeDI4IiAiXG4iCi0gICAgImJuZSAg
ICAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZUVycm9yKSAiXG4i
Ci0KLSAgICAibW92ICAgICAgIHgzMCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNUQVRFX1BDX0NI
QU5HRUQpICJcbiIKLQotICAgIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lUHJlcGFyZU91dGdvaW5nUmVjb3JkcykgIjoiICJcbiIKKyAgICAiYm5lICAgICAiIExPQ0FM
X0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lRW5kKSAiXG4iCiAKLSAgICAibGRy
ICAgICAgIHgyOSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoU0FWRURfUFJPQkVfUkVUVVJO
X1BDX09GRlNFVCkgIl0iICJcbiIgLy8gUHJlbG9hZCB0aGUgcHJvYmUgcmV0dXJuIHNpdGUgcGMu
Ci0KLSAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZUZpbGxPdXRn
b2luZ1Byb2JlUmVjb3JkcykgIjoiICJcbiIKLQotICAgICJjYm56ICAgICAgIHgzMCwgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZUVuZCkgIlxuIiAvLyBTa2lwIGxy
IHJlc3RvcmF0aW9uIHNldHVwIGlmIHN0YXRlIChpbiBscikgPT0gU1RBVEVfUENfQ0hBTkdFRC4K
LQotICAgIC8vIEluIG9yZGVyIHRvIHJlc3RvcmUgbHIsIHdlIG5lZWQgdG8gZG8gdGhlIHJlc3Rv
cmF0aW9uIGF0IHRoZSBwcm9iZSByZXR1cm4gc2l0ZS4KLSAgICAvLyBUaGUgcHJvYmUgcmV0dXJu
IHNpdGUgZXhwZWN0cyBzcCB0byBiZSBwb2ludGluZyBhdCBhbiBPdXRnb2luZ1Byb2JlUmVjb3Jk
IHN1Y2ggdGhhdAotICAgIC8vIHBvcHBpbmcgdGhlIE91dGdvaW5nUHJvYmVSZWNvcmQgd2lsbCB5
aWVsZCB0aGUgZGVzaXJlZCBzcC4gVGhlIHByb2JlIHJldHVybiBzaXRlCi0gICAgLy8gYWxzbyBl
eHBlY3RzIHRoZSBsciB2YWx1ZSB0byBiZSByZXN0b3JlZCBpcyBzdGFzaGVkIGluIHRoZSBPdXRn
b2luZ1Byb2JlUmVjb3JkLgotICAgIC8vIFdlIGNhbiBtYWtlIHRoaXMgaGFwcGVuIGJ5IHB1c2hp
bmcgMiBPdXRnb2luZ1Byb2JlUmVjb3JkcyBpbnN0ZWFkIG9mIDE6Ci0gICAgLy8gMSBmb3IgdGhl
IHByb2JlIHJldHVybiBzaXRlLCBhbmQgMSBhdCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lRW5kIGZv
ciByZXR1cm5pbmcgZnJvbQotICAgIC8vIHRoaXMgcHJvYmUuCi0KLSAgICAvLyBGaWxsIGluIHRo
ZSBPdXRnb2luZ1Byb2JlU3RhY2sgZm9yIHRoZSBwcm9iZSByZXR1cm4gc2l0ZS4KLSAgICAibGRy
ICAgICAgIHgzMCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNF
VCkgIl0iICJcbiIKLSAgICAic3ViICAgICAgIHgzMCwgeDMwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoT1VUX1NJWkUpICJcbiIKKyAgICAgLy8gV2UgZGlkbid0IGNoYW5nZSB0aGUgUEMuIFNvLCBs
ZXQncyBwcmVwYXJlIGZvciBzZXR0aW5nIGEgcG90ZW50aWFsbHkgbmV3IGxyIHZhbHVlLgogCisg
ICAgIC8vIDEuIE1ha2Ugcm9vbSBmb3IgdGhlIExSUmVzdG9yYXRpb25SZWNvcmQuIFRoZSBwcm9i
ZSBzaXRlIHdpbGwgcG9wIHRoaXMgb2ZmIGxhdGVyLgorICAgICJzdWIgICAgICAgeDMwLCB4MzAs
ICMiIFNUUklOR0laRV9WQUxVRV9PRihMUl9SRVNUT1JBVElPTl9TSVpFKSAiXG4iCisgICAgIC8v
IDIuIFN0b3JlIHRoZSBscCB2YWx1ZSB0byByZXN0b3JlIGF0IHRoZSBwcm9iZSByZXR1cm4gc2l0
ZS4KICAgICAibGRyICAgICAgIHgyNywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX0xSX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIHgyNywgW3gzMCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKE9VVF9MUl9PRkZTRVQpICJdIiAiXG4iCi0KLSAgICAvLyBTZXQgdXAg
dGhlIHNwIGFuZCBwYyB2YWx1ZXMgc28gdGhhdCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lRW5kIHdp
bGwgcmV0dXJuIHRvIHRoZSBwcm9iZSByZXR1cm4gc2l0ZS4KLSAgICAic3RyICAgICAgIHgzMCwg
W3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIK
LSAgICAic3RyICAgICAgIHgyOSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X1BDX09GRlNFVCkgIl0iICJcbiIgLy8gU3RvcmUgdGhlIHByb2JlIHJldHVybiBzaXRlIHBjIChw
cmVsb2FkZWQgaW50byBmcCBhYm92ZSkuCisgICAgInN0ciAgICAgICB4MjcsIFt4MzAsICMiIFNU
UklOR0laRV9WQUxVRV9PRihMUl9SRVNUT1JBVElPTl9MUl9PRkZTRVQpICJdIiAiXG4iCisgICAg
IC8vIDMuIEZvcmNlIHRoZSByZXR1cm4gcmFtcCB0byByZXR1cm4gdG8gdGhlIHByb2JlIHJldHVy
biBzaXRlLgorICAgICJsZHIgICAgICAgeDI3LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihT
QVZFRF9QUk9CRV9SRVRVUk5fUENfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAgICAgeDI3
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxu
IgogCiAgICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVFbmQpICI6
IiAiXG4iCiAKLSAgICAvLyBGaWxsIGluIHRoZSBPdXRnb2luZ1Byb2JlU3RhY2suCi0gICAgImxk
ciAgICAgICB4MzAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZT
RVQpICJdIiAiXG4iCisgICAgLy8gRmlsbCBpbiB0aGUgT3V0Z29pbmdQcm9iZVJlY29yZC4KICAg
ICAic3ViICAgICAgIHgzMCwgeDMwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoT1VUX1NJWkUpICJc
biIKIAogICAgICJsZHAgICAgICAgeDI3LCB4MjgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0NQVV9OWkNWX09GRlNFVCkgIl0iICJcbiIKQEAgLTUxMCw1MiArNDkyLDM2IEBAIGFz
bSAoCiAgICAgImxkcCAgICAgICB4MjcsIHgyOCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1gyN19PRkZTRVQpICJdIiAiXG4iCiAgICAgInN0cCAgICAgICB4MjcsIHgyOCwg
W3gzMCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9YMjdfT0ZGU0VUKSAiXSIgIlxuIgogICAg
ICJsZHIgICAgICAgeDI3LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRlBf
T0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAgeDI4LCBbc3AsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgICAgICAgeDI4
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxu
IiAvLyBTZXQgdXAgdGhlIG91dGdvaW5nIHJlY29yZCBzbyB0aGF0IHdlJ2xsIGp1bXAgdG8gdGhl
IG5ldyBQQy4KICAgICAic3RwICAgICAgIHgyNywgeDI4LCBbeDMwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoT1VUX0ZQX09GRlNFVCkgIl0iICJcbiIKICAgICAibW92ICAgICAgIHNwLCB4MzAiICJc
biIKIAotICAgIC8vIFJlc3RvcmUgdGhlIHJlbWFpbmluZyByZWdpc3RlcnMgYW5kIHBvcCB0aGUg
T3V0Z29pbmdQcm9iZVN0YWNrLgorICAgIC8vIFJlc3RvcmUgdGhlIHJlbWFpbmluZyByZWdpc3Rl
cnMgYW5kIHBvcCB0aGUgT3V0Z29pbmdQcm9iZVJlY29yZC4KICAgICAibGRwICAgICAgIHgyNywg
eDI4LCBbc3BdLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoMiAqIFBUUl9TSVpFKSAiXG4iCiAgICAg
Im1zciAgICAgICBuemN2LCB4MjciICJcbiIKICAgICAibXNyICAgICAgIGZwc3IsIHgyOCIgIlxu
IgogICAgICJsZHAgICAgICAgeDI3LCB4MjgsIFtzcF0sICMiIFNUUklOR0laRV9WQUxVRV9PRigy
ICogUFRSX1NJWkUpICJcbiIKICAgICAibGRwICAgICAgIHgyOSwgeDMwLCBbc3BdLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoMiAqIFBUUl9TSVpFKSAiXG4iCiAgICAgInJldCIgIlxuIgotCi0gICAg
TE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVFcnJvcikgIjoiICJcbiIK
LSAgICAvLyBUaGUgcHJvYmUgaGFuZGxlciBjaGFuZ2VkIGJvdGggbHIgYW5kIHBjLiBUaGlzIGlz
IG5vdCBzdXBwb3J0ZWQgZm9yIEFSTTY0LgotICAgICJsZHIgICAgICAgeDEsIFtzcCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX0VSUk9SX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJc
biIKLSAgICAibW92ICAgICAgIHgwLCBzcCIgIlxuIiAvLyBTZXQgdGhlIFByb2JlOjpTdGF0ZSog
YXJnLgotICAgICJibHIgICAgICAgeDEiICJcbiIKLSAgICAiYnJrICAgICAgICMweDEwMDAiIC8v
IFNob3VsZCBuZXZlciByZXR1cm4gaGVyZS4KICk7CiAjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09S
X0NMQU5HKQogCi1zdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGFybTY0UHJvYmVF
cnJvcihQcm9iZTo6U3RhdGUqKQotewotICAgIGRhdGFMb2coIk1hY3JvQXNzZW1ibGVyIHByb2Jl
IEVSUk9SOiBBUk02NCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBwcm9iZSBjaGFuZ2luZyBib3RoIExS
IGFuZCBQQy5cbiIpOwotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIHZv
aWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCog
YXJnKQogewogICAgIHN1YjY0KFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdQcm9iZVJlY29y
ZCkpLCBzcCk7CiAKKyAgICBzdG9yZVBhaXI2NCh4MjQsIHgyNSwgc3AsIFRydXN0ZWRJbW0zMihv
ZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjQpKSk7CiAgICAgc3RvcmVQYWlyNjQoeDI2
LCB4MjcsIHNwLCBUcnVzdGVkSW1tMzIob2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDI2
KSkpOwotICAgIGFkZDY0KFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdQcm9iZVJlY29yZCkp
LCBzcCwgeDI2KTsKLSAgICBzdG9yZVBhaXI2NChsciwgeDI2LCBzcCwgVHJ1c3RlZEltbTMyKG9m
ZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIGxyKSkpOyAvLyBTYXZlIGxyIGFuZCBvcmlnaW5h
bCBzcCB2YWx1ZS4KLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oZnVuY3Rpb24pKSwgeDI2KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJnKSwgeDI3KTsK
LSAgICBzdG9yZVBhaXI2NCh4MjYsIHgyNywgc3AsIFRydXN0ZWRJbW0zMihvZmZzZXRvZihJbmNv
bWluZ1Byb2JlUmVjb3JkLCBwcm9iZUhhbmRsZXJGdW5jdGlvbikpKTsKLSAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYXJtNjRQcm9iZUVycm9yKSksIHgyNyk7
Ci0gICAgc3RvcmU2NCh4MjcsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNv
cmQsIHByb2JlRXJyb3JGdW5jdGlvbikpKTsKLQorICAgIHN0b3JlUGFpcjY0KHgyOCwgeDMwLCBz
cCwgVHJ1c3RlZEltbTMyKG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIHgyOCkpKTsgLy8g
Tm90ZTogeDMwIGlzIGxyLgogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSksIHgyNik7CisgICAgbW92ZShUcnVzdGVk
SW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KFByb2JlOjpleGVjdXRlUHJvYmUpKSwgeDI4
KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rp
b24pKSwgeDI0KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJnKSwgeDI1KTsKICAgICBtX2Fz
c2VtYmxlci5ibHIoeDI2KTsKIAogICAgIC8vIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUgc2hvdWxk
IGhhdmUgcmVzdG9yZWQgZXZlcnkgcmVnaXN0ZXIgZXhjZXB0IGZvciBsciBhbmQgdGhlIHNwLgot
ICAgIGxvYWQ2NChBZGRyZXNzKHNwLCBvZmZzZXRvZihPdXRnb2luZ1Byb2JlUmVjb3JkLCBscikp
LCBscik7Ci0gICAgYWRkNjQoVHJ1c3RlZEltbTMyKHNpemVvZihPdXRnb2luZ1Byb2JlUmVjb3Jk
KSksIHNwKTsKKyAgICBsb2FkNjQoQWRkcmVzcyhzcCwgb2Zmc2V0b2YoTFJSZXN0b3JhdGlvblJl
Y29yZCwgbHIpKSwgbHIpOworICAgIGFkZDY0KFRydXN0ZWRJbW0zMihzaXplb2YoTFJSZXN0b3Jh
dGlvblJlY29yZCkpLCBzcCk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk0uY3BwCShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIENQVShBUk1fVFJBRElUSU9OQUwpCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKIAorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgog
I2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogI2lmIE9TKExJTlVYKQpAQCAtMTAwLDYgKzEw
MSw4IEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk06OmxvYWQzMldpdGhVbmFsaWcKIAogZXh0ZXJu
ICJDIiB2b2lkIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUoKTsKIAordXNpbmcgbmFtZXNwYWNlIEFS
TVJlZ2lzdGVyczsKKwogI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKIAogLy8gVGhlIGZvbGxv
d2luZyBhcmUgb2Zmc2V0cyBmb3IgUHJvYmU6OlN0YXRlIGZpZWxkcyBhY2Nlc3NlZApAQCAtMjUw
LDYgKzI1MywzMSBAQCBDT01QSUxFX0FTU0VSVChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tBCiBD
T01QSUxFX0FTU0VSVChzaXplb2YoUHJvYmU6OlN0YXRlKSA9PSBQUk9CRV9TSVpFLCBQcm9iZVN0
YXRlX3NpemVfbWF0Y2hlc19jdGlNYXNtUHJvYmVUcmFtcG9saW5lKTsKICN1bmRlZiBQUk9CRV9P
RkZTRVRPRgogCitzdHJ1Y3QgSW5jb21pbmdSZWNvcmQgeworICAgIHVpbnRwdHJfdCBscjsKKyAg
ICB1aW50cHRyX3QgaXA7CisgICAgdWludHB0cl90IHI2OworICAgIHVpbnRwdHJfdCByMDsKKyAg
ICB1aW50cHRyX3QgcjE7CisgICAgdWludHB0cl90IHIyOworfTsKKworI2RlZmluZSBJTl9MUl9P
RkZTRVQgKDAgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fSVBfT0ZGU0VUICgxICogUFRSX1NJWkUp
CisjZGVmaW5lIElOX1I2X09GRlNFVCAoMiAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9SMF9PRkZT
RVQgKDMgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fUjFfT0ZGU0VUICg0ICogUFRSX1NJWkUpCisj
ZGVmaW5lIElOX1IyX09GRlNFVCAoNSAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9TSVpFICAgICAg
KDYgKiBQVFJfU0laRSkKKworc3RhdGljX2Fzc2VydChJTl9MUl9PRkZTRVQgPT0gb2Zmc2V0b2Yo
SW5jb21pbmdSZWNvcmQsIGxyKSwgIklOX0xSX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRp
Y19hc3NlcnQoSU5fSVBfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBpcCksICJJ
Tl9JUF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1I2X09GRlNFVCA9
PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjYpLCAiSU5fUjZfT0ZGU0VUIGlzIGluY29ycmVj
dCIpOworc3RhdGljX2Fzc2VydChJTl9SMF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNv
cmQsIHIwKSwgIklOX1IwX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5f
UjFfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMSksICJJTl9SMV9PRkZTRVQg
aXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1IyX09GRlNFVCA9PSBvZmZzZXRvZihJ
bmNvbWluZ1JlY29yZCwgcjIpLCAiSU5fUjJfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGlj
X2Fzc2VydChJTl9TSVpFID09IHNpemVvZihJbmNvbWluZ1JlY29yZCksICJJTl9TSVpFIGlzIGlu
Y29ycmVjdCIpOworCiBhc20gKAogICAgICIudGV4dCIgIlxuIgogICAgICIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICJcbiIKQEAgLTI1Nyw2NiArMjg1LDcy
IEBAIGFzbSAoCiAgICAgSU5MSU5FX0FSTV9GVU5DVElPTihjdGlNYXNtUHJvYmVUcmFtcG9saW5l
KSAiXG4iCiAgICAgU1lNQk9MX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiOiIgIlxu
IgogCi0gICAgLy8gTWFjcm9Bc3NlbWJsZXJBUk06OnByb2JlKCkgaGFzIGFscmVhZHkgZ2VuZXJh
dGVkIGNvZGUgdG8gc3RvcmUgc29tZSB2YWx1ZXMuCi0gICAgLy8gVGhlIHRvcCBvZiBzdGFjayBu
b3cgbG9va3MgbGlrZSB0aGlzOgotICAgIC8vICAgICBlc3BbMCAqIHB0clNpemVdOiBwcm9iZSBo
YW5kbGVyIGZ1bmN0aW9uCi0gICAgLy8gICAgIGVzcFsxICogcHRyU2l6ZV06IHByb2JlIGFyZwot
ICAgIC8vICAgICBlc3BbMiAqIHB0clNpemVdOiBzYXZlZCByMyAvIFMwCi0gICAgLy8gICAgIGVz
cFszICogcHRyU2l6ZV06IHNhdmVkIGlwCi0gICAgLy8gICAgIGVzcFs0ICogcHRyU2l6ZV06IHNh
dmVkIGxyCi0gICAgLy8gICAgIGVzcFs1ICogcHRyU2l6ZV06IHNhdmVkIHNwCisgICAgLy8gTWFj
cm9Bc3NlbWJsZXJBUk12Nzo6cHJvYmUoKSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0byBz
dG9yZSBzb21lIHZhbHVlcy4KKyAgICAvLyBUaGUgdG9wIG9mIHN0YWNrIG5vdyBjb250YWlucyB0
aGUgSW5jb21pbmdSZWNvcmQuCisgICAgLy8KKyAgICAvLyBJbmNvbWluZyByZWdpc3RlciB2YWx1
ZXM6CisgICAgLy8gICAgIHIwOiBwcm9iZSBmdW5jdGlvbgorICAgIC8vICAgICByMTogcHJvYmUg
YXJnCisgICAgLy8gICAgIHIyOiBQcm9iZTo6ZXhlY3V0ZVByb2JlCisgICAgLy8gICAgIHI2OiBz
Y3JhdGNoCisgICAgLy8gICAgIGlwOiBzY3JhdGNoLCB3YXMgY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZQorICAgIC8vICAgICBscjogcmV0dXJuIGFkZHJlc3MKIAogICAgICJtb3YgICAgICAgaXAsIHNw
IiAiXG4iCi0gICAgIm1vdiAgICAgICByMywgc3AiICJcbiIKLSAgICAic3ViICAgICAgIHIzLCBy
MywgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIgorICAg
ICJtb3YgICAgICAgcjYsIHNwIiAiXG4iCisgICAgInN1YiAgICAgICByNiwgcjYsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9TSVpFICsgT1VUX1NJWkUpICJcbiIKIAogICAgIC8vIFRoZSBB
Uk0gRUFCSSBzcGVjaWZpZXMgdGhhdCB0aGUgc3RhY2sgbmVlZHMgdG8gYmUgMTYgYnl0ZSBhbGln
bmVkLgotICAgICJiaWMgICAgICAgcjMsIHIzLCAjMHhmIiAiXG4iCi0gICAgIm1vdiAgICAgICBz
cCwgcjMiICJcbiIgLy8gU2V0IHRoZSBzcCB0byBwcm90ZWN0IHRoZSBQcm9iZTo6U3RhdGUgZnJv
bSBpbnRlcnJ1cHRzIGJlZm9yZSB3ZSBpbml0aWFsaXplIGl0LgorICAgICJiaWMgICAgICAgcjYs
IHI2LCAjMHhmIiAiXG4iCisgICAgIm1vdiAgICAgICBzcCwgcjYiICJcbiIgLy8gU2V0IHRoZSBz
cCB0byBwcm90ZWN0IHRoZSBQcm9iZTo6U3RhdGUgZnJvbSBpbnRlcnJ1cHRzIGJlZm9yZSB3ZSBp
bml0aWFsaXplIGl0LgogCisgICAgInN0ciAgICAgICByMCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAg
ICAgcjEsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0FSR19PRkZTRVQpICJdIiAi
XG4iCiAgICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX1BDX09GRlNFVCkgIl0iICJcbiIKLSAgICAiYWRkICAgICAgIGxyLCBzcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMF9PRkZTRVQpICJcbiIKLSAgICAic3RtaWEgICAgIGxy
LCB7IHIwLXIxMSB9IiAiXG4iCisKKyAgICAiYWRkICAgICAgIHIwLCBpcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKElOX1NJWkUpICJcbiIKKyAgICAic3RyICAgICAgIHIwLCBbc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfU1BfT0ZGU0VUKSAiXSIgIlxuIgorCisgICAgImFkZCAg
ICAgICBsciwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjNfT0ZGU0VUKSAi
XG4iCisgICAgInN0bWlhICAgICBsciwgeyByMy1yNSB9IiAiXG4iCisgICAgImFkZCAgICAgICBs
ciwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjdfT0ZGU0VUKSAiXG4iCisg
ICAgInN0bWlhICAgICBsciwgeyByNy1yMTEgfSIgIlxuIgogICAgICJtcnMgICAgICAgbHIsIEFQ
U1IiICJcbiIKICAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQ
Uk9CRV9DUFVfQVBTUl9PRkZTRVQpICJdIiAiXG4iCiAgICAgInZtcnMgICAgICBsciwgRlBTQ1Ii
ICJcbiIKICAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfRlBTQ1JfT0ZGU0VUKSAiXSIgIlxuIgogCi0gICAgImxkciAgICAgICBsciwgW2lwLCAj
MCAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIgIlxuIgotICAgICJzdHIgICAg
ICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09G
RlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIGxyLCBbaXAsICMxICogIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFRSX1NJWkUpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAg
ICAgIGxyLCBbaXAsICMyICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICJdIiAiXG4i
Ci0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X1IzX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIGxyLCBbaXAsICMzICogIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0lQX09GRlNFVCkgIl0iICJcbiIKLSAg
ICAibGRyICAgICAgIGxyLCBbaXAsICM0ICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUp
ICJdIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIGxyLCBbaXAsICM1
ICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICJdIiAiXG4iCi0gICAgInN0ciAgICAg
ICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0i
ICJcbiIKLQotICAgICJsZHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9QQ19PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciAgICAgICByNCwgW2lwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoSU5fTFJfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgICAgICAg
cjUsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX0lQX09GRlNFVCkgIl0iICJcbiIKKyAg
ICAibGRyICAgICAgIHI2LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9SNl9PRkZTRVQp
ICJdIiAiXG4iCisgICAgImxkciAgICAgICByNywgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
SU5fUjBfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgICAgICAgcjgsIFtpcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKElOX1IxX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAgICAgIHI5LCBb
aXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9SMl9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0
ciAgICAgICByNCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0xSX09GRlNF
VCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIHI1LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9DUFVfSVBfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAgICAgcjYsIFtzcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SNl9PRkZTRVQpICJdIiAiXG4iCisgICAg
InN0ciAgICAgICByNywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IwX09G
RlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIHI4LCBbc3AsICMiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfUjFfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAgICAgcjksIFtz
cCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMl9PRkZTRVQpICJdIiAiXG4iCiAK
ICAgICAiYWRkICAgICAgIGlwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9E
MF9PRkZTRVQpICJcbiIKICAgICAidnN0bWlhLjY0IGlwISwgeyBkMC1kMTUgfSIgIlxuIgogI2lm
IENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQogICAgICJ2c3RtaWEuNjQgaXAh
LCB7IGQxNi1kMzEgfSIgIlxuIgogI2VuZGlmCi0gICAgIm1vdiAgICAgICBmcCwgc3AiICJcbiIg
Ly8gU2F2ZSB0aGUgUHJvYmU6OlN0YXRlKi4KIAotICAgIC8vIEluaXRpYWxpemUgUHJvYmU6OlN0
YXRlOjppbml0aWFsaXplU3RhY2tGdW5jdGlvbiB0byB6ZXJvLgotICAgICJtb3YgICAgICAgcjAs
ICMwIiAiXG4iCi0gICAgInN0ciAgICAgICByMCwgW2ZwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCisJLy8gcjUgaXMgYSBj
YWxsZWUgc2F2ZWQgcmVnaXN0ZXIuIFdlJ2xsIHVzZSBpdCBmb3IgcHJlc2VydmluZyB0aGUgUHJv
YmU6OlN0YXRlKi4KKwkvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjE0
MTkvYXJtLXRvLWMtY2FsbGluZy1jb252ZW50aW9uLXJlZ2lzdGVycy10by1zYXZlIzI2MTQ5Ngor
ICAgICJtb3YgICAgICAgcjUsIHNwIiAiXG4iCiAKLSAgICAibGRyICAgICAgIGlwLCBbc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4i
CiAgICAgIm1vdiAgICAgICByMCwgc3AiICJcbiIgLy8gdGhlIFByb2JlOjpTdGF0ZSogYXJnLgot
ICAgICJibHggICAgICAgaXAiICJcbiIKKyAgICAiYmx4ICAgICAgIHIyIiAiXG4iIC8vIENhbGwg
UHJvYmU6OmV4ZWN1dGVQcm9iZS4KIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgUHJvYmU6OlN0YXRl
IGlzIGVudGlyZWx5IGJlbG93IHRoZSByZXN1bHQgc3RhY2sgcG9pbnRlciBzbwogICAgIC8vIHRo
YXQgcmVnaXN0ZXIgdmFsdWVzIGFyZSBzdGlsbCBwcmVzZXJ2ZWQgd2hlbiB3ZSBjYWxsIHRoZSBp
bml0aWFsaXplU3RhY2sKICAgICAvLyBmdW5jdGlvbi4KLSAgICAibGRyICAgICAgIHIxLCBbZnAs
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfU1BfT0ZGU0VUKSAiXSIgIlxuIiAvLyBS
ZXN1bHQgc3AuCi0gICAgImFkZCAgICAgICByMiwgZnAsICMiIFNUUklOR0laRV9WQUxVRV9PRihQ
Uk9CRV9TSVpFICsgT1VUX1NJWkUpICJcbiIgLy8gRW5kIG9mIFByb3ZlQ29udGV4dCArIGJ1ZmZl
ci4KKyAgICAibGRyICAgICAgIHIxLCBbcjUsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9D
UFVfU1BfT0ZGU0VUKSAiXSIgIlxuIiAvLyBSZXN1bHQgc3AuCisgICAgImFkZCAgICAgICByMiwg
cjUsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9TSVpFICsgT1VUX1NJWkUpICJcbiIgLy8g
RW5kIG9mIFByb3ZlQ29udGV4dCArIGJ1ZmZlci4KICAgICAiY21wICAgICAgIHIxLCByMiIgIlxu
IgogICAgICJiZ2UgICAgICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmVQcm9iZVN0YXRlSXNTYWZlKSAiXG4iCiAKQEAgLTMyOCwzMiArMzYyLDMwIEBAIGFzbSAoCiAg
ICAgLy8gQ29weSB0aGUgUHJvYmU6OlN0YXRlIHRvIHRoZSBzYWZlIHBsYWNlLgogICAgIC8vIE5v
dGU6IHdlIGhhdmUgdG8gY29weSBmcm9tIGxvdyBhZGRyZXNzIHRvIGhpZ2hlciBhZGRyZXNzIGJl
Y2F1c2Ugd2UncmUgbW92aW5nIHRoZQogICAgIC8vIFByb2JlOjpTdGF0ZSB0byBhIGxvd2VyIGFk
ZHJlc3MuCi0gICAgIm1vdiAgICAgICByNSwgZnAiICJcbiIKLSAgICAibW92ICAgICAgIHI2LCBy
MSIgIlxuIgotICAgICJhZGQgICAgICAgcjcsIGZwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfU0laRSkgIlxuIgorICAgICJhZGQgICAgICAgcjcsIHI1LCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfU0laRSkgIlxuIgogCiAgICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmVDb3B5TG9vcCkgIjoiICJcbiIKICAgICAibGRyICAgICAgIHIzLCBbcjVdLCAj
NCIgIlxuIgogICAgICJsZHIgICAgICAgcjQsIFtyNV0sICM0IiAiXG4iCi0gICAgInN0ciAgICAg
ICByMywgW3I2XSwgIzQiICJcbiIKLSAgICAic3RyICAgICAgIHI0LCBbcjZdLCAjNCIgIlxuIgor
ICAgICJzdHIgICAgICAgcjMsIFtyMV0sICM0IiAiXG4iCisgICAgInN0ciAgICAgICByNCwgW3Ix
XSwgIzQiICJcbiIKICAgICAiY21wICAgICAgIHI1LCByNyIgIlxuIgogICAgICJibHQgICAgICIg
TE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVDb3B5TG9vcCkgIlxuIgog
Ci0gICAgIm1vdiAgICAgICBmcCwgcjEiICJcbiIKKyAgICAibW92ICAgICAgIHI1LCBzcCIgIlxu
IgogCiAgICAgLy8gQ2FsbCBpbml0aWFsaXplU3RhY2tGdW5jdGlvbiBpZiBwcmVzZW50LgogICAg
IExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUHJvYmVTdGF0ZUlzU2Fm
ZSkgIjoiICJcbiIKLSAgICAibGRyICAgICAgIHIyLCBbZnAsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9JTklUX1NUQUNLX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAg
ICAgIHIyLCBbcjUsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9JTklUX1NUQUNLX0ZVTkNU
SU9OX09GRlNFVCkgIl0iICJcbiIKICAgICAiY21wICAgICAgIHIyLCAjMCIgIlxuIgogICAgICJi
ZXEgICAgICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVSZXN0b3Jl
UmVnaXN0ZXJzKSAiXG4iCiAKLSAgICAibW92ICAgICAgIHIwLCBmcCIgIlxuIiAvLyBTZXQgdGhl
IFByb2JlOjpTdGF0ZSogYXJnLgorICAgICJtb3YgICAgICAgcjAsIHI1IiAiXG4iIC8vIFNldCB0
aGUgUHJvYmU6OlN0YXRlKiBhcmcuCiAgICAgImJseCAgICAgICByMiIgIlxuIiAvLyBDYWxsIHRo
ZSBpbml0aWFsaXplU3RhY2tGdW5jdGlvbiAobG9hZGVkIGludG8gcjIgYWJvdmUpLgogCiAgICAg
TE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVSZXN0b3JlUmVnaXN0ZXJz
KSAiOiIgIlxuIgogCi0gICAgIm1vdiAgICAgICBzcCwgZnAiICJcbiIKKyAgICAibW92ICAgICAg
IHNwLCByNSIgIlxuIiAvLyBFbnN1cmUgdGhhdCBzcCBwb2ludHMgdG8gdGhlIFByb2JlOjpTdGF0
ZSouCiAKICAgICAvLyBUbyBlbmFibGUgcHJvYmVzIHRvIG1vZGlmeSByZWdpc3RlciBzdGF0ZSwg
d2UgY29weSBhbGwgcmVnaXN0ZXJzCiAgICAgLy8gb3V0IG9mIHRoZSBQcm9iZTo6U3RhdGUgYmVm
b3JlIHJldHVybmluZy4KQEAgLTM5OSwxNyArNDMxLDIwIEBAIGFzbSAoCiAKIHZvaWQgTWFjcm9B
c3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogYXJnKQogewot
ICAgIHB1c2goUmVnaXN0ZXJJRDo6c3ApOwotICAgIHB1c2goUmVnaXN0ZXJJRDo6bHIpOwotICAg
IHB1c2goUmVnaXN0ZXJJRDo6aXApOwotICAgIHB1c2goUmVnaXN0ZXJJRDo6UzApOwotICAgIC8v
IFRoZSBmb2xsb3dpbmcgdXNlcyBSZWdpc3RlcklEOjpTMC4gU28sIHRoZXkgbXVzdCBjb21lIGFm
dGVyIHdlIHB1c2ggUzAgYWJvdmUuCi0gICAgcHVzaCh0cnVzdGVkSW1tMzJGcm9tUHRyKGFyZykp
OwotICAgIHB1c2godHJ1c3RlZEltbTMyRnJvbVB0cihmdW5jdGlvbikpOwotCi0gICAgbW92ZSh0
cnVzdGVkSW1tMzJGcm9tUHRyKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpLCBSZWdpc3RlcklEOjpT
MCk7Ci0gICAgbV9hc3NlbWJsZXIuYmx4KFJlZ2lzdGVySUQ6OlMwKTsKKyAgICBzdWIzMihUcnVz
dGVkSW1tMzIoc2l6ZW9mKEluY29taW5nUmVjb3JkKSksIHNwKTsKIAorICAgIHN0b3JlMzIobHIs
IEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBscikpKTsKKyAgICBzdG9yZTMy
KGlwLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgaXApKSk7CisgICAgc3Rv
cmUzMihyNiwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHI2KSkpOyAvLyBT
MCA9PSByNi4KKyAgICBzdG9yZTMyKHIwLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1Jl
Y29yZCwgcjApKSk7CisgICAgc3RvcmUzMihyMSwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21p
bmdSZWNvcmQsIHIxKSkpOworICAgIHN0b3JlMzIocjIsIEFkZHJlc3Moc3AsIG9mZnNldG9mKElu
Y29taW5nUmVjb3JkLCByMikpKTsKKyAgICAvLyBUaGUgZm9sbG93aW5nIHVzZXMgUmVnaXN0ZXJJ
RDo6UzAuIFNvLCB0aGV5IG11c3QgY29tZSBhZnRlciB3ZSBwcmVzZXJ2ZSBTMCBhYm92ZS4KKyAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSwg
cjApOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmcpLCByMSk7CisgICAgbW92ZShUcnVzdGVk
SW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KFByb2JlOjpleGVjdXRlUHJvYmUpKSwgcjIp
OworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihjdGlNYXNt
UHJvYmVUcmFtcG9saW5lKSksIGlwKTsKKyAgICBtX2Fzc2VtYmxlci5ibHgoaXApOwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCShyZXZpc2lvbiAyMjA5MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1ODYsMjMgKzE1ODYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IG1fYXNzZW1ibGVyLmJseChBUk1SZWdpc3RlcnM6OlMxKTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
TUFTTV9QUk9CRSkKLSAgICBpbmxpbmUgVHJ1c3RlZEltbTMyIHRydXN0ZWRJbW0zMkZyb21QdHIo
dm9pZCogcHRyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1t
UHRyKHB0cikpOwotICAgIH0KLQotICAgIGlubGluZSBUcnVzdGVkSW1tMzIgdHJ1c3RlZEltbTMy
RnJvbVB0cihQcm9iZTo6RnVuY3Rpb24gZnVuY3Rpb24pCi0gICAgewotICAgICAgICByZXR1cm4g
VHJ1c3RlZEltbTMyKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rp
b24pKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIFRydXN0ZWRJbW0zMiB0cnVzdGVkSW1tMzJGcm9t
UHRyKHZvaWQgKCpmdW5jdGlvbikoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBUcnVzdGVkSW1t
MzIoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpKTsKLSAg
ICB9Ci0jZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCi0KIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIExpbmtCdWZmZXI7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNwcAkocmV2aXNpb24gMjIwOTM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBU1NFTUJM
RVIpICYmIENQVShBUk1fVEhVTUIyKQogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAKKyNp
bmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtMzYsNiArMzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZXh0ZXJu
ICJDIiB2b2lkIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUoKTsKIAordXNpbmcgbmFtZXNwYWNlIEFS
TVJlZ2lzdGVyczsKKwogI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKIAogLy8gVGhlIGZvbGxv
d2luZyBhcmUgb2Zmc2V0cyBmb3IgUHJvYmU6OlN0YXRlIGZpZWxkcyBhY2Nlc3NlZApAQCAtMTg2
LDYgKzE4OSwzMSBAQCBDT01QSUxFX0FTU0VSVChQUk9CRV9PRkZTRVRPRihjcHUuZnByc1tBCiBD
T01QSUxFX0FTU0VSVChzaXplb2YoUHJvYmU6OlN0YXRlKSA9PSBQUk9CRV9TSVpFLCBQcm9iZVN0
YXRlX3NpemVfbWF0Y2hlc19jdGlNYXNtUHJvYmVUcmFtcG9saW5lKTsKICN1bmRlZiBQUk9CRV9P
RkZTRVRPRgogCitzdHJ1Y3QgSW5jb21pbmdSZWNvcmQgeworICAgIHVpbnRwdHJfdCBscjsKKyAg
ICB1aW50cHRyX3QgaXA7CisgICAgdWludHB0cl90IGFwc3I7CisgICAgdWludHB0cl90IHIwOwor
ICAgIHVpbnRwdHJfdCByMTsKKyAgICB1aW50cHRyX3QgcjI7Cit9OworCisjZGVmaW5lIElOX0xS
X09GRlNFVCAoMCAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9JUF9PRkZTRVQgKDEgKiBQVFJfU0la
RSkKKyNkZWZpbmUgSU5fQVBTUl9PRkZTRVQgKDIgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fUjBf
T0ZGU0VUICgzICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1IxX09GRlNFVCAoNCAqIFBUUl9TSVpF
KQorI2RlZmluZSBJTl9SMl9PRkZTRVQgKDUgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fU0laRSAg
ICAgICg2ICogUFRSX1NJWkUpCisKK3N0YXRpY19hc3NlcnQoSU5fTFJfT0ZGU0VUID09IG9mZnNl
dG9mKEluY29taW5nUmVjb3JkLCBsciksICJJTl9MUl9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Citz
dGF0aWNfYXNzZXJ0KElOX0lQX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgaXAp
LCAiSU5fSVBfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9BUFNSX09G
RlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgYXBzciksICJJTl9BUFNSX09GRlNFVCBp
cyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fUjBfT0ZGU0VUID09IG9mZnNldG9mKElu
Y29taW5nUmVjb3JkLCByMCksICJJTl9SMF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNf
YXNzZXJ0KElOX1IxX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjEpLCAiSU5f
UjFfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9SMl9PRkZTRVQgPT0g
b2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIyKSwgIklOX1IyX09GRlNFVCBpcyBpbmNvcnJlY3Qi
KTsKK3N0YXRpY19hc3NlcnQoSU5fU0laRSA9PSBzaXplb2YoSW5jb21pbmdSZWNvcmQpLCAiSU5f
U0laRSBpcyBpbmNvcnJlY3QiKTsKKwogYXNtICgKICAgICAiLnRleHQiICJcbiIKICAgICAiLmFs
aWduIDIiICJcbiIKQEAgLTE5Niw2NSArMjI0LDcwIEBAIGFzbSAoCiAgICAgU1lNQk9MX1NUUklO
RyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiOiIgIlxuIgogCiAgICAgLy8gTWFjcm9Bc3NlbWJs
ZXJBUk12Nzo6cHJvYmUoKSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0byBzdG9yZSBzb21l
IHZhbHVlcy4KLSAgICAvLyBUaGUgdG9wIG9mIHN0YWNrIG5vdyBsb29rcyBsaWtlIHRoaXM6Ci0g
ICAgLy8gICAgIGVzcFswICogcHRyU2l6ZV06IHByb2JlIGhhbmRsZXIgZnVuY3Rpb24KLSAgICAv
LyAgICAgZXNwWzEgKiBwdHJTaXplXTogcHJvYmUgYXJnCi0gICAgLy8gICAgIGVzcFsyICogcHRy
U2l6ZV06IHNhdmVkIHIwCi0gICAgLy8gICAgIGVzcFszICogcHRyU2l6ZV06IHNhdmVkIGlwCi0g
ICAgLy8gICAgIGVzcFs0ICogcHRyU2l6ZV06IHNhdmVkIGxyCi0gICAgLy8gICAgIGVzcFs1ICog
cHRyU2l6ZV06IHNhdmVkIHNwCisgICAgLy8gVGhlIHRvcCBvZiBzdGFjayBub3cgY29udGFpbnMg
dGhlIEluY29taW5nUmVjb3JkLgorICAgIC8vCisgICAgLy8gSW5jb21pbmcgcmVnaXN0ZXIgdmFs
dWVzOgorICAgIC8vICAgICByMDogcHJvYmUgZnVuY3Rpb24KKyAgICAvLyAgICAgcjE6IHByb2Jl
IGFyZworICAgIC8vICAgICByMjogUHJvYmU6OmV4ZWN1dGVQcm9iZQorICAgIC8vICAgICBpcDog
c2NyYXRjaCwgd2FzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUKKyAgICAvLyAgICAgbHI6IHJldHVy
biBhZGRyZXNzCiAKICAgICAibW92ICAgICAgIGlwLCBzcCIgIlxuIgotICAgICJtb3YgICAgICAg
cjAsIHNwIiAiXG4iCi0gICAgInN1YiAgICAgICByMCwgcjAsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9TSVpFICsgT1VUX1NJWkUpICJcbiIKKyAgICAic3RyICAgICAgIHIyLCBbaXAsICMt
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICJdIiAiXG4iIC8vIFN0YXNoIFByb2JlOjpl
eGVjdXRlUHJvYmUuCisKKyAgICAibW92ICAgICAgIHIyLCBzcCIgIlxuIgorICAgICJzdWIgICAg
ICAgcjIsIHIyLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAi
XG4iCiAKICAgICAvLyBUaGUgQVJNIEVBQkkgc3BlY2lmaWVzIHRoYXQgdGhlIHN0YWNrIG5lZWRz
IHRvIGJlIDE2IGJ5dGUgYWxpZ25lZC4KLSAgICAiYmljICAgICAgIHIwLCByMCwgIzB4ZiIgIlxu
IgotICAgICJtb3YgICAgICAgc3AsIHIwIiAiXG4iIC8vIFNldCB0aGUgc3AgdG8gcHJvdGVjdCB0
aGUgUHJvYmU6OlN0YXRlIGZyb20gaW50ZXJydXB0cyBiZWZvcmUgd2UgaW5pdGlhbGl6ZSBpdC4K
KyAgICAiYmljICAgICAgIHIyLCByMiwgIzB4ZiIgIlxuIgorICAgICJtb3YgICAgICAgc3AsIHIy
IiAiXG4iIC8vIFNldCB0aGUgc3AgdG8gcHJvdGVjdCB0aGUgUHJvYmU6OlN0YXRlIGZyb20gaW50
ZXJydXB0cyBiZWZvcmUgd2UgaW5pdGlhbGl6ZSBpdC4KKyAgICAibGRyICAgICAgIHIyLCBbaXAs
ICMtIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICJdIiAiXG4iIC8vIFJlbG9hZCBQcm9i
ZTo6ZXhlY3V0ZVByb2JlLgogCisgICAgInN0ciAgICAgICByMCwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIg
ICAgICAgcjEsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0FSR19PRkZTRVQpICJd
IiAiXG4iCiAgICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1BDX09GRlNFVCkgIl0iICJcbiIKLSAgICAiYWRkICAgICAgIGxyLCBzcCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMV9PRkZTRVQpICJcbiIKLSAgICAic3RtaWEgICAg
IGxyLCB7IHIxLXIxMSB9IiAiXG4iCi0gICAgIm1ycyAgICAgICBsciwgQVBTUiIgIlxuIgotICAg
ICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9BUFNS
X09GRlNFVCkgIl0iICJcbiIKKworICAgICJhZGQgICAgICAgcjAsIGlwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoSU5fU0laRSkgIlxuIgorICAgICJzdHIgICAgICAgcjAsIFtzcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iCisKKyAgICAiYWRkICAg
ICAgIGxyLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SM19PRkZTRVQpICJc
biIKKyAgICAic3RtaWEgICAgIGxyLCB7IHIzLXIxMSB9IiAiXG4iCisKICAgICAidm1ycyAgICAg
IGxyLCBGUFNDUiIgIlxuIgogICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9GUFNDUl9PRkZTRVQpICJdIiAiXG4iCiAKLSAgICAibGRyICAgICAg
IGxyLCBbaXAsICMwICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICJdIiAiXG4iCi0g
ICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVf
RlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAgbHIsIFtpcCwgIzEgKiAi
IFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxy
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9BUkdfT0ZGU0VUKSAiXSIgIlxuIgot
ICAgICJsZHIgICAgICAgbHIsIFtpcCwgIzIgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0la
RSkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9DUFVfUjBfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAgbHIsIFtpcCwg
IzMgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIKLSAgICAic3RyICAg
ICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfSVBfT0ZGU0VUKSAi
XSIgIlxuIgotICAgICJsZHIgICAgICAgbHIsIFtpcCwgIzQgKiAiIFNUUklOR0laRV9WQUxVRV9P
RihQVFJfU0laRSkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAg
bHIsIFtpcCwgIzUgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIKLSAg
ICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfU1Bf
T0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImxkciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAgICAgIHI0
LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9MUl9PRkZTRVQpICJdIiAiXG4iCisgICAg
ImxkciAgICAgICByNSwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fSVBfT0ZGU0VUKSAi
XSIgIlxuIgorICAgICJsZHIgICAgICAgcjYsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElO
X0FQU1JfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgICAgICAgcjcsIFtpcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKElOX1IwX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAgICAgIHI4LCBb
aXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9SMV9PRkZTRVQpICJdIiAiXG4iCisgICAgImxk
ciAgICAgICByOSwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUjJfT0ZGU0VUKSAiXSIg
IlxuIgorICAgICJzdHIgICAgICAgcjQsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X0NQVV9MUl9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICByNSwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0lQX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAg
ICAgIHI2LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfQVBTUl9PRkZTRVQp
ICJdIiAiXG4iCisgICAgInN0ciAgICAgICByNywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1IwX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIHI4LCBbc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjFfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJz
dHIgICAgICAgcjksIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMl9PRkZT
RVQpICJdIiAiXG4iCiAKICAgICAiYWRkICAgICAgIGlwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9EMF9PRkZTRVQpICJcbiIKICAgICAidnN0bWlhLjY0IGlwISwgeyBkMC1k
MTUgfSIgIlxuIgogI2lmIENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQogICAg
ICJ2c3RtaWEuNjQgaXAhLCB7IGQxNi1kMzEgfSIgIlxuIgogI2VuZGlmCi0gICAgIm1vdiAgICAg
ICBmcCwgc3AiICJcbiIgLy8gU2F2ZSB0aGUgUHJvYmU6OlN0YXRlKi4KIAotICAgIC8vIEluaXRp
YWxpemUgUHJvYmU6OlN0YXRlOjppbml0aWFsaXplU3RhY2tGdW5jdGlvbiB0byB6ZXJvLgotICAg
ICJtb3YgICAgICAgcjAsICMwIiAiXG4iCi0gICAgInN0ciAgICAgICByMCwgW2ZwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4i
CisJLy8gcjUgaXMgYSBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIuIFdlJ2xsIHVzZSBpdCBmb3IgcHJl
c2VydmluZyB0aGUgUHJvYmU6OlN0YXRlKi4KKwkvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29t
L3F1ZXN0aW9ucy8yNjE0MTkvYXJtLXRvLWMtY2FsbGluZy1jb252ZW50aW9uLXJlZ2lzdGVycy10
by1zYXZlIzI2MTQ5NgorICAgICJtb3YgICAgICAgcjUsIHNwIiAiXG4iCiAKLSAgICAibGRyICAg
ICAgIGlwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9P
RkZTRVQpICJdIiAiXG4iCiAgICAgIm1vdiAgICAgICByMCwgc3AiICJcbiIgLy8gdGhlIFByb2Jl
OjpTdGF0ZSogYXJnLgotICAgICJibHggICAgICAgaXAiICJcbiIKKyAgICAiYmx4ICAgICAgIHIy
IiAiXG4iIC8vIENhbGwgUHJvYmU6OmV4ZWN1dGVQcm9iZS4KIAogICAgIC8vIE1ha2Ugc3VyZSB0
aGUgUHJvYmU6OlN0YXRlIGlzIGVudGlyZWx5IGJlbG93IHRoZSByZXN1bHQgc3RhY2sgcG9pbnRl
ciBzbwogICAgIC8vIHRoYXQgcmVnaXN0ZXIgdmFsdWVzIGFyZSBzdGlsbCBwcmVzZXJ2ZWQgd2hl
biB3ZSBjYWxsIHRoZSBpbml0aWFsaXplU3RhY2sKICAgICAvLyBmdW5jdGlvbi4KLSAgICAibGRy
ICAgICAgIHIxLCBbZnAsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfU1BfT0ZGU0VU
KSAiXSIgIlxuIiAvLyBSZXN1bHQgc3AuCi0gICAgImFkZCAgICAgICByMiwgZnAsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9TSVpFICsgT1VUX1NJWkUpICJcbiIgLy8gRW5kIG9mIFByb3Zl
Q29udGV4dCArIGJ1ZmZlci4KKyAgICAibGRyICAgICAgIHIxLCBbcjUsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9DUFVfU1BfT0ZGU0VUKSAiXSIgIlxuIiAvLyBSZXN1bHQgc3AuCisgICAg
ImFkZCAgICAgICByMiwgcjUsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9TSVpFICsgT1VU
X1NJWkUpICJcbiIgLy8gRW5kIG9mIFByb3ZlQ29udGV4dCArIGJ1ZmZlci4KICAgICAiY21wICAg
ICAgIHIxLCByMiIgIlxuIgogICAgICJpdCAgICAgICAgZ2UiICJcbiIKICAgICAiYmdlICAgICAi
IExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUHJvYmVTdGF0ZUlzU2Fm
ZSkgIlxuIgpAQCAtMjY3LDMyICszMDAsMzAgQEAgYXNtICgKICAgICAvLyBDb3B5IHRoZSBQcm9i
ZTo6U3RhdGUgdG8gdGhlIHNhZmUgcGxhY2UuCiAgICAgLy8gTm90ZTogd2UgaGF2ZSB0byBjb3B5
IGZyb20gbG93IGFkZHJlc3MgdG8gaGlnaGVyIGFkZHJlc3MgYmVjYXVzZSB3ZSdyZSBtb3Zpbmcg
dGhlCiAgICAgLy8gUHJvYmU6OlN0YXRlIHRvIGEgbG93ZXIgYWRkcmVzcy4KLSAgICAibW92ICAg
ICAgIHI1LCBmcCIgIlxuIgotICAgICJtb3YgICAgICAgcjYsIHIxIiAiXG4iCi0gICAgImFkZCAg
ICAgICByNywgZnAsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9TSVpFKSAiXG4iCisgICAg
ImFkZCAgICAgICByNywgcjUsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9TSVpFKSAiXG4i
CiAKICAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZUNvcHlMb29w
KSAiOiIgIlxuIgogICAgICJsZHIgICAgICAgcjMsIFtyNV0sICM0IiAiXG4iCiAgICAgImxkciAg
ICAgICByNCwgW3I1XSwgIzQiICJcbiIKLSAgICAic3RyICAgICAgIHIzLCBbcjZdLCAjNCIgIlxu
IgotICAgICJzdHIgICAgICAgcjQsIFtyNl0sICM0IiAiXG4iCisgICAgInN0ciAgICAgICByMywg
W3IxXSwgIzQiICJcbiIKKyAgICAic3RyICAgICAgIHI0LCBbcjFdLCAjNCIgIlxuIgogICAgICJj
bXAgICAgICAgcjUsIHI3IiAiXG4iCiAgICAgIml0ICAgICAgICBsdCIgIlxuIgogICAgICJibHQg
ICAgICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVDb3B5TG9vcCkg
IlxuIgogCi0gICAgIm1vdiAgICAgICBmcCwgcjEiICJcbiIKKyAgICAibW92ICAgICAgIHI1LCBz
cCIgIlxuIgogCiAgICAgLy8gQ2FsbCBpbml0aWFsaXplU3RhY2tGdW5jdGlvbiBpZiBwcmVzZW50
LgogICAgIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUHJvYmVTdGF0
ZUlzU2FmZSkgIjoiICJcbiIKLSAgICAibGRyICAgICAgIHIyLCBbZnAsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9JTklUX1NUQUNLX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKKyAgICAi
bGRyICAgICAgIHIyLCBbcjUsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9JTklUX1NUQUNL
X0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKICAgICAiY2J6ICAgICAgIHIyLCAiIExPQ0FMX0xB
QkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUmVzdG9yZVJlZ2lzdGVycykgIlxuIgog
Ci0gICAgIm1vdiAgICAgICByMCwgZnAiICJcbiIgLy8gU2V0IHRoZSBQcm9iZTo6U3RhdGUqIGFy
Zy4KKyAgICAibW92ICAgICAgIHIwLCByNSIgIlxuIiAvLyBTZXQgdGhlIFByb2JlOjpTdGF0ZSog
YXJnLgogICAgICJibHggICAgICAgcjIiICJcbiIgLy8gQ2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNr
RnVuY3Rpb24gKGxvYWRlZCBpbnRvIHIyIGFib3ZlKS4KIAogICAgIExPQ0FMX0xBQkVMX1NUUklO
RyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUmVzdG9yZVJlZ2lzdGVycykgIjoiICJcbiIKIAotICAg
ICJtb3YgICAgICAgc3AsIGZwIiAiXG4iCisgICAgIm1vdiAgICAgICBzcCwgcjUiICJcbiIgLy8g
RW5zdXJlIHRoYXQgc3AgcG9pbnRzIHRvIHRoZSBQcm9iZTo6U3RhdGUqLgogCiAgICAgLy8gVG8g
ZW5hYmxlIHByb2JlcyB0byBtb2RpZnkgcmVnaXN0ZXIgc3RhdGUsIHdlIGNvcHkgYWxsIHJlZ2lz
dGVycwogICAgIC8vIG91dCBvZiB0aGUgUHJvYmU6OlN0YXRlIGJlZm9yZSByZXR1cm5pbmcuCkBA
IC0zMzgsMjIgKzM2OSwyNiBAQCBhc20gKAogCiB2b2lkIE1hY3JvQXNzZW1ibGVyOjpwcm9iZShQ
cm9iZTo6RnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZykKIHsKLSAgICBwdXNoKFJlZ2lzdGVy
SUQ6OmxyKTsKLSAgICBwdXNoKFJlZ2lzdGVySUQ6OmxyKTsKLSAgICBhZGQzMihUcnVzdGVkSW1t
MzIoOCksIFJlZ2lzdGVySUQ6OnNwLCBSZWdpc3RlcklEOjpscik7Ci0gICAgc3RvcmUzMihSZWdp
c3RlcklEOjpsciwgQXJtQWRkcmVzcyhSZWdpc3RlcklEOjpzcCwgNCkpOwotICAgIHB1c2goUmVn
aXN0ZXJJRDo6aXApOwotICAgIHB1c2goUmVnaXN0ZXJJRDo6cjApOwotICAgIC8vIFRoZSBmb2xs
b3dpbmcgdXNlcyBSZWdpc3RlcklEOjppcC4gU28sIHRoZXkgbXVzdCBjb21lIGFmdGVyIHdlIHB1
c2ggaXAgYWJvdmUuCi0gICAgcHVzaCh0cnVzdGVkSW1tMzJGcm9tUHRyKGFyZykpOwotICAgIHB1
c2godHJ1c3RlZEltbTMyRnJvbVB0cihmdW5jdGlvbikpOworICAgIHN1YjMyKFRydXN0ZWRJbW0z
MihzaXplb2YoSW5jb21pbmdSZWNvcmQpKSwgc3ApOwogCi0gICAgbW92ZSh0cnVzdGVkSW1tMzJG
cm9tUHRyKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpLCBSZWdpc3RlcklEOjppcCk7Ci0gICAgbV9h
c3NlbWJsZXIuYmx4KFJlZ2lzdGVySUQ6OmlwKTsKKyAgICBzdG9yZTMyKGxyLCBBZGRyZXNzKHNw
LCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgbHIpKSk7CisgICAgc3RvcmUzMihpcCwgQWRkcmVz
cyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGlwKSkpOworICAgIG1fYXNzZW1ibGVyLm1y
cyhpcCwgYXBzcik7CisgICAgc3RvcmUzMihpcCwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21p
bmdSZWNvcmQsIGFwc3IpKSk7CisgICAgc3RvcmUzMihyMCwgQWRkcmVzcyhzcCwgb2Zmc2V0b2Yo
SW5jb21pbmdSZWNvcmQsIHIwKSkpOworICAgIHN0b3JlMzIocjEsIEFkZHJlc3Moc3AsIG9mZnNl
dG9mKEluY29taW5nUmVjb3JkLCByMSkpKTsKKyAgICBzdG9yZTMyKHIyLCBBZGRyZXNzKHNwLCBv
ZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjIpKSk7CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1h
eSBlbWl0IGEgVDEgbW92IGluc3RydWN0aW9uLCB3aGljaCBpcyBlZmZlY3RpdmVseSBhIG1vdnMu
CisgICAgLy8gVGhpcyBtZWFucyB3ZSBtdXN0IGZpcnN0IHByZXNlcnZlIHRoZSBhcHNyIGZsYWdz
IGFib3ZlIGZpcnN0LgorICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZv
aWQqPihmdW5jdGlvbikpLCByMCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZyksIHIxKTsK
KyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oUHJvYmU6OmV4
ZWN1dGVQcm9iZSkpLCByMik7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpKSwgaXApOworICAgIG1fYXNzZW1ibGVy
LmJseChpcCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCi0jZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKLQorI2VuZGlmIC8vIEVOQUJM
RShBU1NFTUJMRVIpICYmIENQVShBUk1fVEhVTUIyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHJldmlzaW9u
IDIyMDkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTA2LDIzICsyMTA2LDYgQEAgcHJvdGVjdGVk
OgogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFSTXY3QXNzZW1ibGVyOjpDb25k
aXRpb24+KGNvbmQpOwogICAgIH0KLSAgICAKLSNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKLSAgICBp
bmxpbmUgVHJ1c3RlZEltbTMyIHRydXN0ZWRJbW0zMkZyb21QdHIodm9pZCogcHRyKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyKHB0cikpOwotICAgIH0K
LQotICAgIGlubGluZSBUcnVzdGVkSW1tMzIgdHJ1c3RlZEltbTMyRnJvbVB0cihQcm9iZTo6RnVu
Y3Rpb24gZnVuY3Rpb24pCi0gICAgewotICAgICAgICByZXR1cm4gVHJ1c3RlZEltbTMyKFRydXN0
ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSk7Ci0gICAgfQotCi0g
ICAgaW5saW5lIFRydXN0ZWRJbW0zMiB0cnVzdGVkSW1tMzJGcm9tUHRyKHZvaWQgKCpmdW5jdGlv
bikoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5B
QkxFKE1BU01fUFJPQkUpCiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJp
bnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDkgKzMzLDEwIEBACiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CisKIG5hbWVzcGFjZSBQcmludGVyIHsKIAotdXNpbmcgQ1BVU3RhdGUgPSBNYWNy
b0Fzc2VtYmxlcjo6Q1BVU3RhdGU7Cit1c2luZyBDUFVTdGF0ZSA9IFByb2JlOjpDUFVTdGF0ZTsK
IHVzaW5nIFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRDsKIHVzaW5nIEZQ
UmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ7CiAKQEAgLTE3MSwxMyAr
MTcyLDEzIEBAIHZvaWQgcHJpbnRNZW1vcnkoUHJpbnRTdHJlYW0mIG91dCwgQ29udGUKICAgICAg
ICAgb3V0LnByaW50KCJcbiIpOwogfQogCi12b2lkIHByaW50Q2FsbGJhY2soUHJvYmU6OlN0YXRl
KiBwcm9iZUNvbnRleHQpCit2b2lkIHByaW50Q2FsbGJhY2soUHJvYmU6OkNvbnRleHQmIHByb2Jl
Q29udGV4dCkKIHsKICAgICBhdXRvJiBvdXQgPSBXVEY6OmRhdGFGaWxlKCk7Ci0gICAgUHJpbnRS
ZWNvcmRMaXN0JiBsaXN0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8UHJpbnRSZWNvcmRMaXN0Kj4ocHJv
YmVDb250ZXh0LT5hcmcpOworICAgIFByaW50UmVjb3JkTGlzdCYgbGlzdCA9ICpyZWludGVycHJl
dF9jYXN0PFByaW50UmVjb3JkTGlzdCo+KHByb2JlQ29udGV4dC5hcmcpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykgewogICAgICAgICBhdXRvJiByZWNvcmQg
PSBsaXN0W2ldOwotICAgICAgICBDb250ZXh0IGNvbnRleHQoKnByb2JlQ29udGV4dCwgcmVjb3Jk
LmRhdGEpOworICAgICAgICBDb250ZXh0IGNvbnRleHQocHJvYmVDb250ZXh0LCByZWNvcmQuZGF0
YSk7CiAgICAgICAgIHJlY29yZC5wcmludGVyKG91dCwgY29udGV4dCk7CiAgICAgfQogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyUHJpbnRlci5oCShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlBy
aW50ZXIuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTIyMyw3ICsyMjQsNyBAQCBzdHJ1Y3QgUHJpbnRlcjxNZW1Xb3JkPEludFR5cGU+PiA6IHB1
YmxpCiAgICAgeyB9CiB9OwogCi12b2lkIHByaW50Q2FsbGJhY2soUHJvYmU6OlN0YXRlKik7Cit2
b2lkIHByaW50Q2FsbGJhY2soUHJvYmU6OkNvbnRleHQmKTsKIAogfSAvLyBuYW1lc3BhY2UgUHJp
bnRlcgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAkocmV2aXNpb24gMjIwOTM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQVNTRU1CTEVS
KSAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKIAorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00u
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDEsNiArMTAyLDggQEAgZXh0ZXJuICJDIiB2b2lk
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUoKQogI2RlZmluZSBQUk9CRV9TSVpFIChQUk9CRV9DUFVf
WE1NMTVfT0ZGU0VUICsgWE1NX1NJWkUpCiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAorI2RlZmlu
ZSBQUk9CRV9FWEVDVVRPUl9PRkZTRVQgUFJPQkVfU0laRSAvLyBTdGFzaCB0aGUgZXhlY3V0ZVBy
b2JlIGZ1bmN0aW9uIHBvaW50ZXIgYXQgdGhlIGVuZCBvZiB0aGUgUHJvYmVDb250ZXh0LgorCiAv
LyBUaGUgb3V0Z29pbmcgcmVjb3JkIHRvIGJlIHBvcHBlZCBvZmYgdGhlIHN0YWNrIGF0IHRoZSBl
bmQgY29uc2lzdHMgb2Y6CiAvLyBlZmxhZ3MsIGVheCwgZWN4LCBlYnAsIGVpcC4KICNkZWZpbmUg
T1VUX1NJWkUgICAgICAgICg1ICogUFRSX1NJWkUpCkBAIC0xNTksNiArMTYyLDcgQEAgQ09NUElM
RV9BU1NFUlQoUFJPQkVfT0ZGU0VUT0ZfUkVHKGNwdS5mcAogI2VuZGlmIC8vIENQVShYODZfNjQp
CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihQcm9iZTo6U3RhdGUpID09IFBST0JFX1NJWkUsIFBy
b2JlU3RhdGVfc2l6ZV9tYXRjaGVzX2N0aU1hc21Qcm9iZVRyYW1wb2xpbmUpOworQ09NUElMRV9B
U1NFUlQoKFBST0JFX0VYRUNVVE9SX09GRlNFVCArIFBUUl9TSVpFKSA8PSAoUFJPQkVfU0laRSAr
IE9VVF9TSVpFKSwgTXVzdF9oYXZlX3Jvb21fYWZ0ZXJfUHJvYmVDb250ZXh0X3RvX3N0YXNoX3Ro
ZV9wcm9iZV9oYW5kbGVyKTsKIAogI3VuZGVmIFBST0JFX09GRlNFVE9GCiAKQEAgLTE3NiwxMCAr
MTgwLDE2IEBAIGFzbSAoCiAgICAgLy8gdGhpczoKICAgICAvLyAgICAgZXNwWzAgKiBwdHJTaXpl
XTogZWZsYWdzCiAgICAgLy8gICAgIGVzcFsxICogcHRyU2l6ZV06IHJldHVybiBhZGRyZXNzIC8g
c2F2ZWQgZWlwCi0gICAgLy8gICAgIGVzcFsyICogcHRyU2l6ZV06IHByb2JlIGhhbmRsZXIgZnVu
Y3Rpb24KLSAgICAvLyAgICAgZXNwWzMgKiBwdHJTaXplXTogcHJvYmUgYXJnCi0gICAgLy8gICAg
IGVzcFs0ICogcHRyU2l6ZV06IHNhdmVkIGVheAotICAgIC8vICAgICBlc3BbNSAqIHB0clNpemVd
OiBzYXZlZCBlc3AKKyAgICAvLyAgICAgZXNwWzIgKiBwdHJTaXplXTogc2F2ZWQgZWJ4CisgICAg
Ly8gICAgIGVzcFszICogcHRyU2l6ZV06IHNhdmVkIGVkeAorICAgIC8vICAgICBlc3BbNCAqIHB0
clNpemVdOiBzYXZlZCBlY3gKKyAgICAvLyAgICAgZXNwWzUgKiBwdHJTaXplXTogc2F2ZWQgZWF4
CisgICAgLy8KKyAgICAvLyBJbmNvbWluZyByZWdpc3RlcnMgY29udGFpbjoKKyAgICAvLyAgICAg
ZWN4OiBQcm9iZTo6ZXhlY3V0ZVByb2JlCisgICAgLy8gICAgIGVkeDogcHJvYmUgZnVuY3Rpb24K
KyAgICAvLyAgICAgZWJ4OiBwcm9iZSBhcmcKKyAgICAvLyAgICAgZWF4OiBzY3JhdGNoICh3YXMg
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSkKIAogICAgICJtb3ZsICVlc3AsICVlYXgiICJcbiIKICAg
ICAic3VibCAkIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiLCAl
ZXNwIiAiXG4iCkBAIC0xOTAsOSArMjAwLDkgQEAgYXNtICgKICAgICAibW92bCAlZWJwLCAiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUJQX09GRlNFVCkgIiglZXNwKSIgIlxuIgogICAg
ICJtb3ZsICVlc3AsICVlYnAiICJcbiIgLy8gU2F2ZSB0aGUgUHJvYmU6OlN0YXRlKi4KIAotICAg
ICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQ1hfT0ZGU0VUKSAi
KCVlYnApIiAiXG4iCi0gICAgIm1vdmwgJWVkeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX0VEWF9PRkZTRVQpICIoJWVicCkiICJcbiIKLSAgICAibW92bCAlZWJ4LCAiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfRUJYX09GRlNFVCkgIiglZWJwKSIgIlxuIgorICAgICJtb3Zs
ICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0VYRUNVVE9SX09GRlNFVCkgIiglZWJw
KSIgIlxuIgorICAgICJtb3ZsICVlZHgsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BST0JF
X0ZVTkNUSU9OX09GRlNFVCkgIiglZWJwKSIgIlxuIgorICAgICJtb3ZsICVlYngsICIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0FSR19PRkZTRVQpICIoJWVicCkiICJcbiIKICAgICAibW92bCAl
ZXNpLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRVNJX09GRlNFVCkgIiglZWJwKSIg
IlxuIgogICAgICJtb3ZsICVlZGksICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FRElf
T0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAKQEAgLTIwMSwxMiArMjExLDE2IEBAIGFzbSAoCiAgICAg
Im1vdmwgMSAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiKCVlYXgpLCAlZWN4IiAi
XG4iCiAgICAgIm1vdmwgJWVjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VJUF9P
RkZTRVQpICIoJWVicCkiICJcbiIKICAgICAibW92bCAyICogIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFRSX1NJWkUpICIoJWVheCksICVlY3giICJcbiIKLSAgICAibW92bCAlZWN4LCAiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICIoJWVicCkiICJcbiIKKyAg
ICAibW92bCAlZWN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUJYX09GRlNFVCkg
IiglZWJwKSIgIlxuIgogICAgICJtb3ZsIDMgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0la
RSkgIiglZWF4KSwgJWVjeCIgIlxuIgotICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0FSR19PRkZTRVQpICIoJWVicCkiICJcbiIKKyAgICAibW92bCAlZWN4LCAiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRURYX09GRlNFVCkgIiglZWJwKSIgIlxuIgogICAg
ICJtb3ZsIDQgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIiglZWF4KSwgJWVjeCIg
IlxuIgotICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQVhf
T0ZGU0VUKSAiKCVlYnApIiAiXG4iCisgICAgIm1vdmwgJWVjeCwgIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0VDWF9PRkZTRVQpICIoJWVicCkiICJcbiIKICAgICAibW92bCA1ICogIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICIoJWVheCksICVlY3giICJcbiIKKyAgICAibW92
bCAlZWN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUFYX09GRlNFVCkgIiglZWJw
KSIgIlxuIgorCisgICAgIm1vdmwgJWVheCwgJWVjeCIgIlxuIgorICAgICJhZGRsICQiIFNUUklO
R0laRV9WQUxVRV9PRig2ICogUFRSX1NJWkUpICIsICVlY3giICJcbiIKICAgICAibW92bCAlZWN4
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRVNQX09GRlNFVCkgIiglZWJwKSIgIlxu
IgogCiAgICAgIm1vdnEgJXhtbTAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YTU0w
X09GRlNFVCkgIiglZWJwKSIgIlxuIgpAQCAtMjE4LDE1ICsyMzIsMTIgQEAgYXNtICgKICAgICAi
bW92cSAleG1tNiwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1hNTTZfT0ZGU0VUKSAi
KCVlYnApIiAiXG4iCiAgICAgIm1vdnEgJXhtbTcsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X0NQVV9YTU03X09GRlNFVCkgIiglZWJwKSIgIlxuIgogCi0gICAgInhvcmwgJWVheCwgJWVheCIg
IlxuIgotICAgICJtb3ZsICVlYXgsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0lOSVRfU1RB
Q0tfRlVOQ1RJT05fT0ZGU0VUKSAiKCVlYnApIiAiXG4iCi0KICAgICAvLyBSZXNlcnZlIHN0YWNr
IHNwYWNlIGZvciB0aGUgYXJnIHdoaWxlIG1haW50YWluaW5nIHRoZSByZXF1aXJlZCBzdGFjawog
ICAgIC8vIHBvaW50ZXIgMzIgYnl0ZSBhbGlnbm1lbnQ6CiAgICAgInN1YmwgJDB4MjAsICVlc3Ai
ICJcbiIKICAgICAibW92bCAlZWJwLCAwKCVlc3ApIiAiXG4iIC8vIHRoZSBQcm9iZTo6U3RhdGUq
IGFyZy4KIAotICAgICJjYWxsICoiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5D
VElPTl9PRkZTRVQpICIoJWVicCkiICJcbiIKKyAgICAiY2FsbCAqIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfRVhFQ1VUT1JfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAKICAgICAvLyBNYWtlIHN1
cmUgdGhlIFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBv
aW50ZXIgc28KICAgICAvLyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VydmVk
IHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNrCkBAIC0zMzYsMTAgKzM0NywxNiBAQCBl
eHRlcm4gIkMiIF9fZGVjbHNwZWMobmFrZWQpIHZvaWQgY3RpTWFzCiAgICAgICAgIC8vIHRoaXM6
CiAgICAgICAgIC8vICAgICBlc3BbMCAqIHB0clNpemVdOiBlZmxhZ3MKICAgICAgICAgLy8gICAg
IGVzcFsxICogcHRyU2l6ZV06IHJldHVybiBhZGRyZXNzIC8gc2F2ZWQgZWlwCi0gICAgICAgIC8v
ICAgICBlc3BbMiAqIHB0clNpemVdOiBwcm9iZSBoYW5kbGVyIGZ1bmN0aW9uCi0gICAgICAgIC8v
ICAgICBlc3BbMyAqIHB0clNpemVdOiBwcm9iZSBhcmcKLSAgICAgICAgLy8gICAgIGVzcFs0ICog
cHRyU2l6ZV06IHNhdmVkIGVheAotICAgICAgICAvLyAgICAgZXNwWzUgKiBwdHJTaXplXTogc2F2
ZWQgZXNwCisgICAgICAgIC8vICAgICBlc3BbMiAqIHB0clNpemVdOiBzYXZlZCBlYngKKyAgICAg
ICAgLy8gICAgIGVzcFszICogcHRyU2l6ZV06IHNhdmVkIGVkeAorICAgICAgICAvLyAgICAgZXNw
WzQgKiBwdHJTaXplXTogc2F2ZWQgZWN4CisgICAgICAgIC8vICAgICBlc3BbNSAqIHB0clNpemVd
OiBzYXZlZCBlYXgKKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW5jb21pbmcgcmVnaXN0ZXJzIGNv
bnRhaW46CisgICAgICAgIC8vICAgICBlY3g6IFByb2JlOjpleGVjdXRlUHJvYmUKKyAgICAgICAg
Ly8gICAgIGVkeDogcHJvYmUgZnVuY3Rpb24KKyAgICAgICAgLy8gICAgIGVieDogcHJvYmUgYXJn
CisgICAgICAgIC8vICAgICBlYXg6IHNjcmF0Y2ggKHdhcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
KQogCiAgICAgICAgIG1vdiBlYXgsIGVzcAogICAgICAgICBzdWIgZXNwLCBQUk9CRV9TSVpFICsg
T1VUX1NJWkUKQEAgLTM1MCw5ICszNjcsOSBAQCBleHRlcm4gIkMiIF9fZGVjbHNwZWMobmFrZWQp
IHZvaWQgY3RpTWFzCiAgICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VCUF9PRkZTRVQgKyBlc3BdLCBl
YnAKICAgICAgICAgbW92IGVicCwgZXNwIC8vIFNhdmUgdGhlIFByb2JlQ29udGV4dCouCiAKLSAg
ICAgICAgbW92IFtQUk9CRV9DUFVfRUNYX09GRlNFVCArIGVicF0sIGVjeAotICAgICAgICBtb3Yg
W1BST0JFX0NQVV9FRFhfT0ZGU0VUICsgZWJwXSwgZWR4Ci0gICAgICAgIG1vdiBbUFJPQkVfQ1BV
X0VCWF9PRkZTRVQgKyBlYnBdLCBlYngKKyAgICAgICAgbW92IFtQUk9CRV9FWEVDVVRPUl9PRkZT
RVQgKyBlYnBdLCBlY3gKKyAgICAgICAgbW92IFtQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQg
KyBlYnBdLCBlZHgKKyAgICAgICAgbW92IFtQUk9CRV9BUkdfT0ZGU0VUICsgZWJwXSwgZWJ4CiAg
ICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VTSV9PRkZTRVQgKyBlYnBdLCBlc2kKICAgICAgICAgbW92
IFtQUk9CRV9DUFVfRURJX09GRlNFVCArIGVicF0sIGVkaQogCkBAIC0zNjEsMTIgKzM3OCwxNiBA
QCBleHRlcm4gIkMiIF9fZGVjbHNwZWMobmFrZWQpIHZvaWQgY3RpTWFzCiAgICAgICAgIG1vdiBl
Y3gsIFsxICogUFRSX1NJWkUgKyBlYXhdCiAgICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VJUF9PRkZT
RVQgKyBlYnBdLCBlY3gKICAgICAgICAgbW92IGVjeCwgWzIgKiBQVFJfU0laRSArIGVheF0KLSAg
ICAgICAgbW92IFtQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQgKyBlYnBdLCBlY3gKKyAgICAg
ICAgbW92IFtQUk9CRV9DUFVfRUJYX09GRlNFVCArIGVicF0sIGVjeAogICAgICAgICBtb3YgZWN4
LCBbMyAqIFBUUl9TSVpFICsgZWF4XQotICAgICAgICBtb3YgW1BST0JFX0FSR19PRkZTRVQgKyBl
YnBdLCBlY3gKKyAgICAgICAgbW92IFtQUk9CRV9DUFVfRURYX09GRlNFVCArIGVicF0sIGVjeAog
ICAgICAgICBtb3YgZWN4LCBbNCAqIFBUUl9TSVpFICsgZWF4XQotICAgICAgICBtb3YgW1BST0JF
X0NQVV9FQVhfT0ZGU0VUICsgZWJwXSwgZWN4CisgICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VDWF9P
RkZTRVQgKyBlYnBdLCBlY3gKICAgICAgICAgbW92IGVjeCwgWzUgKiBQVFJfU0laRSArIGVheF0K
KyAgICAgICAgbW92IFtQUk9CRV9DUFVfRUFYX09GRlNFVCArIGVicF0sIGVjeAorCisgICAgICAg
IG1vdiBlY3gsIGVheAorICAgICAgICBhZGQgZWN4LCA2ICogUFRSX1NJWkUKICAgICAgICAgbW92
IFtQUk9CRV9DUFVfRVNQX09GRlNFVCArIGVicF0sIGVjeAogCiAgICAgICAgIG1vdnEgcXdvcmQg
cHRyW1BST0JFX0NQVV9YTU0wX09GRlNFVCArIGVicF0sIHhtbTAKQEAgLTM3OCwxNSArMzk5LDEy
IEBAIGV4dGVybiAiQyIgX19kZWNsc3BlYyhuYWtlZCkgdm9pZCBjdGlNYXMKICAgICAgICAgbW92
cSBxd29yZCBwdHJbUFJPQkVfQ1BVX1hNTTZfT0ZGU0VUICsgZWJwXSwgeG1tNgogICAgICAgICBt
b3ZxIHF3b3JkIHB0cltQUk9CRV9DUFVfWE1NN19PRkZTRVQgKyBlYnBdLCB4bW03CiAKLSAgICAg
ICAgeG9yIGVheCwgZWF4Ci0gICAgICAgIG1vdiBbUFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9P
RkZTRVQgKyBlYnBdLCBlYXgKLQogICAgICAgICAvLyBSZXNlcnZlIHN0YWNrIHNwYWNlIGZvciB0
aGUgYXJnIHdoaWxlIG1haW50YWluaW5nIHRoZSByZXF1aXJlZCBzdGFjawogICAgICAgICAvLyBw
b2ludGVyIDMyIGJ5dGUgYWxpZ25tZW50OgogICAgICAgICBzdWIgZXNwLCAweDIwCiAgICAgICAg
IG1vdiBbMCArIGVzcF0sIGVicCAvLyB0aGUgUHJvYmVDb250ZXh0KiBhcmcuCiAKLSAgICAgICAg
Y2FsbCBbUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUICsgZWJwXQorICAgICAgICBjYWxsIFtQ
Uk9CRV9FWEVDVVRPUl9PRkZTRVQgKyBlYnBdCiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBQ
cm9iZUNvbnRleHQgaXMgZW50aXJlbHkgYmVsb3cgdGhlIHJlc3VsdCBzdGFjayBwb2ludGVyIHNv
CiAgICAgICAgIC8vIHRoYXQgcmVnaXN0ZXIgdmFsdWVzIGFyZSBzdGlsbCBwcmVzZXJ2ZWQgd2hl
biB3ZSBjYWxsIHRoZSBpbml0aWFsaXplU3RhY2sKQEAgLTQ4NCw3ICs1MDIsNyBAQCBleHRlcm4g
IkMiIF9fZGVjbHNwZWMobmFrZWQpIHZvaWQgY3RpTWFzCiAgICAgICAgIHJldAogICAgIH0KIH0K
LSNlbmRpZgorI2VuZGlmIC8vIENPTVBJTEVSKE1TVkMpCiAKICNlbmRpZiAvLyBDUFUoWDg2KQog
CkBAIC00OTgsMTQgKzUxNiwxOSBAQCBhc20gKAogICAgICJwdXNoZnEiICJcbiIKIAogICAgIC8v
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpwcm9iZSgpIGhhcyBhbHJlYWR5IGdlbmVyYXRlZCBj
b2RlIHRvIHN0b3JlIHNvbWUgdmFsdWVzLgotICAgIC8vIFRvZ2V0aGVyIHdpdGggdGhlIHJmbGFn
cyBwdXNoZWQgYWJvdmUsIHRoZSB0b3Agb2Ygc3RhY2sgbm93IGxvb2tzIGxpa2UKLSAgICAvLyB0
aGlzOgotICAgIC8vICAgICBlc3BbMCAqIHB0clNpemVdOiByZmxhZ3MKLSAgICAvLyAgICAgZXNw
WzEgKiBwdHJTaXplXTogcmV0dXJuIGFkZHJlc3MgLyBzYXZlZCByaXAKLSAgICAvLyAgICAgZXNw
WzIgKiBwdHJTaXplXTogcHJvYmUgaGFuZGxlciBmdW5jdGlvbgotICAgIC8vICAgICBlc3BbMyAq
IHB0clNpemVdOiBwcm9iZSBhcmcKLSAgICAvLyAgICAgZXNwWzQgKiBwdHJTaXplXTogc2F2ZWQg
cmF4Ci0gICAgLy8gICAgIGVzcFs1ICogcHRyU2l6ZV06IHNhdmVkIHJzcAorICAgIC8vIFRvZ2V0
aGVyIHdpdGggdGhlIHJmbGFncyBwdXNoZWQgYWJvdmUsIHRoZSB0b3Agb2Ygc3RhY2sgbm93IGxv
b2tzIGxpa2UgdGhpczoKKyAgICAvLyAgICAgcnNwWzAgKiBwdHJTaXplXTogcmZsYWdzCisgICAg
Ly8gICAgIHJzcFsxICogcHRyU2l6ZV06IHJldHVybiBhZGRyZXNzIC8gc2F2ZWQgcmlwCisgICAg
Ly8gICAgIHJzcFsyICogcHRyU2l6ZV06IHNhdmVkIHJieAorICAgIC8vICAgICByc3BbMyAqIHB0
clNpemVdOiBzYXZlZCByZHgKKyAgICAvLyAgICAgcnNwWzQgKiBwdHJTaXplXTogc2F2ZWQgcmN4
CisgICAgLy8gICAgIHJzcFs1ICogcHRyU2l6ZV06IHNhdmVkIHJheAorICAgIC8vCisgICAgLy8g
SW5jb21pbmcgcmVnaXN0ZXJzIGNvbnRhaW46CisgICAgLy8gICAgIHJjeDogUHJvYmU6OmV4ZWN1
dGVQcm9iZQorICAgIC8vICAgICByZHg6IHByb2JlIGZ1bmN0aW9uCisgICAgLy8gICAgIHJieDog
cHJvYmUgYXJnCisgICAgLy8gICAgIHJheDogc2NyYXRjaCAod2FzIGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUpCiAKICAgICAibW92cSAlcnNwLCAlcmF4IiAiXG4iCiAgICAgInN1YnEgJCIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIiwgJXJzcCIgIlxuIgpAQCAtNTE3
LDkgKzU0MCw5IEBAIGFzbSAoCiAgICAgIm1vdnEgJXJicCwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX0VCUF9PRkZTRVQpICIoJXJzcCkiICJcbiIKICAgICAibW92cSAlcnNwLCAlcmJw
IiAiXG4iIC8vIFNhdmUgdGhlIFByb2JlOjpTdGF0ZSouCiAKLSAgICAibW92cSAlcmN4LCAiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUNYX09GRlNFVCkgIiglcmJwKSIgIlxuIgotICAg
ICJtb3ZxICVyZHgsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FRFhfT0ZGU0VUKSAi
KCVyYnApIiAiXG4iCi0gICAgIm1vdnEgJXJieCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX0VCWF9PRkZTRVQpICIoJXJicCkiICJcbiIKKyAgICAibW92cSAlcmN4LCAiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9FWEVDVVRPUl9PRkZTRVQpICIoJXJicCkiICJcbiIKKyAgICAibW92
cSAlcmR4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQp
ICIoJXJicCkiICJcbiIKKyAgICAibW92cSAlcmJ4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9BUkdfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCiAgICAgIm1vdnEgJXJzaSwgIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX0VTSV9PRkZTRVQpICIoJXJicCkiICJcbiIKICAgICAibW92cSAl
cmRpLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRURJX09GRlNFVCkgIiglcmJwKSIg
IlxuIgogCkBAIC01MjgsMTIgKzU1MSwxNiBAQCBhc20gKAogICAgICJtb3ZxIDEgKiAiIFNUUklO
R0laRV9WQUxVRV9PRihQVFJfU0laRSkgIiglcmF4KSwgJXJjeCIgIlxuIgogICAgICJtb3ZxICVy
Y3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FSVBfT0ZGU0VUKSAiKCVyYnApIiAi
XG4iCiAgICAgIm1vdnEgMiAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiKCVyYXgp
LCAlcmN4IiAiXG4iCi0gICAgIm1vdnEgJXJjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
UFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiKCVyYnApIiAiXG4iCisgICAgIm1vdnEgJXJjeCwgIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VCWF9PRkZTRVQpICIoJXJicCkiICJcbiIKICAg
ICAibW92cSAzICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICIoJXJheCksICVyY3gi
ICJcbiIKLSAgICAibW92cSAlcmN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9BUkdfT0ZG
U0VUKSAiKCVyYnApIiAiXG4iCisgICAgIm1vdnEgJXJjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX0VEWF9PRkZTRVQpICIoJXJicCkiICJcbiIKICAgICAibW92cSA0ICogIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICIoJXJheCksICVyY3giICJcbiIKLSAgICAibW92cSAl
cmN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUFYX09GRlNFVCkgIiglcmJwKSIg
IlxuIgorICAgICJtb3ZxICVyY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQ1hf
T0ZGU0VUKSAiKCVyYnApIiAiXG4iCiAgICAgIm1vdnEgNSAqICIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBUUl9TSVpFKSAiKCVyYXgpLCAlcmN4IiAiXG4iCisgICAgIm1vdnEgJXJjeCwgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VBWF9PRkZTRVQpICIoJXJicCkiICJcbiIKKworICAgICJt
b3ZxICVyYXgsICVyY3giICJcbiIKKyAgICAiYWRkcSAkIiBTVFJJTkdJWkVfVkFMVUVfT0YoNiAq
IFBUUl9TSVpFKSAiLCAlcmN4IiAiXG4iCiAgICAgIm1vdnEgJXJjeCwgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0VTUF9PRkZTRVQpICIoJXJicCkiICJcbiIKIAogICAgICJtb3ZxICVy
OCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1I4X09GRlNFVCkgIiglcmJwKSIgIlxu
IgpAQCAtNTYyLDExICs1ODksOCBAQCBhc20gKAogICAgICJtb3ZxICV4bW0xNCwgIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1hNTTE0X09GRlNFVCkgIiglcmJwKSIgIlxuIgogICAgICJt
b3ZxICV4bW0xNSwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1hNTTE1X09GRlNFVCkg
IiglcmJwKSIgIlxuIgogCi0gICAgInhvcnEgJXJheCwgJXJheCIgIlxuIgotICAgICJtb3ZxICVy
YXgsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05fT0ZGU0VU
KSAiKCVyYnApIiAiXG4iCi0KICAgICAibW92cSAlcmJwLCAlcmRpIiAiXG4iIC8vIHRoZSBQcm9i
ZTo6U3RhdGUqIGFyZy4KLSAgICAiY2FsbCAqIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJP
QkVfRlVOQ1RJT05fT0ZGU0VUKSAiKCVyYnApIiAiXG4iCisgICAgImNhbGwgKiIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0VYRUNVVE9SX09GRlNFVCkgIiglcmJwKSIgIlxuIgogCiAgICAgLy8g
TWFrZSBzdXJlIHRoZSBQcm9iZTo6U3RhdGUgaXMgZW50aXJlbHkgYmVsb3cgdGhlIHJlc3VsdCBz
dGFjayBwb2ludGVyIHNvCiAgICAgLy8gdGhhdCByZWdpc3RlciB2YWx1ZXMgYXJlIHN0aWxsIHBy
ZXNlcnZlZCB3aGVuIHdlIGNhbGwgdGhlIGluaXRpYWxpemVTdGFjawpAQCAtNzMxLDEzICs3NTUs
MTQgQEAgZXh0ZXJuICJDIiB2b2lkIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUoKQogCiB2b2lkIE1h
Y3JvQXNzZW1ibGVyOjpwcm9iZShQcm9iZTo6RnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZykK
IHsKLSAgICBwdXNoKFJlZ2lzdGVySUQ6OmVzcCk7Ci0gICAgcHVzaChSZWdpc3RlcklEOjplYXgp
OwotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmcpLCBSZWdpc3RlcklEOjplYXgpOwotICAgIHB1
c2goUmVnaXN0ZXJJRDo6ZWF4KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZnVuY3Rpb24pKSwgUmVnaXN0ZXJJRDo6ZWF4KTsKICAgICBwdXNoKFJlZ2lz
dGVySUQ6OmVheCk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpKSwgUmVnaXN0ZXJJRDo6ZWF4KTsKKyAgICBwdXNo
KFJlZ2lzdGVySUQ6OmVjeCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KFByb2JlOjpleGVjdXRlUHJvYmUpKSwgUmVnaXN0ZXJJRDo6ZWN4KTsKKyAgICBw
dXNoKFJlZ2lzdGVySUQ6OmVkeCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSksIFJlZ2lzdGVySUQ6OmVkeCk7CisgICAgcHVzaChSZWdp
c3RlcklEOjplYngpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmcpLCBSZWdpc3RlcklEOjpl
YngpOwogICAgIGNhbGwoUmVnaXN0ZXJJRDo6ZWF4KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUFT
TV9QUk9CRSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJpbnRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJpbnRlci5o
CShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1By
aW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIG5hbWVzcGFjZSBQcm9iZSB7Ci1zdHJ1Y3QgU3RhdGU7CitjbGFzcyBDb250ZXh0OwogfSAv
LyBuYW1lc3BhY2UgUHJvYmUKIAogbmFtZXNwYWNlIFByaW50ZXIgewpAQCAtODYsMTIgKzg2LDEy
IEBAIHVuaW9uIERhdGEgewogfTsKIAogc3RydWN0IENvbnRleHQgewotICAgIENvbnRleHQoUHJv
YmU6OlN0YXRlJiBwcm9iZUNvbnRleHQsIERhdGEmIGRhdGEpCisgICAgQ29udGV4dChQcm9iZTo6
Q29udGV4dCYgcHJvYmVDb250ZXh0LCBEYXRhJiBkYXRhKQogICAgICAgICA6IHByb2JlQ29udGV4
dChwcm9iZUNvbnRleHQpCiAgICAgICAgICwgZGF0YShkYXRhKQogICAgIHsgfQogCi0gICAgUHJv
YmU6OlN0YXRlJiBwcm9iZUNvbnRleHQ7CisgICAgUHJvYmU6OkNvbnRleHQmIHByb2JlQ29udGV4
dDsKICAgICBEYXRhJiBkYXRhOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Qcm9iZUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgUHJvYmUgeworCitzdGF0aWMgdm9pZCBmbHVzaERp
cnR5U3RhY2tQYWdlcyhTdGF0ZSopOworCit2b2lkIGV4ZWN1dGVQcm9iZShTdGF0ZSogc3RhdGUp
Cit7CisgICAgQ29udGV4dCBjb250ZXh0KHN0YXRlKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgYXV0
byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgdm9pZCogb3JpZ2luYWxMUiA9IGNwdS5ncHI8dm9p
ZCo+KEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgdm9pZCogb3JpZ2luYWxQQyA9IGNwdS5wYygp
OworI2VuZGlmCisKKyAgICBzdGF0ZS0+aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gPSBudWxscHRy
OworICAgIHN0YXRlLT5pbml0aWFsaXplU3RhY2tBcmcgPSBudWxscHRyOworICAgIHN0YXRlLT5w
cm9iZUZ1bmN0aW9uKGNvbnRleHQpOworCisjaWYgQ1BVKEFSTTY0KQorICAgIC8vIFRoZSBBUk02
NCBwcm9iZSB0cmFtcG9saW5lIGRvZXMgbm90IHN1cHBvcnQgY2hhbmdpbmcgYm90aCBsciBhbmQg
cGMuCisgICAgUkVMRUFTRV9BU1NFUlQob3JpZ2luYWxQQyA9PSBjcHUucGMoKSB8fCBvcmlnaW5h
bExSID09IGNwdS5ncHI8dm9pZCo+KEFSTTY0UmVnaXN0ZXJzOjpscikpOworI2VuZGlmCisKKyAg
ICBpZiAoY29udGV4dC5oYXNXcml0ZXNUb0ZsdXNoKCkpIHsKKyAgICAgICAgY29udGV4dC5zdGFj
aygpLnNldE5ld1N0YWNrUG9pbnRlcihzdGF0ZS0+Y3B1LnNwKCkpOworICAgICAgICBzdGF0ZS0+
Y3B1LnNwKCkgPSBzdGQ6Om1pbihjb250ZXh0LnN0YWNrKCkubG93V2F0ZXJtYXJrKCksIHN0YXRl
LT5jcHUuc3AoKSk7CisKKyAgICAgICAgc3RhdGUtPmluaXRpYWxpemVTdGFja0Z1bmN0aW9uID0g
Zmx1c2hEaXJ0eVN0YWNrUGFnZXM7CisgICAgICAgIHN0YXRlLT5pbml0aWFsaXplU3RhY2tBcmcg
PSBjb250ZXh0LnJlbGVhc2VTdGFjaygpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZmx1c2hE
aXJ0eVN0YWNrUGFnZXMoU3RhdGUqIHN0YXRlKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGFj
az4gc3RhY2socmVpbnRlcnByZXRfY2FzdDxQcm9iZTo6U3RhY2sqPihzdGF0ZS0+aW5pdGlhbGl6
ZVN0YWNrQXJnKSk7CisgICAgc3RhY2stPmZsdXNoV3JpdGVzKCk7CisgICAgc3RhdGUtPmNwdS5z
cCgpID0gc3RhY2stPm5ld1N0YWNrUG9pbnRlcigpOworfQorCisvLyBOb3QgZm9yIGdlbmVyYWwg
dXNlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGZvciB3cml0aW5nIHRlc3RzLgorSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCogcHJvYmVTdGF0ZUZvckNvbnRleHQoQ29udGV4dCYpOwordm9pZCogcHJvYmVT
dGF0ZUZvckNvbnRleHQoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gY29udGV4dC5t
X3N0YXRlOworfQorCit9IC8vIG5hbWVzcGFjZSBQcm9iZQorfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJQcm9iZVN0YWNrLmgiCisKK25hbWVzcGFjZSBK
U0MgeworbmFtZXNwYWNlIFByb2JlIHsKKworc3RydWN0IENQVVN0YXRlIHsKKyAgICB1c2luZyBS
ZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ7CisgICAgdXNpbmcgU1BSZWdp
c3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OlNQUmVnaXN0ZXJJRDsKKyAgICB1c2luZyBGUFJlZ2lz
dGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEOworCisgICAgc3RhdGljIGlubGlu
ZSBjb25zdCBjaGFyKiBncHJOYW1lKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyOjpncHJOYW1lKGlkKTsgfQorICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogc3ByTmFt
ZShTUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpzcHJOYW1lKGlkKTsg
fQorICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogZnByTmFtZShGUFJlZ2lzdGVySUQgaWQp
IHsgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpmcHJOYW1lKGlkKTsgfQorICAgIGlubGluZSB1aW50
cHRyX3QmIGdwcihSZWdpc3RlcklEKTsKKyAgICBpbmxpbmUgdWludHB0cl90JiBzcHIoU1BSZWdp
c3RlcklEKTsKKyAgICBpbmxpbmUgZG91YmxlJiBmcHIoRlBSZWdpc3RlcklEKTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdy
YWw8VD46OnZhbHVlPjo6dHlwZSogPSBudWxscHRyPgorICAgIFQgZ3ByKFJlZ2lzdGVySUQpIGNv
bnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+CisgICAgVCBncHIoUmVn
aXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Cisg
ICAgVCBzcHIoU1BSZWdpc3RlcklEKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSog
PSBudWxscHRyPgorICAgIFQgc3ByKFNQUmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gVCBmcHIoRlBSZWdpc3RlcklEKSBjb25zdDsKKworICAgIHZvaWQqJiBwYygp
OworICAgIHZvaWQqJiBmcCgpOworICAgIHZvaWQqJiBzcCgpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFQgcGMoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwKCkgY29u
c3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBzcCgpIGNvbnN0OworCisgICAgdWludHB0
cl90IGdwcnNbTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCldOworICAgIHVpbnRw
dHJfdCBzcHJzW01hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlNQUmVnaXN0ZXJzKCldOworICAgIGRv
dWJsZSBmcHJzW01hY3JvQXNzZW1ibGVyOjpudW1iZXJPZkZQUmVnaXN0ZXJzKCldOworfTsKKwor
aW5saW5lIHVpbnRwdHJfdCYgQ1BVU3RhdGU6OmdwcihSZWdpc3RlcklEIGlkKQoreworICAgIEFT
U0VSVChpZCA+PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpICYmIGlkIDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKSk7CisgICAgcmV0dXJuIGdwcnNbaWRdOworfQorCitp
bmxpbmUgdWludHB0cl90JiBDUFVTdGF0ZTo6c3ByKFNQUmVnaXN0ZXJJRCBpZCkKK3sKKyAgICBB
U1NFUlQoaWQgPj0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0U1BSZWdpc3RlcigpICYmIGlkIDw9IE1h
Y3JvQXNzZW1ibGVyOjpsYXN0U1BSZWdpc3RlcigpKTsKKyAgICByZXR1cm4gc3Byc1tpZF07Cit9
CisKK2lubGluZSBkb3VibGUmIENQVVN0YXRlOjpmcHIoRlBSZWdpc3RlcklEIGlkKQoreworICAg
IEFTU0VSVChpZCA+PSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCkgJiYgaWQgPD0g
TWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCkpOworICAgIHJldHVybiBmcHJzW2lkXTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKj4KK1QgQ1BVU3RhdGU6OmdwcihSZWdpc3RlcklE
IGlkKSBjb25zdAoreworICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4o
dGhpcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNwdS0+Z3ByKGlkKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxUPjo6dmFsdWU+Ojp0eXBlKj4KK1QgQ1BVU3RhdGU6OmdwcihSZWdpc3RlcklEIGlkKSBjb25z
dAoreworICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5ncHIoaWQpKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxU
Pjo6dmFsdWU+Ojp0eXBlKj4KK1QgQ1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpIGNvbnN0
Cit7CisgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oY3B1LT5zcHIoaWQpKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1
ZT46OnR5cGUqPgorVCBDUFVTdGF0ZTo6c3ByKFNQUmVnaXN0ZXJJRCBpZCkgY29uc3QKK3sKKyAg
ICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+c3ByKGlkKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+CitUIENQVVN0YXRlOjpmcHIoRlBSZWdpc3RlcklEIGlkKSBjb25zdAoreworICAgIENQ
VVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7CisgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxUPihjcHUtPmZwcihpZCkpOworfQorCitpbmxpbmUgdm9pZComIENQVVN0YXRl
OjpwYygpCit7CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gKnJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmc3ByKFg4NlJlZ2lzdGVyczo6ZWlwKSk7CisjZWxpZiBDUFUo
QVJNNjQpCisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnNwcihBUk02NFJl
Z2lzdGVyczo6cGMpKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElP
TkFMKQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNUmVnaXN0
ZXJzOjpwYykpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIENQVSIKKyNlbmRpZgorfQorCitpbmxp
bmUgdm9pZComIENQVVN0YXRlOjpmcCgpCit7CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkK
KyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKFg4NlJlZ2lzdGVyczo6
ZWJwKSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZv
aWQqKj4oJmdwcihBUk02NFJlZ2lzdGVyczo6ZnApKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKSB8
fCBDUFUoQVJNX1RSQURJVElPTkFMKQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kio+KCZncHIoQVJNUmVnaXN0ZXJzOjpmcCkpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJu
ICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVnaXN0ZXJzOjpmcCkpOworI2Vs
c2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgQ1BVIgorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiYg
Q1BVU3RhdGU6OnNwKCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgIHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoWDg2UmVnaXN0ZXJzOjplc3ApKTsKKyNl
bGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3By
KEFSTTY0UmVnaXN0ZXJzOjpzcCkpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1f
VFJBRElUSU9OQUwpCisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihB
Uk1SZWdpc3RlcnM6OnNwKSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKE1JUFNSZWdpc3RlcnM6OnNwKSk7CisjZWxzZQorI2Vycm9y
ICJVbnN1cHBvcnRlZCBDUFUiCisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Qg
Q1BVU3RhdGU6OnBjKCkgY29uc3QKK3sKKyAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxD
UFVTdGF0ZSo+KHRoaXMpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNwdS0+cGMo
KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUIENQVVN0YXRlOjpmcCgpIGNvbnN0Cit7
CisgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPmZwKCkpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorVCBDUFVTdGF0ZTo6c3AoKSBjb25zdAoreworICAgIENQVVN0YXRlKiBjcHUgPSBj
b25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
VD4oY3B1LT5zcCgpKTsKK30KKworc3RydWN0IFN0YXRlOwordHlwZWRlZiB2b2lkICgqU3RhY2tJ
bml0aWFsaXphdGlvbkZ1bmN0aW9uKShTdGF0ZSopOworCitzdHJ1Y3QgU3RhdGUgeworICAgIFBy
b2JlOjpGdW5jdGlvbiBwcm9iZUZ1bmN0aW9uOworICAgIHZvaWQqIGFyZzsKKyAgICBTdGFja0lu
aXRpYWxpemF0aW9uRnVuY3Rpb24gaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb247CisgICAgdm9pZCog
aW5pdGlhbGl6ZVN0YWNrQXJnOworICAgIENQVVN0YXRlIGNwdTsKK307CisKK2NsYXNzIENvbnRl
eHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHVzaW5nIFJl
Z2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRDsKKyAgICB1c2luZyBTUFJlZ2lz
dGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEOworICAgIHVzaW5nIEZQUmVnaXN0
ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ7CisKKyAgICBDb250ZXh0KFN0YXRl
KiBzdGF0ZSkKKyAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgICAgICAsIGFyZyhzdGF0ZS0+
YXJnKQorICAgICAgICAsIGNwdShzdGF0ZS0+Y3B1KQorICAgIHsgfQorCisgICAgdWludHB0cl90
JiBncHIoUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmdwcihpZCk7IH0KKyAg
ICB1aW50cHRyX3QmIHNwcihTUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5z
cHIoaWQpOyB9CisgICAgZG91YmxlJiBmcHIoRlBSZWdpc3RlcklEIGlkKSB7IHJldHVybiBtX3N0
YXRlLT5jcHUuZnByKGlkKTsgfQorICAgIGNvbnN0IGNoYXIqIGdwck5hbWUoUmVnaXN0ZXJJRCBp
ZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1Lmdwck5hbWUoaWQpOyB9CisgICAgY29uc3QgY2hhciog
c3ByTmFtZShTUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5zcHJOYW1lKGlk
KTsgfQorICAgIGNvbnN0IGNoYXIqIGZwck5hbWUoRlBSZWdpc3RlcklEIGlkKSB7IHJldHVybiBt
X3N0YXRlLT5jcHUuZnByTmFtZShpZCk7IH0KKworICAgIHZvaWQqJiBwYygpIHsgcmV0dXJuIG1f
c3RhdGUtPmNwdS5wYygpOyB9CisgICAgdm9pZComIGZwKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1
LmZwKCk7IH0KKyAgICB2b2lkKiYgc3AoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuc3AoKTsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBwYygpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5w
YzxUPigpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmcCgpIHsgcmV0dXJuIG1fc3Rh
dGUtPmNwdS5mcDxUPigpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBzcCgpIHsgcmV0
dXJuIG1fc3RhdGUtPmNwdS5zcDxUPigpOyB9CisKKyAgICBTdGFjayYgc3RhY2soKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG1fc3RhY2suaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc3Rh
Y2s7CisgICAgfTsKKworICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIHsgcmV0dXJuIG1fc3Rh
Y2suaGFzV3JpdGVzVG9GbHVzaCgpOyB9CisgICAgU3RhY2sqIHJlbGVhc2VTdGFjaygpIHsgcmV0
dXJuIG5ldyBTdGFjayhXVEZNb3ZlKG1fc3RhY2spKTsgfQorCitwcml2YXRlOgorICAgIFN0YXRl
KiBtX3N0YXRlOworcHVibGljOgorICAgIHZvaWQqIGFyZzsKKyAgICBDUFVTdGF0ZSYgY3B1Owor
Citwcml2YXRlOgorICAgIFN0YWNrIG1fc3RhY2s7CisKKyAgICBmcmllbmQgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCogcHJvYmVTdGF0ZUZvckNvbnRleHQoQ29udGV4dCYpOyAvLyBOb3QgZm9yIGdl
bmVyYWwgdXNlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGZvciB3cml0aW5nIHRlc3RzLgorfTsKKwor
dm9pZCBleGVjdXRlUHJvYmUoU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgUHJvYmUKKworfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1By
b2JlU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUHJvYmVTdGFjay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQcm9iZVN0YWNrLmgiCisKKyNpbmNsdWRlIDxtZW1vcnk+
CisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIFByb2JlIHsKKworUGFnZTo6UGFnZSh2b2lk
KiBiYXNlQWRkcmVzcykKKyAgICA6IG1fYmFzZUxvZ2ljYWxBZGRyZXNzKGJhc2VBZGRyZXNzKQor
eworICAgIG1lbWNweSgmbV9idWZmZXIsIGJhc2VBZGRyZXNzLCBzX3BhZ2VTaXplKTsKK30KKwor
dm9pZCBQYWdlOjpmbHVzaFdyaXRlcygpCit7CisgICAgdWludHB0cl90IGRpcnR5Qml0cyA9IG1f
ZGlydHlCaXRzOworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIHdoaWxlIChkaXJ0eUJpdHMp
IHsKKyAgICAgICAgLy8gRmluZCBzdGFydC4KKyAgICAgICAgaWYgKGRpcnR5Qml0cyAmIDEpIHsK
KyAgICAgICAgICAgIHNpemVfdCBzdGFydE9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgICAgIC8v
IEZpbmQgZW5kLgorICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGRpcnR5Qml0cyA9
IGRpcnR5Qml0cyA+PiAxOworICAgICAgICAgICAgICAgIG9mZnNldCArPSBzX2NodW5rU2l6ZTsK
KyAgICAgICAgICAgIH0gd2hpbGUgKGRpcnR5Qml0cyAmIDEpOworCisgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSA9IG9mZnNldCAtIHN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgdWludDhfdCogc3Jj
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVyKSArIHN0YXJ0T2Zmc2V0Owor
ICAgICAgICAgICAgdWludDhfdCogZHN0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9i
YXNlTG9naWNhbEFkZHJlc3MpICsgc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICBtZW1jcHkoZHN0
LCBzcmMsIHNpemUpOworICAgICAgICB9CisgICAgICAgIGRpcnR5Qml0cyA9IGRpcnR5Qml0cyA+
PiAxOworICAgICAgICBvZmZzZXQgKz0gc19jaHVua1NpemU7CisgICAgfQorICAgIG1fZGlydHlC
aXRzID0gMDsKK30KKworU3RhY2s6OlN0YWNrKFN0YWNrJiYgb3RoZXIpCisgICAgOiBtX25ld1N0
YWNrUG9pbnRlcihvdGhlci5tX25ld1N0YWNrUG9pbnRlcikKKyAgICAsIG1fbG93V2F0ZXJtYXJr
KG90aGVyLm1fbG93V2F0ZXJtYXJrKQorICAgICwgbV9zdGFja0JvdW5kcyhXVEZNb3ZlKG90aGVy
Lm1fc3RhY2tCb3VuZHMpKQorICAgICwgbV9wYWdlcyhXVEZNb3ZlKG90aGVyLm1fcGFnZXMpKQor
eworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBvdGhlci5tX2lzVmFsaWQgPSBmYWxzZTsKKyNl
bmRpZgorfQorCitib29sIFN0YWNrOjpoYXNXcml0ZXNUb0ZsdXNoKCkKK3sKKyAgICByZXR1cm4g
c3RkOjphbnlfb2YobV9wYWdlcy5iZWdpbigpLCBtX3BhZ2VzLmVuZCgpLCBbXSAoYXV0byYgaXQp
IHsgcmV0dXJuIGl0LnZhbHVlLT5oYXNXcml0ZXNUb0ZsdXNoKCk7IH0pOworfQorCit2b2lkIFN0
YWNrOjpmbHVzaFdyaXRlcygpCit7CisgICAgZm9yIChhdXRvIGl0ID0gbV9wYWdlcy5iZWdpbigp
OyBpdCAhPSBtX3BhZ2VzLmVuZCgpOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPmZsdXNoV3Jp
dGVzSWZOZWVkZWQoKTsKK30KKworUGFnZSogU3RhY2s6OmVuc3VyZVBhZ2VGb3Iodm9pZCogYWRk
cmVzcykKK3sKKyAgICAvLyBTaW5jZSB0aGUgbWFjaGluZSBzdGFjayBpcyBhbHdheXMgYWxsb2Nh
dGVkIGluIHVuaXRzIG9mIHdob2xlIHBhZ2VzLCBhc3NlcnRpbmcKKyAgICAvLyB0aGF0IHRoZSBh
ZGRyZXNzIGlzIGNvbnRhaW5lZCBpbiB0aGUgc3RhY2sgaXMgc3VmZmljaWVudCB0byBpbmZlciB0
aGF0IGl0cyBwYWdlCisgICAgLy8gaXMgYWxzbyBjb250YWluZWQgaW4gdGhlIHN0YWNrLgorICAg
IFJFTEVBU0VfQVNTRVJUKG1fc3RhY2tCb3VuZHMuY29udGFpbnMoYWRkcmVzcykpOworCisgICAg
Ly8gV2UgbWF5IGhhdmUgZ290dGVuIGhlcmUgYmVjYXVzZSBvZiBhIGNhY2hlIG1pc3MuIFNvLCBs
b29rIHVwIHRoZSBwYWdlIGZpcnN0CisgICAgLy8gYmVmb3JlIGFsbG9jYXRpbmcgYSBuZXcgb25l
LAorICAgIHZvaWQqIGJhc2VBZGRyZXNzID0gUGFnZTo6YmFzZUFkZHJlc3NGb3IoYWRkcmVzcyk7
CisgICAgYXV0byBpdCA9IG1fcGFnZXMuZmluZChiYXNlQWRkcmVzcyk7CisgICAgaWYgKExJS0VM
WShpdCAhPSBtX3BhZ2VzLmVuZCgpKSkKKyAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gaXQt
PnZhbHVlLmdldCgpOworICAgIGVsc2UgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4g
cGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oYmFzZUFkZHJlc3MpOworICAgICAgICBhdXRv
IHJlc3VsdCA9IG1fcGFnZXMuYWRkKGJhc2VBZGRyZXNzLCBXVEZNb3ZlKHBhZ2UpKTsKKyAgICAg
ICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAg
ICB9CisgICAgbV9sYXN0QWNjZXNzZWRQYWdlQmFzZUFkZHJlc3MgPSBiYXNlQWRkcmVzczsKKyAg
ICByZXR1cm4gbV9sYXN0QWNjZXNzZWRQYWdlOworfQorCit9IC8vIG5hbWVzcGFjZSBQcm9iZQor
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1Byb2JlU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1Byb2JlU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3Ry
dWN0IFByb2JlQ29udGV4dDsKKworbmFtZXNwYWNlIFByb2JlIHsKKworY2xhc3MgUGFnZSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUGFnZSh2b2lkKiBiYXNl
QWRkcmVzcyk7CisKKyAgICBzdGF0aWMgdm9pZCogYmFzZUFkZHJlc3NGb3Iodm9pZCogcCkKKyAg
ICB7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4ocCkgJiB+c19wYWdlTWFzayk7CisgICAgfQorICAgIHN0YXRpYyB2b2lk
KiBjaHVua0FkZHJlc3NGb3Iodm9pZCogcCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCkgJiB+c19jaHVu
a01hc2spOworICAgIH0KKworICAgIHZvaWQqIGJhc2VBZGRyZXNzKCkgeyByZXR1cm4gbV9iYXNl
TG9naWNhbEFkZHJlc3M7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgVCBnZXQo
dm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgeworICAgICAgICByZXR1cm4gKnBoeXNpY2FsQWRk
cmVzc0ZvcjxUKj4obG9naWNhbEFkZHJlc3MpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCBzZXQodm9pZCogbG9naWNhbEFkZHJlc3MsIFQgdmFsdWUpCisgICAg
eworICAgICAgICBtX2RpcnR5Qml0cyB8PSBkaXJ0eUJpdEZvcihsb2dpY2FsQWRkcmVzcyk7Cisg
ICAgICAgICpwaHlzaWNhbEFkZHJlc3NGb3I8VCo+KGxvZ2ljYWxBZGRyZXNzKSA9IHZhbHVlOwor
ICAgIH0KKworICAgIGJvb2wgaGFzV3JpdGVzVG9GbHVzaCgpIGNvbnN0IHsgcmV0dXJuICEhbV9k
aXJ0eUJpdHM7IH0KKyAgICB2b2lkIGZsdXNoV3JpdGVzSWZOZWVkZWQoKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fZGlydHlCaXRzKQorICAgICAgICAgICAgZmx1c2hXcml0ZXMoKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgdWludHB0cl90IGRpcnR5Qml0Rm9yKHZvaWQqIGxvZ2ljYWxBZGRyZXNz
KQorICAgIHsKKyAgICAgICAgdWludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90Pihsb2dpY2FsQWRkcmVzcykgJiBzX3BhZ2VNYXNrOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAob2Zmc2V0ID4+IHNfY2h1bmtTaXplU2hpZnQpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGU+CisgICAgVCBwaHlz
aWNhbEFkZHJlc3NGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgeworICAgICAgICB1aW50
cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGxvZ2ljYWxBZGRyZXNz
KSAmIHNfcGFnZU1hc2s7CisgICAgICAgIHZvaWQqIHBoeXNpY2FsQWRkcmVzcyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KCZtX2J1ZmZlcikgKyBvZmZzZXQ7CisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFQ+KHBoeXNpY2FsQWRkcmVzcyk7CisgICAgfQorCisgICAgdm9pZCBm
bHVzaFdyaXRlcygpOworCisgICAgdm9pZCogbV9iYXNlTG9naWNhbEFkZHJlc3MgeyBudWxscHRy
IH07CisgICAgdWludHB0cl90IG1fZGlydHlCaXRzIHsgMCB9OworCisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3Qgc19wYWdlU2l6ZSA9IDEwMjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
cHRyX3Qgc19wYWdlTWFzayA9IHNfcGFnZVNpemUgLSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IHNfY2h1bmtzUGVyUGFnZSA9IHNpemVvZih1aW50cHRyX3QpICogODsgLy8gc2l6ZW9m
KG1fZGlydHlCaXRzKSBpbiBiaXRzLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNfY2h1
bmtTaXplID0gc19wYWdlU2l6ZSAvIHNfY2h1bmtzUGVyUGFnZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnRwdHJfdCBzX2NodW5rTWFzayA9IHNfY2h1bmtTaXplIC0gMTsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNfY2h1bmtTaXplU2hpZnQgPSA0
OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzX2NodW5rU2l6ZVNoaWZ0ID0g
NTsKKyNlbmRpZgorICAgIHN0YXRpY19hc3NlcnQoc19wYWdlU2l6ZSA+IHNfY2h1bmtTaXplLCAi
YmFkIHBhZ2VTaXplIG9yIGNodW5rU2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc19jaHVua1Np
emUgPT0gKDEgPDwgc19jaHVua1NpemVTaGlmdCksICJiYWQgY2h1bmtTaXplU2hpZnQiKTsKKwor
CisgICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzX3BhZ2VTaXplLCBz
dGQ6OmFsaWdubWVudF9vZjx1aW50cHRyX3Q+Ojp2YWx1ZT46OnR5cGUgQnVmZmVyOworICAgIEJ1
ZmZlciBtX2J1ZmZlcjsKK307CisKK2NsYXNzIFN0YWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTdGFjaygpCisgICAgICAgIDogbV9sb3dXYXRlcm1hcmso
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKQorICAgICAgICAsIG1fc3RhY2tCb3VuZHMoVGhy
ZWFkOjpjdXJyZW50KCkuc3RhY2soKSkKKyAgICB7IH0KKyAgICBTdGFjayhTdGFjayYmIG90aGVy
KTsKKworICAgIHZvaWQqIGxvd1dhdGVybWFyaygpIHsgcmV0dXJuIG1fbG93V2F0ZXJtYXJrOyB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCFzdGQ6OmlzX3NhbWU8ZG91YmxlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZT46
OnZhbHVlLCBUPjo6dHlwZSBnZXQodm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIFBhZ2Uq
IHBhZ2UgPSBwYWdlRm9yKGFkZHJlc3MpOworICAgICAgICByZXR1cm4gcGFnZS0+Z2V0PFQ+KGFk
ZHJlc3MpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgorICAgIHZvaWQgc2V0KHZvaWQqIGFk
ZHJlc3MsIFQgdmFsdWUpCisgICAgeworICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRy
ZXNzKTsKKyAgICAgICAgcGFnZS0+c2V0PFQ+KGFkZHJlc3MsIHZhbHVlKTsKKworICAgICAgICAv
LyBXZSB1c2UgdGhlIGNodW5rQWRkcmVzcyBmb3IgdGhlIGxvdyB3YXRlcm1hcmsgYmVjYXVzZSB3
ZSdsbCBiZSBkb2luZyB3cml0ZSBiYWNrcworICAgICAgICAvLyB0byB0aGUgc3RhY2sgaW4gaW5j
cmVtZW50cyBvZiBjaHVua3MuIEhlbmNlLCB3ZSdsbCB0cmVhdCB0aGUgbG93ZXN0IGFkZHJlc3Mg
b2YKKyAgICAgICAgLy8gdGhlIGNodW5rIGFzIHRoZSBsb3cgd2F0ZXJtYXJrIG9mIGFueSBnaXZl
biBzZXQgYWRkcmVzcy4KKyAgICAgICAgdm9pZCogY2h1bmtBZGRyZXNzID0gUGFnZTo6Y2h1bmtB
ZGRyZXNzRm9yKGFkZHJlc3MpOworICAgICAgICBpZiAoY2h1bmtBZGRyZXNzIDwgbV9sb3dXYXRl
cm1hcmspCisgICAgICAgICAgICBtX2xvd1dhdGVybWFyayA9IGNodW5rQWRkcmVzczsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6
dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgUGFnZSog
cGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8ZG91
YmxlPihwYWdlLT5nZXQ8dWludDY0X3Q+KGFkZHJlc3MpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
c2FtZTxkb3VibGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWU+Ojp0
eXBlPgorICAgIHZvaWQgc2V0KHZvaWQqIGFkZHJlc3MsIGRvdWJsZSB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHNldDx1aW50NjRfdD4oYWRkcmVzcywgYml0d2lzZV9jYXN0PHVpbnQ2NF90Pih2YWx1
ZSkpOworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhZ2UqIGVuc3VyZVBhZ2VGb3Io
dm9pZCogYWRkcmVzcyk7CisKKyAgICB2b2lkKiBuZXdTdGFja1BvaW50ZXIoKSBjb25zdCB7IHJl
dHVybiBtX25ld1N0YWNrUG9pbnRlcjsgfTsKKyAgICB2b2lkIHNldE5ld1N0YWNrUG9pbnRlcih2
b2lkKiBzcCkgeyBtX25ld1N0YWNrUG9pbnRlciA9IHNwOyB9OworCisgICAgYm9vbCBoYXNXcml0
ZXNUb0ZsdXNoKCk7CisgICAgdm9pZCBmbHVzaFdyaXRlcygpOworCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgIGJvb2wgaXNWYWxpZCgpIHsgcmV0dXJuIG1faXNWYWxpZDsgfQorI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgUGFnZSogcGFnZUZvcih2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgaWYgKExJS0VMWShQYWdlOjpiYXNlQWRkcmVzc0ZvcihhZGRyZXNzKSA9PSBtX2xhc3RBY2Nl
c3NlZFBhZ2VCYXNlQWRkcmVzcykpCisgICAgICAgICAgICByZXR1cm4gbV9sYXN0QWNjZXNzZWRQ
YWdlOworICAgICAgICByZXR1cm4gZW5zdXJlUGFnZUZvcihhZGRyZXNzKTsKKyAgICB9CisKKyAg
ICB2b2lkKiBtX25ld1N0YWNrUG9pbnRlciB7IG51bGxwdHIgfTsKKyAgICB2b2lkKiBtX2xvd1dh
dGVybWFyazsKKworICAgIC8vIEEgY2FjaGUgb2YgdGhlIGxhc3QgYWNjZXNzZWQgcGFnZSBkZXRh
aWxzIGZvciBxdWljayBhY2Nlc3MuCisgICAgdm9pZCogbV9sYXN0QWNjZXNzZWRQYWdlQmFzZUFk
ZHJlc3MgeyBudWxscHRyIH07CisgICAgUGFnZSogbV9sYXN0QWNjZXNzZWRQYWdlIHsgbnVsbHB0
ciB9OworCisgICAgU3RhY2tCb3VuZHMgbV9zdGFja0JvdW5kczsKKyAgICBIYXNoTWFwPHZvaWQq
LCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4+IG1fcGFnZXM7CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisgICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNw
YWNlIFByb2JlCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCShyZXZpc2lvbiAyMjA5MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJJbml0aWFsaXpl
VGhyZWFkaW5nLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC02MSwxMiArNjIsMjAgQEAgc3RhdGlj
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgbwogfSAvLyBuYW1lc3BhY2UgV1RGCiAj
ZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNl
IFByb2JlIHsKKwordm9pZCogcHJvYmVTdGF0ZUZvckNvbnRleHQoUHJvYmU6OkNvbnRleHQmKTsK
KworfSAvLyBuYW1lc3BhY2UgUHJvYmUKK30gLy8gbmFtZXNwYWNlIEpTQworCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgewogCiAjaWYgRU5BQkxFKE1BU01fUFJPQkUpCi11c2lu
ZyBDUFVTdGF0ZSA9IE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTsKK3VzaW5nIENQVVN0YXRlID0g
UHJvYmU6OkNQVVN0YXRlOwogI2VuZGlmCiAKIFN0YXRpY0xvY2sgY3Jhc2hMb2NrOwpAQCAtMTg0
LDggKzE5Myw4IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRlc3RXb3JkKDMpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKTsKICNlbmRpZgogCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC0+
Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZVdh
c0NhbGxlZCA9IHRydWU7CiAgICAgICAgICAgICBDSEVDS19FUShjcHUuZ3ByKEdQUkluZm86OmFy
Z3VtZW50R1BSMCksIHRlc3RXb3JkKDApKTsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5ncHIo
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSwgdGVzdFdvcmQoMSkpOwpAQCAtMjI2LDggKzIzNSw4IEBA
IHZvaWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRSZWdpc3RlcnMoKQogICAgICAgICBqaXQuY29u
dmVydEludDMyVG9Eb3VibGUoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBGUFJJbmZvOjpmcFJlZ1Qx
KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9i
ZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0g
Y29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29u
dGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAg
ICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgY3B1LmdwcihHUFJJbmZvOjphcmd1bWVu
dEdQUjApID0gdGVzdFdvcmQoMCk7CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSkgPSB0ZXN0V29yZCgxKTsKQEAgLTIzOSw4ICsyNDgsOCBAQCB2b2lkIHRlc3RQcm9i
ZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gVmFs
aWRhdGUgdGhhdCBleHBlY3RlZCB2YWx1ZXMgd2VyZSB3cml0dGVuLgotICAgICAgICBqaXQucHJv
YmUoWyZdIChQcm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGF1dG8mIGNwdSA9
IGNvbnRleHQtPmNwdTsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNv
bnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAg
ICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5ncHIoR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQoMCkpOwogICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1
LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjEpLCB0ZXN0V29yZCgxKSk7CkBAIC0yODIsOCArMjkx
LDggQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgaml0LmVtaXRGdW5j
dGlvblByb2xvZ3VlKCk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzIGludG8g
dGhlIHJlZ2lzdGVycyAoZXhjZXB0IGZvciBzcCwgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5w
cm9iZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1
ID0gY29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAg
ICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxI
ZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVy
KCk7IGlkID0gbmV4dElEKGlkKSkgewogICAgICAgICAgICAgICAgIG9yaWdpbmFsU3RhdGUuZ3By
KGlkKSA9IGNwdS5ncHIoaWQpOwpAQCAtMjk4LDE1ICszMDcsMTUgQEAgdm9pZCB0ZXN0UHJvYmVQ
cmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gSW52b2tlIHRoZSBwcm9i
ZSB0byBjYWxsIGEgbG90IG9mIGZ1bmN0aW9ucyBhbmQgdHJhc2ggcmVnaXN0ZXIgdmFsdWVzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqKSB7CisgICAgICAgIGppdC5wcm9i
ZShbJl0gKFByb2JlOjpDb250ZXh0JikgewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsK
ICAgICAgICAgICAgIENIRUNLX0VRKHRlc3RGdW5jdGlvblRvVHJhc2hHUFJzKDAsIDEsIDIsIDMs
IDQsIDUsIDYsIDcsIDgsIDkpLCAxMCk7CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rp
b25Ub1RyYXNoRlBScygwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAg
ICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUg
ZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNv
bnRleHQpIHsKLSAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAg
aml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1
dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAg
ICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBp
ZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoaXNTUChpZCkgfHwgaXNGUChpZCkpIHsKQEAgLTMyMiw4ICszMzEs
OCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsKIAogICAgICAg
ICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAgICAgICAgaml0LnByb2JlKFsmXSAo
UHJvYmU6OlN0YXRlKiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0
LT5jcHU7CisgICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2Jl
Q2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZp
cnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBu
ZXh0SUQoaWQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzU3BlY2lhbEdQUihpZCkpCkBAIC0z
MzUsOCArMzQ0LDggQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgfSk7
CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgb3JpZ2luYWwgc3RhdGUgd2FzIHJlc3Rv
cmVkLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKLSAg
ICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAgaml0LnByb2JlKFsm
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNv
bnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIGZv
ciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhl
bHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoaXNTcGVjaWFsR1BSKGlkKSkKQEAgLTM1Myw3ICszNjIsNyBAQCB2b2lkIHRlc3RQcm9i
ZVByZXNlcnZlc0dQUlMoKQogICAgIENIRUNLX0VRKHByb2JlQ2FsbENvdW50LCA1KTsKIH0KIAot
dm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OkZ1bmN0aW9uPHZvaWQqKFBy
b2JlOjpTdGF0ZSopPiBjb21wdXRlTW9kaWZpZWRTdGFjaykKK3ZvaWQgdGVzdFByb2JlTW9kaWZp
ZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21w
dXRlTW9kaWZpZWRTdGFja1BvaW50ZXIpCiB7CiAgICAgdW5zaWduZWQgcHJvYmVDYWxsQ291bnQg
PSAwOwogICAgIENQVVN0YXRlIG9yaWdpbmFsU3RhdGU7CkBAIC0zNjYsNyArMzc1LDcgQEAgdm9p
ZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OgogICAgIHVpbnRwdHJfdCBmbGFn
c01hc2sgPSAweGM1OwogI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9O
QUwpCiAgICAgYXV0byBmbGFnc1NQUiA9IEFSTVJlZ2lzdGVyczo6YXBzcjsKLSAgICB1aW50cHRy
X3QgZmxhZ3NNYXNrID0gMHhmMDAwMDAwMDsKKyAgICB1aW50cHRyX3QgZmxhZ3NNYXNrID0gMHhm
ODAwMDAwMDsKICNlbGlmIENQVShBUk02NCkKICAgICBhdXRvIGZsYWdzU1BSID0gQVJNNjRSZWdp
c3RlcnM6Om56Y3Y7CiAgICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4ZjAwMDAwMDA7CkBAIC0z
NzcsOCArMzg2LDggQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6Ogog
CiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIgYW5kIG1vZGlmeSB0
aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byBvdGhlciBy
ZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5wcm9iZShbJl0g
KFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4
dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9i
ZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpm
aXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0g
bmV4dElEKGlkKSkgewogICAgICAgICAgICAgICAgIG9yaWdpbmFsU3RhdGUuZ3ByKGlkKSA9IGNw
dS5ncHIoaWQpOwpAQCAtMzk2LDEzICs0MDUsMTMgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0
YWNrUG9pbnRlcihXVEY6OgogICAgICAgICAgICAgY3B1LnNwcihmbGFnc1NQUikgPSBtb2RpZmll
ZEZsYWdzOwogCiAgICAgICAgICAgICBvcmlnaW5hbFNQID0gY3B1LnNwKCk7Ci0gICAgICAgICAg
ICBtb2RpZmllZFNQID0gY29tcHV0ZU1vZGlmaWVkU3RhY2soY29udGV4dCk7CisgICAgICAgICAg
ICBtb2RpZmllZFNQID0gY29tcHV0ZU1vZGlmaWVkU3RhY2tQb2ludGVyKGNvbnRleHQpOwogICAg
ICAgICAgICAgY3B1LnNwKCkgPSBtb2RpZmllZFNQOwogICAgICAgICB9KTsKIAogICAgICAgICAv
LyBWYWxpZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0
byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6
Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
aXNGUChpZCkpIHsKQEAgLTQxNSwxMyArNDI0LDEzIEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNT
dGFja1BvaW50ZXIoV1RGOjoKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoYXV0byBp
ZCA9IENDYWxsSGVscGVyczo6Zmlyc3RGUFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6
bGFzdEZQUmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKQogICAgICAgICAgICAgICAgIENIRUNL
X0VRKGNwdS5mcHI8dWludDY0X3Q+KGlkKSwgdGVzdFdvcmQ2NChpZCkpOwotICAgICAgICAgICAg
Q0hFQ0tfRVEoY3B1LnNwcihmbGFnc1NQUiksIG1vZGlmaWVkRmxhZ3MpOworICAgICAgICAgICAg
Q0hFQ0tfRVEoY3B1LnNwcihmbGFnc1NQUikgJiBmbGFnc01hc2ssIG1vZGlmaWVkRmxhZ3MgJiBm
bGFnc01hc2spOwogICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LnNwKCksIG1vZGlmaWVkU1ApOwog
ICAgICAgICB9KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAg
ICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKiBjb250ZXh0KSB7Ci0gICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7CisgICAgICAgIGppdC5wcm9iZShbJl0gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNw
dTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8g
aWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjps
YXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlz
U3BlY2lhbEdQUihpZCkpCkBAIC00MzUsOCArNDQ0LDggQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmll
c1N0YWNrUG9pbnRlcihXVEY6OgogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0
aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9yZWQuCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29u
dGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4
dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBw
cm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJz
OjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlk
ID0gbmV4dElEKGlkKSkgewogICAgICAgICAgICAgICAgIGlmIChpc1NwZWNpYWxHUFIoaWQpKQpA
QCAtNDQ1LDcgKzQ1NCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RG
OjoKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVy
czo6Zmlyc3RGUFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdEZQUmVnaXN0ZXIo
KTsgaWQgPSBuZXh0SUQoaWQpKQogICAgICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5mcHI8dWlu
dDY0X3Q+KGlkKSwgb3JpZ2luYWxTdGF0ZS5mcHI8dWludDY0X3Q+KGlkKSk7Ci0gICAgICAgICAg
ICBDSEVDS19FUShjcHUuc3ByKGZsYWdzU1BSKSwgb3JpZ2luYWxTdGF0ZS5zcHIoZmxhZ3NTUFIp
KTsKKyAgICAgICAgICAgIENIRUNLX0VRKGNwdS5zcHIoZmxhZ3NTUFIpICYgZmxhZ3NNYXNrLCBv
cmlnaW5hbFN0YXRlLnNwcihmbGFnc1NQUikgJiBmbGFnc01hc2spOwogICAgICAgICAgICAgQ0hF
Q0tfRVEoY3B1LnNwKCksIG9yaWdpbmFsU1ApOwogICAgICAgICB9KTsKIApAQCAtNDYzLDggKzQ3
Miw5IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXJUb0luc2kKICAgICBpbmNy
ZW1lbnQgPSAyICogc2l6ZW9mKHVpbnRwdHJfdCk7CiAjZW5kaWYKICAgICBmb3IgKHNpemVfdCBv
ZmZzZXQgPSAwOyBvZmZzZXQgPCBzaXplb2YoUHJvYmU6OlN0YXRlKTsgb2Zmc2V0ICs9IGluY3Jl
bWVudCkgewotICAgICAgICB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihbPV0gKFByb2Jl
OjpTdGF0ZSogY29udGV4dCkgLT4gdm9pZCogewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGNvbnRleHQpICsgb2Zmc2V0OworICAgICAgICB0ZXN0UHJvYmVN
b2RpZmllc1N0YWNrUG9pbnRlcihbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSAtPiB2b2lk
KiB7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocHJvYmVT
dGF0ZUZvckNvbnRleHQoY29udGV4dCkpICsgb2Zmc2V0OworCiAgICAgICAgIH0pOwogICAgIH0K
IH0KQEAgLTQ3Nyw4ICs0ODcsOCBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVy
VG9OQnl0CiAgICAgaW5jcmVtZW50ID0gMiAqIHNpemVvZih1aW50cHRyX3QpOwogI2VuZGlmCiAg
ICAgZm9yIChzaXplX3Qgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgMSAqIEtCOyBvZmZzZXQgKz0gaW5j
cmVtZW50KSB7Ci0gICAgICAgIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFs9XSAoUHJv
YmU6OlN0YXRlKiBjb250ZXh0KSAtPiB2b2lkKiB7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oY29udGV4dC0+Y3B1LnNwKCkpIC0gb2Zmc2V0OworICAgICAg
ICB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihbPV0gKFByb2JlOjpDb250ZXh0JiBjb250
ZXh0KSAtPiB2b2lkKiB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcHUuc3A8dWludDhf
dCo+KCkgLSBvZmZzZXQ7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTQ5Myw3ICs1MDMsNyBA
QCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIoKQogCiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNvbnRpbnVhdGlvbiA9IGNvbXBpbGUoWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCkgewogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHdlIHJlYWNoZWQgdGhlIGNvbnRpbnVhdGlv
bi4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRlKikgeworICAgICAgICBqaXQu
cHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAgICAg
fSk7CkBAIC01MDYsOSArNTE2LDkgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1Byb2dyYW1Db3Vu
dGVyKCkKICAgICAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAKICAgICAgICAgLy8g
V3JpdGUgZXhwZWN0ZWQgdmFsdWVzIGludG8gdGhlIHJlZ2lzdGVycy4KLSAgICAgICAgaml0LnBy
b2JlKFsmXSAoUHJvYmU6OlN0YXRlKiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZShbJl0g
KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsr
OwotICAgICAgICAgICAgY29udGV4dC0+cGMoKSA9IGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIGNvbnRleHQuY3B1LnBjKCkgPSBjb250aW51YXRp
b24uY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGpp
dC5icmVha3BvaW50KCk7IC8vIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZS4KQEAgLTUxNyw3MSAr
NTI3LDIzIEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNQcm9ncmFtQ291bnRlcigpCiAgICAgQ0hF
Q0tfRVEoY29udGludWF0aW9uV2FzUmVhY2hlZCwgdHJ1ZSk7CiB9CiAKLXN0cnVjdCBGaWxsU3Rh
Y2tEYXRhIHsKK3ZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCit7CisgICAgdW5z
aWduZWQgcHJvYmVDYWxsQ291bnQgPSAwOwogICAgIENQVVN0YXRlIG9yaWdpbmFsU3RhdGU7CiAg
ICAgdm9pZCogb3JpZ2luYWxTUCB7IG51bGxwdHIgfTsKICAgICB2b2lkKiBuZXdTUCB7IG51bGxw
dHIgfTsKICAgICB1aW50cHRyX3QgbW9kaWZpZWRGbGFncyB7IDAgfTsKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6U1BSZWdpc3RlcklEIGZsYWdzU1BSOwotfTsKLQotc3RhdGljIHZvaWQgZmlsbFN0YWNr
KFByb2JlOjpTdGF0ZSogY29udGV4dCkKLXsKLSAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7
Ci0KLSAgICBGaWxsU3RhY2tEYXRhJiBkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8RmlsbFN0YWNr
RGF0YSo+KGNvbnRleHQtPmluaXRpYWxpemVTdGFja0FyZyk7Ci0gICAgQ1BVU3RhdGUmIG9yaWdp
bmFsU3RhdGUgPSBkYXRhLm9yaWdpbmFsU3RhdGU7Ci0gICAgdm9pZComIG9yaWdpbmFsU1AgPSBk
YXRhLm9yaWdpbmFsU1A7Ci0gICAgdm9pZComIG5ld1NQID0gZGF0YS5uZXdTUDsKLSAgICB1aW50
cHRyX3QmIG1vZGlmaWVkRmxhZ3MgPSBkYXRhLm1vZGlmaWVkRmxhZ3M7Ci0gICAgTWFjcm9Bc3Nl
bWJsZXI6OlNQUmVnaXN0ZXJJRCYgZmxhZ3NTUFIgPSBkYXRhLmZsYWdzU1BSOwotCi0gICAgQ0hF
Q0tfRVEocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC0+aW5pdGlhbGl6ZVN0YWNrRnVu
Y3Rpb24pLCByZWludGVycHJldF9jYXN0PHZvaWQqPihmaWxsU3RhY2spKTsKLSAgICBDSEVDS19F
UShjcHUuc3AoKSwgbmV3U1ApOwotCi0gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHByb2JlIGhhcyBw
dXQgdGhlIFByb2JlOjpTdGF0ZSBvdXQgb2YgaGFybSdzIHdheS4KLSAgICBDSEVDS19FUSgocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dCArIDEpIDw9IGNwdS5zcCgpKSwgdHJ1ZSk7Ci0K
LSAgICAvLyBWZXJpZnkgdGhlIENQVSBzdGF0ZS4KLSAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhl
bHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIo
KTsgaWQgPSBuZXh0SUQoaWQpKSB7Ci0gICAgICAgIGlmIChpc0ZQKGlkKSkgewotICAgICAgICAg
ICAgQ0hFQ0tfRVEoY3B1LmdwcihpZCksIG9yaWdpbmFsU3RhdGUuZ3ByKGlkKSk7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNTcGVjaWFsR1BSKGlkKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDSEVDS19FUShjcHUuZ3ByKGlkKSwgdGVz
dFdvcmQoaWQpKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJz
dEZQUmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdpc3RlcigpOyBpZCA9
IG5leHRJRChpZCkpCi0gICAgICAgIENIRUNLX0VRKGNwdS5mcHI8dWludDY0X3Q+KGlkKSwgdGVz
dFdvcmQ2NChpZCkpOwotICAgIENIRUNLX0VRKGNwdS5zcHIoZmxhZ3NTUFIpLCBtb2RpZmllZEZs
YWdzKTsKLQotICAgIC8vIEZpbGwgdGhlIHN0YWNrIHdpdGggdmFsdWVzLgotICAgIHVpbnRwdHJf
dCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4obmV3U1ApOwotICAgIGludCBjb3Vu
dCA9IDA7Ci0gICAgd2hpbGUgKHAgPCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCo+KG9yaWdp
bmFsU1ApKQotICAgICAgICAqcCsrID0gdGVzdFdvcmQoY291bnQrKyk7Ci19OwotCi12b2lkIHRl
c3RQcm9iZU1vZGlmaWVzU3RhY2tXaXRoQ2FsbGJhY2soKQotewotICAgIHVuc2lnbmVkIHByb2Jl
Q2FsbENvdW50ID0gMDsKLSAgICBGaWxsU3RhY2tEYXRhIGRhdGE7Ci0gICAgQ1BVU3RhdGUmIG9y
aWdpbmFsU3RhdGUgPSBkYXRhLm9yaWdpbmFsU3RhdGU7Ci0gICAgdm9pZComIG9yaWdpbmFsU1Ag
PSBkYXRhLm9yaWdpbmFsU1A7Ci0gICAgdm9pZComIG5ld1NQID0gZGF0YS5uZXdTUDsKLSAgICB1
aW50cHRyX3QmIG1vZGlmaWVkRmxhZ3MgPSBkYXRhLm1vZGlmaWVkRmxhZ3M7Ci0gICAgc2l6ZV90
IG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0ZSA9IDEwOyAvLyBBUk02NCByZXF1aXJlcyB0aGF0
IHRoaXMgYmUgMiB3b3JkIGFsaWduZWQuCi0gICAgTWFjcm9Bc3NlbWJsZXI6OlNQUmVnaXN0ZXJJ
RCYgZmxhZ3NTUFIgPSBkYXRhLmZsYWdzU1BSOworICAgIHNpemVfdCBudW1iZXJPZkV4dHJhRW50
cmllc1RvV3JpdGUgeyAxMCB9OyAvLyBBUk02NCByZXF1aXJlcyB0aGF0IHRoaXMgYmUgMiB3b3Jk
IGFsaWduZWQuCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQotICAgIGZsYWdzU1BSID0g
WDg2UmVnaXN0ZXJzOjplZmxhZ3M7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlNQUmVnaXN0ZXJJRCBm
bGFnc1NQUiA9IFg4NlJlZ2lzdGVyczo6ZWZsYWdzOwogICAgIHVpbnRwdHJfdCBmbGFnc01hc2sg
PSAweGM1OwogI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCi0g
ICAgZmxhZ3NTUFIgPSBBUk1SZWdpc3RlcnM6OmFwc3I7Ci0gICAgdWludHB0cl90IGZsYWdzTWFz
ayA9IDB4ZjAwMDAwMDA7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlNQUmVnaXN0ZXJJRCBmbGFnc1NQ
UiA9IEFSTVJlZ2lzdGVyczo6YXBzcjsKKyAgICB1aW50cHRyX3QgZmxhZ3NNYXNrID0gMHhmODAw
MDAwMDsKICNlbGlmIENQVShBUk02NCkKLSAgICBmbGFnc1NQUiA9IEFSTTY0UmVnaXN0ZXJzOjpu
emN2OworICAgIE1hY3JvQXNzZW1ibGVyOjpTUFJlZ2lzdGVySUQgZmxhZ3NTUFIgPSBBUk02NFJl
Z2lzdGVyczo6bnpjdjsKICAgICB1aW50cHRyX3QgZmxhZ3NNYXNrID0gMHhmMDAwMDAwMDsKICNl
bmRpZgogCkBAIC01ODksOCArNTUxLDkgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrV2l0
aENhbGxiYWNrKAogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgICAg
ICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJzLgotICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGF1dG8m
IGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRl
eHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OworICAg
ICAgICAgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0YWNrKCk7CiAgICAgICAgICAgICBwcm9i
ZUNhbGxDb3VudCsrOwogCiAgICAgICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgQ1BV
IHN0YXRlLgpAQCAtNjA4LDIxICs1NzEsMjUgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNr
V2l0aENhbGxiYWNrKAogICAgICAgICAgICAgbW9kaWZpZWRGbGFncyA9IG9yaWdpbmFsU3RhdGUu
c3ByKGZsYWdzU1BSKSBeIGZsYWdzTWFzazsKICAgICAgICAgICAgIGNwdS5zcHIoZmxhZ3NTUFIp
ID0gbW9kaWZpZWRGbGFnczsKIAotICAgICAgICAgICAgQ0hFQ0tfRVEocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oY29udGV4dC0+aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24pLCAwKTsKLQotICAgICAg
ICAgICAgLy8gUHJlcGFyZSBmb3IgaW5pdGlhbGl6ZVN0YWNrIGNhbGxiYWNrLgotICAgICAgICAg
ICAgY29udGV4dC0+aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gPSBmaWxsU3RhY2s7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5pbml0aWFsaXplU3RhY2tBcmcgPSAmZGF0YTsKLQogICAgICAgICAgICAg
Ly8gRW5zdXJlIHRoYXQgd2UnbGwgYmUgd3JpdGluZyBvdmVyIHRoZSByZWdpb25zIG9mIHRoZSBz
dGFjayB3aGVyZSB0aGUgUHJvYmU6OlN0YXRlIGlzLgogICAgICAgICAgICAgb3JpZ2luYWxTUCA9
IGNwdS5zcCgpOwotICAgICAgICAgICAgbmV3U1AgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dCo+KGNvbnRleHQpIC0gbnVtYmVyT2ZFeHRyYUVudHJpZXNUb1dyaXRlOworICAgICAgICAgICAg
bmV3U1AgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCo+KHByb2JlU3RhdGVGb3JDb250ZXh0
KGNvbnRleHQpKSAtIG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0ZTsKICAgICAgICAgICAgIGNw
dS5zcCgpID0gbmV3U1A7CisKKyAgICAgICAgICAgIC8vIEZpbGwgdGhlIHN0YWNrIHdpdGggdmFs
dWVzLgorICAgICAgICAgICAgdWludHB0cl90KiBwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3QqPihuZXdTUCk7CisgICAgICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICAgICAgc3Rh
Y2suc2V0PGRvdWJsZT4ocCsrLCAxLjIzNDU2Nzg5KTsKKyAgICAgICAgICAgIGlmIChpczMyQml0
KCkpCisgICAgICAgICAgICAgICAgcCsrOyAvLyBPbiAzMi1iaXQgdGFyZ2V0cywgYSBkb3VibGUg
dGFrZXMgdXAgMiB1aW50cHRyX3QuCisgICAgICAgICAgICB3aGlsZSAocCA8IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Kj4ob3JpZ2luYWxTUCkpCisgICAgICAgICAgICAgICAgc3RhY2suc2V0
PHVpbnRwdHJfdD4ocCsrLCB0ZXN0V29yZChjb3VudCsrKSk7CiAgICAgICAgIH0pOwogCiAgICAg
ICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBhbmQgc3RhY2sgaGF2ZSB0aGUgZXhw
ZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNvbnRl
eHQpIHsKLSAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAgaml0
LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8m
IGNwdSA9IGNvbnRleHQuY3B1OworICAgICAgICAgICAgYXV0byYgc3RhY2sgPSBjb250ZXh0LnN0
YWNrKCk7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogCiAgICAgICAgICAgICAvLyBW
YWxpZGF0ZSB0aGUgcmVnaXN0ZXIgdmFsdWVzLgpAQCAtNjM3LDE5ICs2MDQsMjIgQEAgdm9pZCB0
ZXN0UHJvYmVNb2RpZmllc1N0YWNrV2l0aENhbGxiYWNrKAogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsgaWQg
PD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpCiAgICAg
ICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmZwcjx1aW50NjRfdD4oaWQpLCB0ZXN0V29yZDY0KGlk
KSk7Ci0gICAgICAgICAgICBDSEVDS19FUShjcHUuc3ByKGZsYWdzU1BSKSwgbW9kaWZpZWRGbGFn
cyk7CisgICAgICAgICAgICBDSEVDS19FUShjcHUuc3ByKGZsYWdzU1BSKSAmIGZsYWdzTWFzaywg
bW9kaWZpZWRGbGFncyAmIGZsYWdzTWFzayk7CiAgICAgICAgICAgICBDSEVDS19FUShjcHUuc3Ao
KSwgbmV3U1ApOwogCi0gICAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgc3RhY2sgd2l0aCB2YWx1
ZXMuCisgICAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgc3RhY2sgdmFsdWVzLgogICAgICAgICAg
ICAgdWludHB0cl90KiBwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPihuZXdTUCk7CiAg
ICAgICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICAgICAgQ0hFQ0tfRVEoc3RhY2suZ2V0
PGRvdWJsZT4ocCsrKSwgMS4yMzQ1Njc4OSk7CisgICAgICAgICAgICBpZiAoaXMzMkJpdCgpKQor
ICAgICAgICAgICAgICAgIHArKzsgLy8gT24gMzItYml0IHRhcmdldHMsIGEgZG91YmxlIHRha2Vz
IHVwIDIgdWludHB0cl90LgogICAgICAgICAgICAgd2hpbGUgKHAgPCByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdCo+KG9yaWdpbmFsU1ApKQotICAgICAgICAgICAgICAgIENIRUNLX0VRKCpwKyss
IHRlc3RXb3JkKGNvdW50KyspKTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShzdGFjay5nZXQ8
dWludHB0cl90PihwKyspLCB0ZXN0V29yZChjb3VudCsrKSk7CiAgICAgICAgIH0pOwogCiAgICAg
ICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZd
IChQcm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRl
eHQtPmNwdTsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQp
IHsKKyAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJv
YmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6
Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9
IG5leHRJRChpZCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNTcGVjaWFsR1BSKGlkKSkKQEAg
LTcwNyw3ICs2NzcsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRl
c3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyVG9JbnNpZGVQcm9iZVN0YXRlT25TdGFjaygpKTsK
ICAgICBSVU4odGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXJUb05CeXRlc0JlbG93U1AoKSk7
CiAgICAgUlVOKHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIoKSk7Ci0gICAgUlVOKHRl
c3RQcm9iZU1vZGlmaWVzU3RhY2tXaXRoQ2FsbGJhY2soKSk7CisgICAgUlVOKHRlc3RQcm9iZU1v
ZGlmaWVzU3RhY2tWYWx1ZXMoKSk7CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAKICAg
ICBpZiAodGFza3MuaXNFbXB0eSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318610</attachid>
            <date>2017-08-20 19:52:25 -0700</date>
            <delta_ts>2017-08-20 21:11:24 -0700</delta_ts>
            <desc>patch for landing w/ Windows fix.</desc>
            <filename>bug-175688.patch</filename>
            <type>text/plain</type>
            <size>126268</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwOTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2MyBA
QAorMjAxNy0wOC0yMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoKSB0byBhbGxvdyB0aGUgcHJvYmUgZnVuY3Rp
b24gdG8gcmVzaXplIHRoZSBzdGFjayBmcmFtZSBhbmQgYWx0ZXIgc3RhY2sgZGF0YSBpbiBvbmUg
cGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTY4OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM0MzY4NzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHRoZSBjbGllbnRz
IG9mIHRoZSBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoKSBjYW4gbm93IGNoYW5nZQorICAgICAgICBz
dGFjayB2YWx1ZXMgd2l0aG91dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQgd2hldGhlciB0aGVyZSBp
cyBlbm91Z2ggcm9vbSBpbiB0aGUKKyAgICAgICAgY3VycmVudCBzdGFjayBmcmFtZSBmb3IgaXQg
b3Igbm90LiAgVGhpcyBpcyBkb25lIHVzaW5nIHRoZSBQcm9iZTo6Q29udGV4dCdzIHN0YWNrCisg
ICAgICAgIG1lbWJlciBsaWtlIHNvOgorCisgICAgICAgICAgICBqaXQucHJvYmUoW10gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgYXV0byBjcHUgPSBjb250ZXh0
LmNwdTsKKyAgICAgICAgICAgICAgICBhdXRvIHN0YWNrID0gY29udGV4dC5zdGFjaygpOworICAg
ICAgICAgICAgICAgIHVpbnRwdHJfdCogY3VycmVudFNQID0gY3B1LnNwPHVpbnRwdHJfdCo+KCk7
CisKKyAgICAgICAgICAgICAgICAvLyBHZXQgYSB2YWx1ZSBhdCB0aGUgY3VycmVudCBzdGFjayBw
b2ludGVyIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBzdGFjay5nZXQ8
dWludHB0cl90PihjdXJyZW50U1ApOworCisgICAgICAgICAgICAgICAgLy8gU2V0IGEgdmFsdWUg
YWJvdmUgdGhlIGN1cnJlbnQgc3RhY2sgcG9pbnRlciAod2l0aGluIGN1cnJlbnQgZnJhbWUpLgor
ICAgICAgICAgICAgICAgIHN0YWNrLnNldDx1aW50cHRyX3Q+KGN1cnJlbnRTUCArIDEwLCB2YWx1
ZSk7CisKKyAgICAgICAgICAgICAgICAvLyBTZXQgYSB2YWx1ZSBiZWxvdyB0aGUgY3VycmVudCBz
dGFjayBwb2ludGVyIChvdXQgb2YgY3VycmVudCBmcmFtZSkuCisgICAgICAgICAgICAgICAgc3Rh
Y2suc2V0PHVpbnRwdHJfdD4oY3VycmVudFNQIC0gMTAsIHZhbHVlKTsKKworICAgICAgICAgICAg
ICAgIC8vIFNldCB0aGUgbmV3IHN0YWNrIHBvaW50ZXIuCisgICAgICAgICAgICAgICAgY3B1LnNw
KCkgPSBjdXJyZW50U1AgLSAyMDsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIFdoYXQgaGFw
cGVucyBiZWhpbmQgdGhlIHNjZW5lOgorCisgICAgICAgIDEuIHRoZSBnZW5lcmF0ZWQgSklUIHBy
b2JlIGNvZGUgd2lsbCBub3cgY2FsbCBQcm9iZTo6ZXhlY3V0ZVByb2JlKCksIGFuZAorICAgICAg
ICAgICBQcm9iZTo6ZXhlY3V0ZVByb2JlKCkgd2lsbCBpbiB0dXJuIGNhbGwgdGhlIGNsaWVudCdz
IHByb2JlIGZ1bmN0aW9uLgorCisgICAgICAgICAgIFByb2JlOjpleGVjdXRlUHJvYmUoKSByZWNl
aXZlcyB0aGUgUHJvYmU6OlN0YXRlIG9uIHRoZSBtYWNoaW5lIHN0YWNrIHBhc3NlZAorICAgICAg
ICAgICB0byBpdCBieSB0aGUgcHJvYmUgdHJhbXBvbGluZS4gIFByb2JlOjpleGVjdXRlUHJvYmUo
KSB3aWxsIGluc3RhbnRpYXRlIGEKKyAgICAgICAgICAgUHJvYmU6OkNvbnRleHQgdG8gYmUgcGFz
c2VkIHRvIHRoZSBjbGllbnQncyBwcm9iZSBmdW5jdGlvbi4gIFRoZSBjbGllbnQgd2lsbAorICAg
ICAgICAgICBubyBsb25nZXIgc2VlIHRoZSBQcm9iZTo6U3RhdGUgZGlyZWN0bHkuCisKKyAgICAg
ICAgMi4gVGhlIFByb2JlOjpDb250ZXh0IGNvbWVzIHdpdGggYSBQcm9iZTo6U3RhY2sgd2hpY2gg
c2VydmVzIGFzIGEgbWFuYWdlciBvZgorICAgICAgICAgICBzdGFjayBwYWdlcy4gIEN1cnJlbnRs
eSwgZWFjaCBwYWdlIGlzIDFLIGluIHNpemUuCisgICAgICAgICAgIFByb2JlOjpDb250ZXh0Ojpz
dGFjaygpIHJldHVybnMgYSByZWZlcmVuY2UgdG8gYW4gaW5zdGFuY2Ugb2YgUHJvYmU6OlN0YWNr
LgorCisgICAgICAgIDMuIEludm9raW5nIGdldCgpIG9mIHNldCgpIG9uIFByb2JlOjpTdGFjayB3
aXRoIGFuIGFkZHJlc3Mgd2lsbCBsZWFkIHRvIHRoZQorICAgICAgICAgICBmb2xsb3dpbmc6CisK
KyAgICAgICAgICAgYS4gdGhlIGFkZHJlc3Mgd2lsbCBiZSBkZWNvZGVkIHRvIGEgYmFzZUFkZHJl
c3MgdGhhdCBwb2ludHMgdG8gdGhlIDFLIHBhZ2UKKyAgICAgICAgICAgICAgdGhhdCBjb250YWlu
cyB0aGF0IGFkZHJlc3MuCisKKyAgICAgICAgICAgYi4gdGhlIFByb2JlOjpTdGFjayB3aWxsIGNo
ZWNrIGlmIGl0IGFscmVhZHkgaGFzIGEgY2FjaGVkIDFLIHBhZ2UgZm9yIHRoYXQgYmFzZUFkZHJl
c3MuCisgICAgICAgICAgICAgIElmIHNvLCBnbyB0byBzdGVwIChmKS4gIEVsc2UsIGNvbnRpbnVl
IHdpdGggc3RlcCAoYykuCisKKyAgICAgICAgICAgYy4gdGhlIFByb2JlOjpTdGFjayB3aWxsIG1h
bGxvYyBhIDFLIG1pcnJvciBwYWdlLCBhbmQgbWVtY3B5IHRoZSAxSyBzdGFjayBwYWdlCisgICAg
ICAgICAgICAgIGZvciB0aGF0IHNwZWNpZmllZCBiYXNlQWRkcmVzcyB0byB0aGlzIG1pcnJvciBw
YWdlLgorCisgICAgICAgICAgIGQuIHRoZSBtaXJyb3IgcGFnZSB3aWxsIGJlIGFkZGVkIHRvIHRo
ZSBQcm9iZVN0YWNrJ3MgbV9wYWdlcyBIYXNoTWFwLAorICAgICAgICAgICAgICBrZXllZCBvbiB0
aGUgYmFzZUFkZHJlc3MuCisKKyAgICAgICAgICAgZS4gdGhlIFByb2JlU3RhY2sgd2lsbCBhbHNv
IGNhY2hlIHRoZSBsYXN0IGJhc2VBZGRyZXNzIGFuZCBpdHMgY29ycmVzcG9uZGluZworICAgICAg
ICAgICAgICBtaXJyb3IgcGFnZSBpbiB1c2UuICBXaXRoIG1lbW9yeSBhY2Nlc3NlcyB0ZW5kaW5n
IHRvIGJlIGxvY2FsaXplZCwgdGhpcworICAgICAgICAgICAgICB3aWxsIHNhdmUgdXMgZnJvbSBo
YXZpbmcgdG8gbG9vayB1cCB0aGUgcGFnZSBpbiB0aGUgSGFzaE1hcC4KKworICAgICAgICAgICBm
LiBnZXQoKSB3aWxsIG1hcCB0aGUgcmVxdWVzdGVkIGFkZHJlc3MgdG8gYSBwaHlzaWNhbCBhZGRy
ZXNzIGluIHRoZSBtaXJyb3IKKyAgICAgICAgICAgICAgcGFnZSwgYW5kIHJldHVybiB0aGUgdmFs
dWUgYXQgdGhhdCBsb2NhdGlvbi4KKworICAgICAgICAgICBnLiBzZXQoKSB3aWxsIG1hcCB0aGUg
cmVxdWVzdGVkIGFkZHJlc3MgdG8gYSBwaHlzaWNhbCBhZGRyZXNzIGluIHRoZSBtaXJyb3IKKyAg
ICAgICAgICAgICAgcGFnZSwgYW5kIHNldCB0aGUgdmFsdWUgYXQgdGhhdCBsb2NhdGlvbiBpbiB0
aGUgbWlycm9yIHBhZ2UuCisKKyAgICAgICAgICAgICAgc2V0KCkgd2lsbCBhbHNvIHNldCBhIGRp
cnR5IGJpdCBjb3JyZXNwb25kaW5nIHRvIHRoZSAiY2FjaGUgbGluZSIgdGhhdAorICAgICAgICAg
ICAgICB3YXMgbW9kaWZpZWQgaW4gdGhlIG1pcnJvciBwYWdlLgorCisgICAgICAgIDQuIFdoZW4g
dGhlIGNsaWVudCdzIHByb2JlIGZ1bmN0aW9uIHJldHVybnMsIFByb2JlOjpleGVjdXRlUHJvYmUo
KSB3aWxsIGNoZWNrIGlmCisgICAgICAgICAgIHRoZXJlIGFyZSBzdGFjayBjaGFuZ2VzIHRoYXQg
bmVlZCB0byBiZSBhcHBsaWVkLiAgSWYgc3RhY2sgY2hhbmdlcyBhcmUgbmVlZGVkOgorCisgICAg
ICAgICAgIGEuIFByb2JlOjpleGVjdXRlUHJvYmUoKSB3aWxsIGFkanVzdCB0aGUgc3RhY2sgcG9p
bnRlciB0byBlbnN1cmUgZW5vdWdoIHN0YWNrCisgICAgICAgICAgICAgIHNwYWNlIGlzIGF2YWls
YWJsZSB0byBmbHVzaCB0aGUgZGlydHkgc3RhY2sgcGFnZXMuICBJdCB3aWxsIGFsc28gcmVnaXN0
ZXIgYQorICAgICAgICAgICAgICBmbHVzaFN0YWNrRGlydHlQYWdlcyBjYWxsYmFjayBmdW5jdGlv
biBpbiB0aGUgUHJvYmU6OlN0YXRlLiAgVGhlcmVhZnRlciwKKyAgICAgICAgICAgICAgUHJvYmU6
OmV4ZWN1dGVQcm9iZSgpIHJldHVybnMgdG8gdGhlIHByb2JlIHRyYW1wb2xpbmUuCisKKyAgICAg
ICAgICAgYi4gdGhlIHByb2JlIHRyYW1wb2xpbmUgYWRqdXN0cyB0aGUgc3RhY2sgcG9pbnRlciwg
bW92ZXMgdGhlIFByb2JlOjpTdGF0ZSB0bworICAgICAgICAgICAgICBhIHNhZmUgcGxhY2UgaWYg
bmVlZGVkLCBhbmQgdGhlbiBjYWxscyB0aGUgZmx1c2hTdGFja0RpcnR5UGFnZXMgY2FsbGJhY2sK
KyAgICAgICAgICAgICAgaWYgbmVlZGVkLgorCisgICAgICAgICAgIGMuIHRoZSBmbHVzaFN0YWNr
RGlydHlQYWdlcygpIGNhbGxiYWNrIGl0ZXJhdGVzIHRoZSBQcm9iZTo6U3RhY2sncyBtX3BhZ2Vz
CisgICAgICAgICAgICAgIEhhc2hNYXAgYW5kIGZsdXNoIGFsbCBkaXJ0eSAiY2FjaGUgbGluZXMi
IHRvIHRoZSBtYWNoaW5lIHN0YWNrLgorICAgICAgICAgICAgICBUaGVyZWFmdGVyLCBmbHVzaFN0
YWNrRGlydHlQYWdlcygpIHJldHVybnMgdG8gdGhlIHByb2JlIHRyYW1wb2xpbmUuCisKKyAgICAg
ICAgICAgZC4gbGFzdGx5LCB0aGUgcHJvYmUgdHJhbXBvbGluZSB3aWxsIHJlc3RvcmUgYWxsIHJl
Z2lzdGVyIHZhbHVlcyBhbmQgcmV0dXJuCisgICAgICAgICAgICAgIHRvIHRoZSBwYyBzZXQgaW4g
dGhlIFByb2JlOjpTdGF0ZS4KKworICAgICAgICBUbyBtYWtlIHRoaXMgcGF0Y2ggd29yaywgSSBh
bHNvIGhhZCB0byBkbyB0aGUgZm9sbG93aW5nIHdvcms6CisKKyAgICAgICAgNS4gUmVmYWN0b3Ig
TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlIGludG8gUHJvYmU6OkNQVVN0YXRlLgorICAgICAgICAg
ICBNYWlubHksIHRoaXMgbWVhbnMgbW92aW5nIHRoZSBjb2RlIG92ZXIgdG8gUHJvYmVDb250ZXh0
LmguCisgICAgICAgICAgIEkgYWxzbyBhZGRlZCBzb21lIGNvbnZlbmllbmNlIGFjY2Vzc29yIG1l
dGhvZHMgZm9yIHNwciByZWdpc3RlcnMuIAorCisgICAgICAgICAgIE1vdmVkIFByb2JlOjpDb250
ZXh0IG92ZXIgdG8gaXRzIG93biBmaWxlIFByb2JlQ29udGV4dC5oL2NwcC4KKworICAgICAgICA2
LiBGaXggYWxsIHByb2JlIHRyYW1wb2xpbmVzIHRvIHBhc3MgdGhlIGFkZHJlc3Mgb2YgUHJvYmU6
OmV4ZWN1dGVQcm9iZSBpbgorICAgICAgICAgICBhZGRpdGlvbiB0byB0aGUgY2xpZW50J3MgcHJv
YmUgZnVuY3Rpb24gYW5kIGFyZy4KKworICAgICAgICAgICBJIGFsc28gdG9vayB0aGlzIG9wcG9y
dHVuaXR5IHRvIG9wdGltaXplIHRoZSBnZW5lcmF0ZWQgSklUIHByb2JlIGNvZGUgdG8KKyAgICAg
ICAgICAgbWluaW1pemUgdGhlIGFtb3VudCBvZiBtZW1vcnkgc3RvcmVzIG5lZWRlZC4gCisKKyAg
ICAgICAgNy4gU2ltcGxpZmllZCB0aGUgQVJNNjQgcHJvYmUgdHJhbXBvbGluZS4gIFRoZSBBUk02
NCBwcm9iZSBvbmx5IHN1cHBvcnRzIGNoYW5naW5nCisgICAgICAgICAgIGVpdGhlciBsciBvciBw
YyAob3IgbmVpdGhlciksIGJ1dCBub3QgYm90aCBhdCBpbiB0aGUgc2FtZSBwcm9iZSBpbnZvY2F0
aW9uLgorICAgICAgICAgICBUaGUgQVJNNjQgcHJvYmUgdHJhbXBvbGluZSB1c2VkIHRvIGhhdmUg
dG8gY2hlY2sgZm9yIHRoaXMgaW52YXJpYW50IGluIHRoZQorICAgICAgICAgICBhc3NlbWJseSB0
cmFtcG9saW5lIGNvZGUuICBXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgUHJvYmU6OmV4ZWN1dGVQ
cm9iZSgpLAorICAgICAgICAgICB3ZSBjYW4gbm93IGRvIGl0IHRoZXJlIGFuZCBzaW1wbGlmeSB0
aGUgdHJhbXBvbGluZS4KKworICAgICAgICA4LiBGaXggYSBidWcgaW4gdGhlIG9sZCAgQVJNNjQg
cHJvYmUgdHJhbXBvbGluZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIGNsaWVudAorICAgICAgICAg
ICBjaGFuZ2VzIGxyLiAgVGhhdCBjb2RlIHBhdGggbmV2ZXIgd29ya2VkIGJlZm9yZSwgYnV0IGhh
cyBub3cgYmVlbiBmaXhlZC4KKworICAgICAgICA5LiBSZW1vdmVkIHRydXN0ZWRJbW0zMkZyb21Q
dHIoKSBoZWxwZXIgZnVuY3Rpb25zIGluIE1hY3JvQXNzZW1ibGVyQVJNIGFuZAorICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckFSTXY3LgorCisgICAgICAgICAgIFdlIGNhbiBub3cgdXNlIG1vdmUo
KSB3aXRoIFRydXN0ZWRJbW1QdHIsIGFuZCBpdCBkb2VzIHRoZSBzYW1lIHRoaW5nIGJ1dCBpbiBh
CisgICAgICAgICAgIG1vcmUgZ2VuZXJpYyB3YXkuCisKKyAgICAgICAxMC4gQVJNdjcncyBtb3Zl
KCkgZW1pdHRlciBtYXkgZW5jb2RlIGEgVDEgbW92ZSBpbnN0cnVjdGlvbiwgd2hpY2ggaGFwcGVu
cyB0byBoYXZlCisgICAgICAgICAgIHRoZSBzYW1lIHNlbWFudGljcyBhcyBtb3ZzIChhY2NvcmRp
bmcgdG8gdGhlIFRodW1iIHNwZWMpLiAgVGhpcyBtZWFucyB0aGVzZQorICAgICAgICAgICBpbnN0
cnVjdGlvbnMgbWF5IHRyYXNoIHRoZSBBUFNSIGZsYWdzIGJlZm9yZSB3ZSBoYXZlIGEgY2hhbmNl
IHRvIHByZXNlcnZlIHRoZW0uCisKKyAgICAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIE1hY3Jv
QXNzZW1ibGVyQVJNdjcncyBwcm9iZSgpIHRvIHByZXNlcnZlIHRoZSBBUFNSIHJlZ2lzdGVyCisg
ICAgICAgICAgIGVhcmx5IG9uLiAgVGhpcyBlbnRhaWxzIGFkZGluZyBzdXBwb3J0IGZvciB0aGUg
bXJzIGluc3RydWN0aW9uIGluIHRoZQorICAgICAgICAgICBBUk12N0Fzc2VtYmxlci4KKworICAg
ICAgIDEwLiBDaGFuZ2UgdGVzdG1hc20ncyB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKCkg
dG8gbm93IG1vZGlmeSBzdGFjayB2YWx1ZXMKKyAgICAgICAgICAgdGhlIGVhc3kgd2F5LgorCisg
ICAgICAgICAgIEFsc28gZml4ZWQgdGVzdG1hc20gdGVzdHMgd2hpY2ggY2hlY2sgZmxhZyByZWdp
c3RlcnMgdG8gb25seSBjb21wYXJlIHRoZQorICAgICAgICAgICBwb3J0aW9ucyB0aGF0IGFyZSBt
b2RpZmlhYmxlIGJ5IHRoZSBjbGllbnQgaS5lLiBzb21lIG1hc2tpbmcgaXMgYXBwbGllZC4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGhhcyBwYXNzZWQgdGhlIHRlc3RtYXNtIHRlc3RzIG9uIHg4Niwg
eDg2XzY0LCBhcm02NCwgYW5kIGFybXY3LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNdjdBc3Nl
bWJsZXI6Om1ycyk6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlND
OjpzdGRGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBy
b2JlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpncHJOYW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpzcHJOYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpmcHJOYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpncHIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OnNwcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6ZnByKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6
OkNQVVN0YXRlOjpmcHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6Q1BVU3RhdGU6OnBjKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OkNQVVN0YXRlOjpmcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
OjpDUFVTdGF0ZTo6c3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6
Q1BVU3RhdGU6OnBjIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OkNQVVN0YXRlOjpmcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpDUFVTdGF0ZTo6c3AgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9i
ZTo6U3RhdGU6Omdwcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlByb2JlOjpTdGF0ZTo6c3By
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YXRlOjpmcHIpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpQcm9iZTo6U3RhdGU6Omdwck5hbWUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpQcm9iZTo6U3RhdGU6OnNwck5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9i
ZTo6U3RhdGU6OmZwck5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhdGU6
OnBjKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YXRlOjpmcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlByb2JlOjpTdGF0ZTo6c3ApOiBEZWxldGVkLgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHA6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyOjpwcm9iZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp0cnVzdGVkSW1tMzJGcm9tUHRyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHA6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwcm9iZSk6CisgICAgICAgIChKU0M6OmFybTY0UHJv
YmVFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuY3BwOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cHJvYmUpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNdjc6OmFybVY3Q29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk12Nzo6dHJ1c3RlZEltbTMyRnJvbVB0cik6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHA6CisgICAgICAgIChKU0M6OlByaW50ZXI6OnBy
aW50Q2FsbGJhY2spOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIu
aDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwOgorICAg
ICAgICAoSlNDOjpjdGlNYXNtUHJvYmVUcmFtcG9saW5lKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnByb2JlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUHJpbnRlci5oOgorICAgICAg
ICAoSlNDOjpQcmludGVyOjpDb250ZXh0OjpDb250ZXh0KToKKyAgICAgICAgKiBhc3NlbWJsZXIv
UHJvYmVDb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByb2JlOjpleGVjdXRlUHJv
YmUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6aGFuZGxlUHJvYmVTdGFja0luaXRpYWxpemF0aW9u
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OnByb2JlU3RhdGVGb3JDb250ZXh0KToKKyAgICAgICAg
KiBhc3NlbWJsZXIvUHJvYmVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcm9iZTo6
Q1BVU3RhdGU6Omdwck5hbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OnNwck5h
bWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OmZwck5hbWUpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6Q1BVU3RhdGU6Omdwcik6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0
ZTo6c3ByKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpmcHIpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpmcHIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OnBjKToKKyAgICAgICAgKEpT
Qzo6UHJvYmU6OkNQVVN0YXRlOjpmcCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6
c3ApOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q1BVU3RhdGU6OnBjIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpmcCBjb25zdCk6CisgICAgICAgIChKU0M6OlByb2JlOjpD
UFVTdGF0ZTo6c3AgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6Q29udGV4
dCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpncHIpOgorICAgICAgICAoSlNDOjpQ
cm9iZTo6Q29udGV4dDo6c3ByKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNvbnRleHQ6OmZwcik6
CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpncHJOYW1lKToKKyAgICAgICAgKEpTQzo6
UHJvYmU6OkNvbnRleHQ6OnNwck5hbWUpOgorICAgICAgICAoSlNDOjpQcm9iZTo6Q29udGV4dDo6
ZnByTmFtZSk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpwYyk6CisgICAgICAgIChK
U0M6OlByb2JlOjpDb250ZXh0OjpmcCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0Ojpz
cCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDb250ZXh0OjpzdGFjayk6CisgICAgICAgIChKU0M6
OlByb2JlOjpDb250ZXh0OjpoYXNXcml0ZXNUb0ZsdXNoKToKKyAgICAgICAgKEpTQzo6UHJvYmU6
OkNvbnRleHQ6OnJlbGVhc2VTdGFjayk6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlU3RhY2su
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJvYmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAo
SlNDOjpQcm9iZTo6UGFnZTo6Zmx1c2hXcml0ZXMpOgorICAgICAgICAoSlNDOjpQcm9iZTo6U3Rh
Y2s6OlN0YWNrKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpoYXNXcml0ZXNUb0ZsdXNo
KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpmbHVzaFdyaXRlcyk6CisgICAgICAgIChK
U0M6OlByb2JlOjpTdGFjazo6ZW5zdXJlUGFnZUZvcik6CisgICAgICAgICogYXNzZW1ibGVyL1By
b2JlU3RhY2suaDogQWRkZWQuCisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpiYXNlQWRkcmVz
c0Zvcik6CisgICAgICAgIChKU0M6OlByb2JlOjpQYWdlOjpjaHVua0FkZHJlc3NGb3IpOgorICAg
ICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6YmFzZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpQcm9i
ZTo6UGFnZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlBhZ2U6OnNldCk6CisgICAgICAg
IChKU0M6OlByb2JlOjpQYWdlOjpoYXNXcml0ZXNUb0ZsdXNoIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJvYmU6OlBhZ2U6OmZsdXNoV3JpdGVzSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpQcm9i
ZTo6UGFnZTo6ZGlydHlCaXRGb3IpOgorICAgICAgICAoSlNDOjpQcm9iZTo6UGFnZTo6cGh5c2lj
YWxBZGRyZXNzRm9yKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpTdGFjayk6CisgICAg
ICAgIChKU0M6OlByb2JlOjpTdGFjazo6bG93V2F0ZXJtYXJrKToKKyAgICAgICAgKEpTQzo6UHJv
YmU6OlN0YWNrOjpnZXQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6OnNldCk6CisgICAg
ICAgIChKU0M6OlByb2JlOjpTdGFjazo6bmV3U3RhY2tQb2ludGVyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJvYmU6OlN0YWNrOjpzZXROZXdTdGFja1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpQ
cm9iZTo6U3RhY2s6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6OnBhZ2VG
b3IpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRl
c3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVX
cml0ZXNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZVByZXNlcnZl
c0dQUlMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcik6Cisg
ICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyVG9JbnNpZGVQcm9iZVN0
YXRlT25TdGFjayk6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVy
VG9OQnl0ZXNCZWxvd1NQKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNQcm9ncmFt
Q291bnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMpOgor
ICAgICAgICAoSlNDOjpydW4pOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
ZmlsbFN0YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNTdGFj
a1dpdGhDYWxsYmFjayk6IERlbGV0ZWQuCisKIDIwMTctMDgtMTkgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIEFkZCBpbnRlcmZhY2Ug
c3R1YnMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIy
MDk1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNzYsNiArNzYsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCiAgICAgYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmNwcAogICAgIGFzc2VtYmxlci9QcmludGVyLmNwcAorICAgIGFzc2Vt
Ymxlci9Qcm9iZUNvbnRleHQuY3BwCisgICAgYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCiAKICAg
ICBiMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAKICAg
ICBiMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwOTU3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTI0MjksNiArMjQyOSwxMCBAQAogCQlGQTNBQjIxMUM4NDk0NTI0QUIz
OTAyNjcgLyogSlNTb3VyY2VDb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY3MzkyNjkxOERDNjQzMzBBRkNERjBENyAvKiBKU1NvdXJjZUNvZGUu
Y3BwICovOyB9OwogCQlGRTBENEEwNjFBQjhERDBBMDAyRjU0QkYgLyogRXhlY3V0aW9uVGltZUxp
bWl0VGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTBENEEwNDFBQjhERDBBMDAyRjU0QkYgLyogRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAg
Ki87IH07CiAJCUZFMEQ0QTA5MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZp
bmFsaXplclRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUwRDRBMDcxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxp
emVyVGVzdC5jcHAgKi87IH07CisJCUZFMTBBQUVCMUY0NEQ1MjgwMDlERURDNSAvKiBQcm9iZVN0
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTEw
QUFFQTFGNDRENTEyMDA5REVEQzUgLyogUHJvYmVTdGFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMTBBQUVDMUY0NEQ1NDUwMDlERURDNSAv
KiBQcm9iZVN0YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMTBBQUU5MUY0NEQ1MTAwMDlERURDNSAvKiBQcm9iZVN0YWNrLmNwcCAqLzsgfTsK
KwkJRkUxMEFBRUUxRjQ0RDk1NDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFBRUQxRjQ0RDk0NjAwOURF
REM1IC8qIFByb2JlQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUZFMTBBQUY0MUY0NjgzOTYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxMEFB
RjMxRjQ2ODI2RDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi87IH07CiAJCUZFMTIyMDI3
MUJFN0Y1OEMwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAvKiBK
SVRBZGRHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkUxMjIwMjgxQkU3RjU5MTAwMzlFNkYyIC8qIEpJ
VEFkZEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTEyMjAyNTFCRTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCAq
LzsgfTsKIAkJRkUxODdBMDExQkZCRTU1RTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4NzlGRjFC
RkJDNzNDMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTUxMDUsNiAr
NTEwOSwxMCBAQAogCQlGRTBENEEwNTFBQjhERDBBMDAyRjU0QkYgLyogRXhlY3V0aW9uVGltZUxp
bWl0VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFeGVjdXRpb25UaW1l
TGltaXRUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTBENEEwNzFBQkEyNDM3MDAyRjU0QkYgLyog
R2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5jcHA7IHBhdGgg
PSBBUEkvdGVzdHMvR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwRDRBMDgxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENv
bnRleHRXaXRoRmluYWxpemVyVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9HbG9i
YWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkUxMEFBRTkxRjQ0RDUxMDAwOURFREM1IC8qIFByb2JlU3RhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvYmVTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFMTBBQUVBMUY0NEQ1MTIwMDlERURDNSAvKiBQcm9iZVN0YWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2JlU3RhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxMEFBRUQxRjQ0RDk0NjAwOURFREM1IC8qIFByb2JlQ29u
dGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9iZUNvbnRleHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxMEFBRjMxRjQ2ODI2RDAwOURFREM1IC8q
IFByb2JlQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
cm9iZUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTEyMjAyNTFC
RTdGNTY0MDAzOUU2RjIgLyogSklUQWRkR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEFkZEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFMTIyMDI2MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQWRkR2VuZXJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMTg3OUZGMUJGQkM3M0MwMDM4QkJDQSAvKiBK
SVRNdWxHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SklUTXVsR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2NzYs
NiArNzY4NCwxMCBAQAogCQkJCTg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1i
bGVyLmggKi8sCiAJCQkJRkU2M0RENTUxRUE5QkM1RDAwMTAzQTY5IC8qIFByaW50ZXIuY3BwICov
LAogCQkJCUZFNjNERDUzMUVBOUI2MEUwMDEwM0E2OSAvKiBQcmludGVyLmggKi8sCisJCQkJRkUx
MEFBRjMxRjQ2ODI2RDAwOURFREM1IC8qIFByb2JlQ29udGV4dC5jcHAgKi8sCisJCQkJRkUxMEFB
RUQxRjQ0RDk0NjAwOURFREM1IC8qIFByb2JlQ29udGV4dC5oICovLAorCQkJCUZFMTBBQUU5MUY0
NEQ1MTAwMDlERURDNSAvKiBQcm9iZVN0YWNrLmNwcCAqLywKKwkJCQlGRTEwQUFFQTFGNDRENTEy
MDA5REVEQzUgLyogUHJvYmVTdGFjay5oICovLAogCQkJCUZFNTMzQ0EwMUYyMTdDMzEwMDE2QTFG
RSAvKiB0ZXN0bWFzbS5jcHAgKi8sCiAJCQkJOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4
NkFzc2VtYmxlci5oICovLAogCQkJKTsKQEAgLTg1OTEsNiArODYwMyw3IEBACiAJCQkJMEZCRjE1
OEQxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDM0NEMDAxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrV29ya2xpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJl
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMTBBQUVFMUY0NEQ5NTQwMDlERURDNSAvKiBQ
cm9iZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFE
NyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3
QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkJEQjlBRDFBQjBGQkM2MDAwQjU3RTUgLyogREZHQ2FsbENy
ZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAg
LTk2MzEsNiArOTY0NCw3IEBACiAJCQkJQUQ0OTM3QzgxREREMEFBRTAwNzdDODA3IC8qIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0MyRDFEQjgzOEZE
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFE
MkZDQkY5MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTEwQUFFQjFGNDRENTI4MDA5REVEQzUgLyogUHJv
YmVTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMUUxREI1OUNCMjAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBRDJGQ0JGQjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFGMURCNTlDQjIwMEIzRTczNiAv
KiBXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLApA
QCAtMTA0NDEsNiArMTA0NTUsNyBAQAogCQkJCTBGNjlDQzg4MTkzQUM2MEEwMDQ1NzU5RSAvKiBE
RkdGcm96ZW5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNzEzMjhERjgyMDAy
QjJBRDcgLyogREZHR3JhcGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkNDRjkxOEE2MDA3
MDAwMUEyN0Y4IC8qIERGR0dyYXBoU2FmZXBvaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZF
MTBBQUY0MUY0NjgzOTYwMDlERURDNSAvKiBQcm9iZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZCMTc2NjAxOTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkM4NDE2ODFCQThDMzIxMDA2MTgzN0QgLyogREZHSW5mZXJyZWRU
eXBlQ2hlY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwNEQ5MDUxN0EwQkFBODAwNkJBNTU0
IC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTA3Mjks
NiArMTA3NDQsNyBAQAogCQkJCTE0N0YzOUQ2MTA3RUMzNzYwMDQyN0E0OCAvKiBKU0NKU1ZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDBGQ0U0MEE1MUU0NkIwMDA1RjA2MSAvKiBKU0Ns
YXNzUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjE2MTY3QkFCRUUwMDZENzYwQSAv
KiBKU0NvbnRleHQubW0gaW4gU291cmNlcyAqLywKKwkJCQlGRTEwQUFFQzFGNDRENTQ1MDA5REVE
QzUgLyogUHJvYmVTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEJENUEzMDBBM0U5MUY2
MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjAyOEI2
MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzJBQUY3Q0QxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMjA5NTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTczNSw2ICs3MzUsNyBAQCBwcml2YXRlOgogICAgICAgICBPUF9TRElWX1QxICAgICAg
PSAweEZCOTAsCiAgICAgICAgIE9QX1VESVZfVDEgICAgICA9IDB4RkJCMCwKICNlbmRpZgorICAg
ICAgICBPUF9NUlNfVDEgICAgICAgPSAweEYzRUYsCiAgICAgfSBPcGNvZGVJRDE7CiAKICAgICB0
eXBlZGVmIGVudW0gewpAQCAtMTQzMyw2ICsxNDM0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IG12bihyZCwgcm0sIFNoaWZ0VHlwZUFuZEFtb3VudCgpKTsKICAgICB9CiAKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgbXJzKFJlZ2lzdGVySUQgcmQsIFNQUmVnaXN0ZXJJRCBzcGVjUmVnKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKHNwZWNSZWcgPT0gQVJNUmVnaXN0ZXJzOjphcHNyKTsKKyAgICAg
ICAgQVNTRVJUKCFCYWRSZWcocmQpKTsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgc3BlY2lhbFJl
Z2lzdGVyQml0ID0gKHNwZWNSZWcgPT0gQVJNUmVnaXN0ZXJzOjphcHNyKSA/IDAgOiAoMSA8PCA0
KTsKKyAgICAgICAgT3Bjb2RlSUQxIG1yc09wID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQxPihPUF9N
UlNfVDEgfCBzcGVjaWFsUmVnaXN0ZXJCaXQpOworICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3Jk
T3AxNkZvdXJGb3VycyhtcnNPcCwgRm91ckZvdXJzKDB4OCwgcmQsIDAsIDApKTsKKyAgICB9CisK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbmVnKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm0p
CiAgICAgewogICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSB6ZXJvID0gQVJNVGh1bWJJbW1lZGlh
dGU6Om1ha2VVSW50MTIoMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjIwOTU3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0Myw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKIAotI2lmIEVOQUJMRShNQVNNX1BST0JFKQotbmFtZXNw
YWNlIFByb2JlIHsKLXN0cnVjdCBTdGF0ZTsKLXR5cGVkZWYgdm9pZCAoKkZ1bmN0aW9uKShzdHJ1
Y3QgU3RhdGUqKTsKLX0gLy8gbmFtZXNwYWNlIFByb2JlCi0jZW5kaWYKLSAgICAKIGNsYXNzIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZTsKIGNsYXNzIERpc2FsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZTsKIGNsYXNzIExpbmtCdWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjIw
OTU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShBU1NFTUJM
RVIpCiAKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNSwxNSArMzYsMTUgQEAgbmFtZXNwYWNlIEpT
QyB7CiBjb25zdCBkb3VibGUgTWFjcm9Bc3NlbWJsZXI6OnR3b1RvVGhlMzIgPSAoZG91YmxlKTB4
MTAwMDAwMDAwdWxsOwogCiAjaWYgRU5BQkxFKE1BU01fUFJPQkUpCi1zdGF0aWMgdm9pZCBzdGRG
dW5jdGlvbkNhbGxiYWNrKFByb2JlOjpTdGF0ZSogc3RhdGUpCitzdGF0aWMgdm9pZCBzdGRGdW5j
dGlvbkNhbGxiYWNrKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8gZnVuYyA9
IHN0YXRpY19jYXN0PGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6U3RhdGUqKT4qPihz
dGF0ZS0+YXJnKTsKLSAgICAoKmZ1bmMpKHN0YXRlKTsKKyAgICBhdXRvIGZ1bmMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4qPihjb250ZXh0
LmFyZyk7CisgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFjcm9Bc3NlbWJs
ZXI6OnByb2JlKHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6U3RhdGUqKT4gZnVuYykKK3ZvaWQg
TWFjcm9Bc3NlbWJsZXI6OnByb2JlKHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYp
PiBmdW5jKQogewotICAgIHByb2JlKHN0ZEZ1bmN0aW9uQ2FsbGJhY2ssIG5ldyBzdGQ6OmZ1bmN0
aW9uPHZvaWQoUHJvYmU6OlN0YXRlKik+KGZ1bmMpKTsKKyAgICBwcm9iZShzdGRGdW5jdGlvbkNh
bGxiYWNrLCBuZXcgc3RkOjpmdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KGZ1bmMpKTsK
IH0KICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjIwOTU3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsMjEgQEAgbmFtZXNwYWNlIEpTQyB7IHR5cGVkZWYg
TWFjcm9Bc3NlbWJsZXJYOAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmIEVOQUJMRShNQVNNX1BS
T0JFKQorbmFtZXNwYWNlIFByb2JlIHsKKworY2xhc3MgQ29udGV4dDsKK3R5cGVkZWYgdm9pZCAo
KkZ1bmN0aW9uKShDb250ZXh0Jik7CisKK30gLy8gbmFtZXNwYWNlIFByb2JlCisjZW5kaWYgLy8g
RU5BQkxFKE1BU01fUFJPQkUpCisKIG5hbWVzcGFjZSBQcmludGVyIHsKIAogc3RydWN0IFByaW50
UmVjb3JkOwogdHlwZWRlZiBWZWN0b3I8UHJpbnRSZWNvcmQ+IFByaW50UmVjb3JkTGlzdDsKIAot
fQorfSAvLyBuYW1lc3BhY2UgUHJpbnRlcgogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1Ymxp
YyBNYWNyb0Fzc2VtYmxlckJhc2UgewogcHVibGljOgpAQCAtMTgyNSw4ICsxODM0LDYgQEAgcHVi
bGljOgogICAgIH0KIAogI2lmIEVOQUJMRShNQVNNX1BST0JFKQotICAgIHN0cnVjdCBDUFVTdGF0
ZTsKLQogICAgIC8vIFRoaXMgZnVuY3Rpb24gZW1pdHMgY29kZSB0byBwcmVzZXJ2ZSB0aGUgQ1BV
U3RhdGUgKGUuZy4gcmVnaXN0ZXJzKSwKICAgICAvLyBjYWxsIGEgdXNlciBzdXBwbGllZCBwcm9i
ZSBmdW5jdGlvbiwgYW5kIHJlc3RvcmUgdGhlIENQVVN0YXRlIGJlZm9yZQogICAgIC8vIGNvbnRp
bnVpbmcgd2l0aCBvdGhlciBKSVQgZ2VuZXJhdGVkIGNvZGUuCkBAIC0xODc4LDcgKzE4ODUsNyBA
QCBwdWJsaWM6CiAgICAgLy8gTWFjcm9Bc3NlbWJsZXIuCiAgICAgdm9pZCBwcm9iZShQcm9iZTo6
RnVuY3Rpb24sIHZvaWQqIGFyZyk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByb2Jl
KHN0ZDo6ZnVuY3Rpb248dm9pZChQcm9iZTo6U3RhdGUqKT4pOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcHJvYmUoc3RkOjpmdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKIAog
ICAgIC8vIExldCdzIHlvdSBwcmludCBmcm9tIHlvdXIgSklUIGdlbmVyYXRlZCBjb2RlLgogICAg
IC8vIFNlZSBjb21tZW50cyBpbiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCBmb3IgZXhhbXBsZXMg
b2YgaG93IHRvIHVzZSB0aGlzLgpAQCAtMTg4OSwxNzMgKzE4OTYsNiBAQCBwdWJsaWM6CiAjZW5k
aWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiB9OwogCi0jaWYgRU5BQkxFKE1BU01fUFJPQkUpCi1z
dHJ1Y3QgTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlIHsKLSAgICBzdGF0aWMgaW5saW5lIGNvbnN0
IGNoYXIqIGdwck5hbWUoUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6Omdw
ck5hbWUoaWQpOyB9Ci0gICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVn
aXN0ZXJJRCBpZCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnNwck5hbWUoaWQpOyB9Ci0gICAg
c3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1
cm4gTWFjcm9Bc3NlbWJsZXI6OmZwck5hbWUoaWQpOyB9Ci0gICAgaW5saW5lIHVpbnRwdHJfdCYg
Z3ByKFJlZ2lzdGVySUQpOwotICAgIGlubGluZSB1aW50cHRyX3QmIHNwcihTUFJlZ2lzdGVySUQp
OwotICAgIGlubGluZSBkb3VibGUmIGZwcihGUFJlZ2lzdGVySUQpOwotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6
dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+Ci0gICAgVCBncHIoUmVnaXN0ZXJJRCkgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19w
b2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KLSAgICBUIGdwcihSZWdpc3RlcklE
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwcihGUFJlZ2lzdGVySUQpIGNv
bnN0OwotCi0gICAgdm9pZComIHBjKCk7Ci0gICAgdm9pZComIGZwKCk7Ci0gICAgdm9pZComIHNw
KCk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBwYygpIGNvbnN0OwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFQgZnAoKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHNw
KCkgY29uc3Q7Ci0KLSAgICB1aW50cHRyX3QgZ3Byc1tNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZS
ZWdpc3RlcnMoKV07Ci0gICAgdWludHB0cl90IHNwcnNbTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9m
U1BSZWdpc3RlcnMoKV07Ci0gICAgZG91YmxlIGZwcnNbTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9m
RlBSZWdpc3RlcnMoKV07Ci19OwotCi1pbmxpbmUgdWludHB0cl90JiBNYWNyb0Fzc2VtYmxlcjo6
Q1BVU3RhdGU6OmdwcihSZWdpc3RlcklEIGlkKQotewotICAgIEFTU0VSVChpZCA+PSBNYWNyb0Fz
c2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpICYmIGlkIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0UmVn
aXN0ZXIoKSk7Ci0gICAgcmV0dXJuIGdwcnNbaWRdOwotfQotCi1pbmxpbmUgdWludHB0cl90JiBN
YWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OnNwcihTUFJlZ2lzdGVySUQgaWQpCi17Ci0gICAgQVNT
RVJUKGlkID49IE1hY3JvQXNzZW1ibGVyOjpmaXJzdFNQUmVnaXN0ZXIoKSAmJiBpZCA8PSBNYWNy
b0Fzc2VtYmxlcjo6bGFzdFNQUmVnaXN0ZXIoKSk7Ci0gICAgcmV0dXJuIHNwcnNbaWRdOwotfQot
Ci1pbmxpbmUgZG91YmxlJiBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OmZwcihGUFJlZ2lzdGVy
SUQgaWQpCi17Ci0gICAgQVNTRVJUKGlkID49IE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0
ZXIoKSAmJiBpZCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKSk7Ci0gICAgcmV0
dXJuIGZwcnNbaWRdOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqPgotVCBNYWNyb0Fzc2Vt
Ymxlcjo6Q1BVU3RhdGU6OmdwcihSZWdpc3RlcklEIGlkKSBjb25zdAotewotICAgIENQVVN0YXRl
KiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFQ+KGNwdS0+Z3ByKGlkKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlKj4KLVQgTWFj
cm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpncHIoUmVnaXN0ZXJJRCBpZCkgY29uc3QKLXsKLSAgICBD
UFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFQ+KGNwdS0+Z3ByKGlkKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1UIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6ZnByKEZQUmVnaXN0ZXJJRCBpZCkgY29u
c3QKLXsKLSAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwot
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4oY3B1LT5mcHIoaWQpKTsKLX0KLQotaW5saW5lIHZv
aWQqJiBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU6OnBjKCkKLXsKLSNpZiBDUFUoWDg2KSB8fCBD
UFUoWDg2XzY0KQotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZzcHIoWDg2
UmVnaXN0ZXJzOjplaXApKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmc3ByKEFSTTY0UmVnaXN0ZXJzOjpwYykpOwotI2VsaWYgQ1BVKEFS
TV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OnBjKSk7Ci0jZWxpZiBDUFUoTUlQUykK
LSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2Vsc2UKLSNlcnJvciAiVW5zdXBw
b3J0ZWQgQ1BVIgotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkKiYgTWFjcm9Bc3NlbWJsZXI6OkNQ
VVN0YXRlOjpmcCgpCi17Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKFg4NlJlZ2lzdGVyczo6ZWJwKSk7Ci0jZWxp
ZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihB
Uk02NFJlZ2lzdGVyczo6ZnApKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RS
QURJVElPTkFMKQotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJN
UmVnaXN0ZXJzOjpmcCkpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVnaXN0ZXJzOjpmcCkpOwotI2Vsc2UKLSNlcnJvciAi
VW5zdXBwb3J0ZWQgQ1BVIgotI2VuZGlmCi19Ci0KLWlubGluZSB2b2lkKiYgTWFjcm9Bc3NlbWJs
ZXI6OkNQVVN0YXRlOjpzcCgpCi17Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKLSAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKFg4NlJlZ2lzdGVyczo6ZXNwKSk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4o
JmdwcihBUk02NFJlZ2lzdGVyczo6c3ApKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUo
QVJNX1RSQURJVElPTkFMKQotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZn
cHIoQVJNUmVnaXN0ZXJzOjpzcCkpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVnaXN0ZXJzOjpzcCkpOwotI2Vsc2UKLSNl
cnJvciAiVW5zdXBwb3J0ZWQgQ1BVIgotI2VuZGlmCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1UIE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6cGMoKSBjb25zdAotewotICAgIENQVVN0YXRl
KiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8VD4oY3B1LT5wYygpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLVQgTWFj
cm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpmcCgpIGNvbnN0Ci17Ci0gICAgQ1BVU3RhdGUqIGNwdSA9
IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxUPihjcHUtPmZwKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotVCBNYWNyb0Fzc2Vt
Ymxlcjo6Q1BVU3RhdGU6OnNwKCkgY29uc3QKLXsKLSAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3Rf
Y2FzdDxDUFVTdGF0ZSo+KHRoaXMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNw
dS0+c3AoKSk7Ci19Ci0KLW5hbWVzcGFjZSBQcm9iZSB7Ci0KLXN0cnVjdCBTdGF0ZSB7Ci0gICAg
dXNpbmcgQ1BVU3RhdGUgPSBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU7Ci0gICAgdXNpbmcgUmVn
aXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEOwotICAgIHVzaW5nIFNQUmVnaXN0
ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpTUFJlZ2lzdGVySUQ7Ci0gICAgdXNpbmcgRlBSZWdpc3Rl
cklEID0gTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRDsKLQotICAgIEZ1bmN0aW9uIHByb2Jl
RnVuY3Rpb247Ci0gICAgdm9pZCogYXJnOwotICAgIEZ1bmN0aW9uIGluaXRpYWxpemVTdGFja0Z1
bmN0aW9uOwotICAgIHZvaWQqIGluaXRpYWxpemVTdGFja0FyZzsKLSAgICBDUFVTdGF0ZSBjcHU7
Ci0KLSAgICAvLyBDb252ZW5pZW5jZSBtZXRob2RzOgotICAgIHVpbnRwdHJfdCYgZ3ByKFJlZ2lz
dGVySUQgaWQpIHsgcmV0dXJuIGNwdS5ncHIoaWQpOyB9Ci0gICAgdWludHB0cl90JiBzcHIoU1BS
ZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuc3ByKGlkKTsgfQotICAgIGRvdWJsZSYgZnByKEZQ
UmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gY3B1LmZwcihpZCk7IH0KLSAgICBjb25zdCBjaGFyKiBn
cHJOYW1lKFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIGNwdS5ncHJOYW1lKGlkKTsgfQotICAgIGNv
bnN0IGNoYXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBjcHUuc3ByTmFtZShp
ZCk7IH0KLSAgICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4g
Y3B1LmZwck5hbWUoaWQpOyB9Ci0KLSAgICB2b2lkKiYgcGMoKSB7IHJldHVybiBjcHUucGMoKTsg
fQotICAgIHZvaWQqJiBmcCgpIHsgcmV0dXJuIGNwdS5mcCgpOyB9Ci0gICAgdm9pZComIHNwKCkg
eyByZXR1cm4gY3B1LnNwKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgcGMoKSB7
IHJldHVybiBjcHUucGM8VD4oKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZnAoKSB7
IHJldHVybiBjcHUuZnA8VD4oKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgc3AoKSB7
IHJldHVybiBjcHUuc3A8VD4oKTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgUHJvYmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNw
YWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAJKHJldmlzaW9uIDIyMDk1NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUo
QVJNNjQpCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKIAorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC0xMjYsOCArMTI3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEFSTTY0UmVnaXN0ZXJzOwogI2RlZmlu
ZSBQUk9CRV9TSVpFIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMzIgKiBGUFJFR19TSVpF
KSkKIAogI2RlZmluZSBTQVZFRF9QUk9CRV9SRVRVUk5fUENfT0ZGU0VUICAgICAgICAoUFJPQkVf
U0laRSArICgwICogUFRSX1NJWkUpKQotI2RlZmluZSBTQVZFRF9QUk9CRV9MUl9PRkZTRVQgICAg
ICAgICAgICAgICAoUFJPQkVfU0laRSArICgxICogUFRSX1NJWkUpKQotI2RlZmluZSBTQVZFRF9Q
Uk9CRV9FUlJPUl9GVU5DVElPTl9PRkZTRVQgICAoUFJPQkVfU0laRSArICgyICogUFRSX1NJWkUp
KQogI2RlZmluZSBQUk9CRV9TSVpFX1BMVVNfRVhUUkFTICAgICAgICAgICAgICAoUFJPQkVfU0la
RSArICgzICogUFRSX1NJWkUpKQogCiAvLyBUaGVzZSBBU1NFUlRzIHJlbWluZCB5b3UgdGhhdCBp
ZiB5b3UgY2hhbmdlIHRoZSBsYXlvdXQgb2YgUHJvYmU6OlN0YXRlLApAQCAtMjI1LDMxICsyMjQs
MjkgQEAgc3RhdGljX2Fzc2VydCghKFBST0JFX1NJWkVfUExVU19FWFRSQVMgJgogI2RlZmluZSBG
UFJfT0ZGU0VUKGZwcikgKFBST0JFX0NQVV8jI2ZwciMjX09GRlNFVCAtIFBST0JFX0NQVV9RMF9P
RkZTRVQpCiAKIHN0cnVjdCBJbmNvbWluZ1Byb2JlUmVjb3JkIHsKLSAgICB1aW50cHRyX3QgcHJv
YmVIYW5kbGVyRnVuY3Rpb247Ci0gICAgdWludHB0cl90IHByb2JlQXJnOworICAgIHVpbnRwdHJf
dCB4MjQ7CisgICAgdWludHB0cl90IHgyNTsKICAgICB1aW50cHRyX3QgeDI2OwogICAgIHVpbnRw
dHJfdCB4Mjc7Ci0gICAgdWludHB0cl90IGxyOwotICAgIHVpbnRwdHJfdCBzcDsKLSAgICB1aW50
cHRyX3QgcHJvYmVFcnJvckZ1bmN0aW9uOwotICAgIHVpbnRwdHJfdCB1bnVzZWQ7IC8vIFBhZGRp
bmcgZm9yIGFsaWdubWVudC4KKyAgICB1aW50cHRyX3QgeDI4OworICAgIHVpbnRwdHJfdCB4MzA7
IC8vIGxyCiB9OwogCi0jZGVmaW5lIElOX0hBTkRMRVJfRlVOQ1RJT05fT0ZGU0VUICgwICogUFRS
X1NJWkUpCi0jZGVmaW5lIElOX0FSR19PRkZTRVQgICAgICAgICAgICAgICgxICogUFRSX1NJWkUp
Ci0jZGVmaW5lIElOX1gyNl9PRkZTRVQgICAgICAgICAgICAgICgyICogUFRSX1NJWkUpCi0jZGVm
aW5lIElOX1gyN19PRkZTRVQgICAgICAgICAgICAgICgzICogUFRSX1NJWkUpCi0jZGVmaW5lIElO
X0xSX09GRlNFVCAgICAgICAgICAgICAgICg0ICogUFRSX1NJWkUpCi0jZGVmaW5lIElOX1NQX09G
RlNFVCAgICAgICAgICAgICAgICg1ICogUFRSX1NJWkUpCi0jZGVmaW5lIElOX0VSUk9SX0ZVTkNU
SU9OX09GRlNFVCAgICg2ICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1gyNF9PRkZTRVQgKDAgKiBQ
VFJfU0laRSkKKyNkZWZpbmUgSU5fWDI1X09GRlNFVCAoMSAqIFBUUl9TSVpFKQorI2RlZmluZSBJ
Tl9YMjZfT0ZGU0VUICgyICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1gyN19PRkZTRVQgKDMgKiBQ
VFJfU0laRSkKKyNkZWZpbmUgSU5fWDI4X09GRlNFVCAoNCAqIFBUUl9TSVpFKQorI2RlZmluZSBJ
Tl9YMzBfT0ZGU0VUICg1ICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1NJWkUgICAgICAgKDYgKiBQ
VFJfU0laRSkKIAotc3RhdGljX2Fzc2VydChJTl9IQU5ETEVSX0ZVTkNUSU9OX09GRlNFVCA9PSBv
ZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCBwcm9iZUhhbmRsZXJGdW5jdGlvbiksICJJTl9I
QU5ETEVSX0ZVTkNUSU9OX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRpY19hc3NlcnQoSU5f
QVJHX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCBwcm9iZUFyZyksICJJ
Tl9BUkdfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9YMjRfT0ZGU0VU
ID09IG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIHgyNCksICJJTl9YMjRfT0ZGU0VUIGlz
IGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9YMjVfT0ZGU0VUID09IG9mZnNldG9mKElu
Y29taW5nUHJvYmVSZWNvcmQsIHgyNSksICJJTl9YMjVfT0ZGU0VUIGlzIGluY29ycmVjdCIpOwog
c3RhdGljX2Fzc2VydChJTl9YMjZfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNv
cmQsIHgyNiksICJJTl9YMjZfT0ZGU0VUIGlzIGluY29ycmVjdCIpOwogc3RhdGljX2Fzc2VydChJ
Tl9YMjdfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIHgyNyksICJJTl9Y
MjdfT0ZGU0VUIGlzIGluY29ycmVjdCIpOwotc3RhdGljX2Fzc2VydChJTl9MUl9PRkZTRVQgPT0g
b2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgbHIpLCAiSU5fTFJfT0ZGU0VUIGlzIGluY29y
cmVjdCIpOwotc3RhdGljX2Fzc2VydChJTl9TUF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQ
cm9iZVJlY29yZCwgc3ApLCAiSU5fU1BfT0ZGU0VUIGlzIGluY29ycmVjdCIpOwotc3RhdGljX2Fz
c2VydChJTl9FUlJPUl9GVU5DVElPTl9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJl
Y29yZCwgcHJvYmVFcnJvckZ1bmN0aW9uKSwgIklOX0VSUk9SX0ZVTkNUSU9OX09GRlNFVCBpcyBp
bmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fWDI4X09GRlNFVCA9PSBvZmZzZXRvZihJbmNv
bWluZ1Byb2JlUmVjb3JkLCB4MjgpLCAiSU5fWDIyX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0
YXRpY19hc3NlcnQoSU5fWDMwX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3Jk
LCB4MzApLCAiSU5fWDIzX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5f
U0laRSA9PSBzaXplb2YoSW5jb21pbmdQcm9iZVJlY29yZCksICJJTl9TSVpFIGlzIGluY29ycmVj
dCIpOwogc3RhdGljX2Fzc2VydCghKHNpemVvZihJbmNvbWluZ1Byb2JlUmVjb3JkKSAmIDB4Ziks
ICJJbmNvbWluZ1Byb2JlU3RhY2sgbXVzdCBiZSAxNi1ieXRlIGFsaWduZWQiKTsKIAogc3RydWN0
IE91dGdvaW5nUHJvYmVSZWNvcmQgewpAQCAtMjc4LDkgKzI3NSwxNyBAQCBzdGF0aWNfYXNzZXJ0
KE9VVF9MUl9PRkZTRVQgPT0gb2Zmc2V0b2YoCiBzdGF0aWNfYXNzZXJ0KE9VVF9TSVpFID09IHNp
emVvZihPdXRnb2luZ1Byb2JlUmVjb3JkKSwgIk9VVF9TSVpFIGlzIGluY29ycmVjdCIpOwogc3Rh
dGljX2Fzc2VydCghKHNpemVvZihPdXRnb2luZ1Byb2JlUmVjb3JkKSAmIDB4ZiksICJPdXRnb2lu
Z1Byb2JlU3RhY2sgbXVzdCBiZSAxNi1ieXRlIGFsaWduZWQiKTsKIAotI2RlZmluZSBTVEFURV9Q
Q19OT1RfQ0hBTkdFRCAwCi0jZGVmaW5lIFNUQVRFX1BDX0NIQU5HRUQgMQotc3RhdGljX2Fzc2Vy
dChTVEFURV9QQ19OT1RfQ0hBTkdFRCAhPSBTVEFURV9QQ19DSEFOR0VELCAiU1RBVEVfUENfTk9U
X0NIQU5HRUQgYW5kIFNUQVRFX1BDX0NIQU5HRUQgc2hvdWxkIG5vdCBiZSBlcXVhbCIpOworc3Ry
dWN0IExSUmVzdG9yYXRpb25SZWNvcmQgeworICAgIHVpbnRwdHJfdCBscjsKKyAgICB1aW50cHRy
X3QgdW51c2VkRHVtbXlUb0Vuc3VyZVNpemVJczE2Qnl0ZUFsaWduZWQ7Cit9OworCisjZGVmaW5l
IExSX1JFU1RPUkFUSU9OX0xSX09GRlNFVCAoMCAqIFBUUl9TSVpFKQorI2RlZmluZSBMUl9SRVNU
T1JBVElPTl9TSVpFICAgICAgKDIgKiBQVFJfU0laRSkKKworc3RhdGljX2Fzc2VydChMUl9SRVNU
T1JBVElPTl9MUl9PRkZTRVQgPT0gb2Zmc2V0b2YoTFJSZXN0b3JhdGlvblJlY29yZCwgbHIpLCAi
TFJfUkVTVE9SQVRJT05fTFJfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChM
Ul9SRVNUT1JBVElPTl9TSVpFID09IHNpemVvZihMUlJlc3RvcmF0aW9uUmVjb3JkKSwgIkxSX1JF
U1RPUkFUSU9OX1NJWkUgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KCEoc2l6ZW9mKExS
UmVzdG9yYXRpb25SZWNvcmQpICYgMHhmKSwgIkxSUmVzdG9yYXRpb25SZWNvcmQgbXVzdCBiZSAx
Ni1ieXRlIGFsaWduZWQiKTsKIAogLy8gV2UgdXNlIHgyOSBhbmQgeDMwIGluc3RlYWQgb2YgZnAg
YW5kIGxyIGJlY2F1c2UgR0NDJ3MgaW5saW5lIGFzc2VtYmxlciBkb2VzIG5vdCByZWNvZ25pemUg
ZnAgYW5kIGxyLgogLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU1MTIgZm9yIGRldGFpbHMuCkBAIC0yOTMsNiArMjk4LDE0IEBAIGFzbSAoCiAKICAgICAv
LyBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpwcm9iZSgpIGhhcyBhbHJlYWR5IGdlbmVyYXRlZCBjb2Rl
IHRvIHN0b3JlIHNvbWUgdmFsdWVzIGluIGFuCiAgICAgLy8gSW5jb21pbmdQcm9iZVJlY29yZC4g
c3AgcG9pbnRzIHRvIHRoZSBJbmNvbWluZ1Byb2JlUmVjb3JkLgorICAgIC8vCisgICAgLy8gSW5j
b21pbmcgcmVnaXN0ZXIgdmFsdWVzOgorICAgIC8vICAgICB4MjQ6IHByb2JlIGZ1bmN0aW9uCisg
ICAgLy8gICAgIHgyNTogcHJvYmUgYXJnCisgICAgLy8gICAgIHgyNjogc2NyYXRjaCwgd2FzIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUKKyAgICAvLyAgICAgeDI3OiBzY3JhdGNoCisgICAgLy8gICAg
IHgyODogUHJvYmU6OmV4ZWN1dGVQcm9iZQorICAgIC8vICAgICB4MzA6IHJldHVybiBhZGRyZXNz
CiAKICAgICAibW92ICAgICAgIHgyNiwgc3AiICJcbiIKICAgICAibW92ICAgICAgIHgyNywgc3Ai
ICJcbiIKQEAgLTMwMSw2ICszMTQsOCBAQCBhc20gKAogICAgICJiaWMgICAgICAgeDI3LCB4Mjcs
ICMweGYiICJcbiIgLy8gVGhlIEFSTSBFQUJJIHNwZWNpZmllcyB0aGF0IHRoZSBzdGFjayBuZWVk
cyB0byBiZSAxNiBieXRlIGFsaWduZWQuCiAgICAgIm1vdiAgICAgICBzcCwgeDI3IiAiXG4iIC8v
IFNldCB0aGUgc3AgdG8gcHJvdGVjdCB0aGUgUHJvYmU6OlN0YXRlIGZyb20gaW50ZXJydXB0cyBi
ZWZvcmUgd2UgaW5pdGlhbGl6ZSBpdC4KIAorICAgICJzdHAgICAgICAgeDI0LCB4MjUsIFtzcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJc
biIgLy8gU3RvcmUgdGhlIHByb2JlIGhhbmRsZXIgZnVuY3Rpb24gYW5kIGFyZyAocHJlbG9hZGVk
IGludG8geDI0IGFuZCB4MjUKKwogICAgICJzdHAgICAgICAgeDAsIHgxLCBbc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDBfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJtcnMgICAg
ICAgeDAsIG56Y3YiICJcbiIgLy8gUHJlbG9hZCBuemN2LgogICAgICJzdHAgICAgICAgeDIsIHgz
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDJfT0ZGU0VUKSAiXSIgIlxu
IgpAQCAtMzA5LDEwICszMjQsMTAgQEAgYXNtICgKICAgICAic3RwICAgICAgIHg2LCB4NywgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1g2X09GRlNFVCkgIl0iICJcbiIKICAg
ICAic3RwICAgICAgIHg4LCB4OSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X1g4X09GRlNFVCkgIl0iICJcbiIKIAotICAgICJsZHAgICAgICAgeDIsIHgzLCBbeDI2LCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoSU5fSEFORExFUl9GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iIC8v
IFByZWxvYWQgcHJvYmUgaGFuZGxlciBmdW5jdGlvbiBhbmQgcHJvYmUgYXJnLgotICAgICJsZHAg
ICAgICAgeDQsIHg1LCBbeDI2LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fWDI2X09GRlNFVCkg
Il0iICJcbiIgLy8gUHJlbG9hZCBzYXZlZCByMjYgYW5kIHIyNy4KLSAgICAibGRwICAgICAgIHg2
LCB4NywgW3gyNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX0xSX09GRlNFVCkgIl0iICJcbiIg
Ly8gUHJlbG9hZCBzYXZlZCBsciBhbmQgc3AuCi0gICAgImxkciAgICAgICB4OCwgW3gyNiwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKElOX0VSUk9SX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIgLy8g
UHJlbG9hZCBwcm9iZSBlcnJvciBmdW5jdGlvbi4KKyAgICAibGRwICAgICAgIHgyLCB4MywgW3gy
NiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1gyNF9PRkZTRVQpICJdIiAiXG4iIC8vIFByZWxv
YWQgc2F2ZWQgeDI0IGFuZCB4MjUuCisgICAgImxkcCAgICAgICB4NCwgeDUsIFt4MjYsICMiIFNU
UklOR0laRV9WQUxVRV9PRihJTl9YMjZfT0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVsb2FkIHNhdmVk
IHgyNiBhbmQgeDI3LgorICAgICJsZHAgICAgICAgeDYsIHg3LCBbeDI2LCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoSU5fWDI4X09GRlNFVCkgIl0iICJcbiIgLy8gUHJlbG9hZCBzYXZlZCB4MjggYW5k
IGxyLgorICAgICJhZGQgICAgICAgeDI2LCB4MjYsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9T
SVpFKSAiXG4iIC8vIENvbXB1dGUgdGhlIHNwIGJlZm9yZSB0aGUgcHJvYmUuCiAKICAgICAic3Rw
ICAgICAgIHgxMCwgeDExLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDEw
X09GRlNFVCkgIl0iICJcbiIKICAgICAic3RwICAgICAgIHgxMiwgeDEzLCBbc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDEyX09GRlNFVCkgIl0iICJcbiIKQEAgLTMyMSwxMiAr
MzM2LDExIEBAIGFzbSAoCiAgICAgInN0cCAgICAgICB4MTgsIHgxOSwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gxOF9PRkZTRVQpICJdIiAiXG4iCiAgICAgInN0cCAgICAg
ICB4MjAsIHgyMSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyMF9PRkZT
RVQpICJdIiAiXG4iCiAgICAgInN0cCAgICAgICB4MjIsIHgyMywgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1gyMl9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0cCAgICAgICB4
MjQsIHgyNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyNF9PRkZTRVQp
ICJdIiAiXG4iCisgICAgInN0cCAgICAgICB4MiwgeDMsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9YMjRfT0ZGU0VUKSAiXSIgIlxuIiAvLyBTdG9yZSBzYXZlZCByMjQgYW5k
IHIyNSAocHJlbG9hZGVkIGludG8geDIgYW5kIHgzIGFib3ZlKS4KICAgICAic3RwICAgICAgIHg0
LCB4NSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyNl9PRkZTRVQpICJd
IiAiXG4iIC8vIFN0b3JlIHNhdmVkIHIyNiBhbmQgcjI3IChwcmVsb2FkZWQgaW50byB4NCBhbmQg
eDUgYWJvdmUpLgotICAgICJzdHAgICAgICAgeDI4LCB4MjksIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9YMjhfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdHAgICAgICAgeDYs
IHg3LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIg
IlxuIiAvLyBTYXZlIHZhbHVlcyBsciBhbmQgc3AgKHByZWxvYWRlZCBpbnRvIHg2IGFuZCB4NyBh
Ym92ZSkuCisgICAgInN0cCAgICAgICB4NiwgeDI5LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9DUFVfWDI4X09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RwICAgICAgIHg3LCB4MjYs
IFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4i
IC8vIFNhdmUgdmFsdWVzIGxyIGFuZCBzcCAob3JpZ2luYWwgc3AgdmFsdWUgY29tcHV0ZWQgaW50
byB4MjYgYWJvdmUpLgogCi0gICAgInN0ciAgICAgICB4NiwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoU0FWRURfUFJPQkVfTFJfT0ZGU0VUKSAiXSIgIlxuIiAvLyBTYXZlIGEgZHVwbGljYXRl
IGNvcHkgb2YgbHIgKGluIHg2KS4KICAgICAic3RyICAgICAgIHgzMCwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoU0FWRURfUFJPQkVfUkVUVVJOX1BDX09GRlNFVCkgIl0iICJcbiIgLy8gU2F2
ZSBhIGR1cGxpY2F0ZSBjb3B5IG9mIHJldHVybiBwYyAoaW4gbHIpLgogCiAgICAgImFkZCAgICAg
ICB4MzAsIHgzMCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKDIgKiBQVFJfU0laRSkgIlxuIiAvLyBU
aGUgUEMgYWZ0ZXIgdGhlIHByb2JlIGlzIGF0IDIgaW5zdHJ1Y3Rpb25zIHBhc3QgdGhlIHJldHVy
biBwb2ludC4KQEAgLTMzNCw5ICszNDgsNiBAQCBhc20gKAogCiAgICAgInN0cCAgICAgICB4MCwg
eDEsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9OWkNWX09GRlNFVCkgIl0i
ICJcbiIgLy8gU3RvcmUgbnpjdiBhbmQgZnBzciAocHJlbG9hZGVkIGludG8geDAgYW5kIHgxIGFi
b3ZlKS4KIAotICAgICJzdHAgICAgICAgeDIsIHgzLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iIC8vIFN0b3JlIHRoZSBwcm9i
ZSBoYW5kbGVyIGZ1bmN0aW9uIGFuZCBhcmcgKHByZWxvYWRlZCBpbnRvIHgyIGFuZCB4MyBhYm92
ZSkuCi0gICAgInN0ciAgICAgICB4OCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoU0FWRURf
UFJPQkVfRVJST1JfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIiAvLyBTdG9yZSB0aGUgcHJvYmUg
aGFuZGxlciBmdW5jdGlvbiBhbmQgYXJnIChwcmVsb2FkZWQgaW50byB4OCBhYm92ZSkuCi0KICAg
ICAiYWRkICAgICAgIHg5LCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9RMF9P
RkZTRVQpICJcbiIKICAgICAic3RwICAgICAgIGQwLCBkMSwgW3g5LCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoRlBSX09GRlNFVChRMCkpICJdIiAiXG4iCiAgICAgInN0cCAgICAgICBkMiwgZDMsIFt4
OSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKEZQUl9PRkZTRVQoUTIpKSAiXSIgIlxuIgpAQCAtMzU3
LDEzICszNjgsMTAgQEAgYXNtICgKIAogICAgICJtb3YgICAgICAgeDI3LCBzcCIgIlxuIiAvLyBT
YXZlIHRoZSBQcm9iZTo6U3RhdGUqIGluIGEgY2FsbGVlIHNhdmVkIHJlZ2lzdGVyLgogCi0gICAg
Ly8gSW5pdGlhbGl6ZSBQcm9iZTo6U3RhdGU6OmluaXRpYWxpemVTdGFja0Z1bmN0aW9uIHRvIHpl
cm8uCi0gICAgInN0ciAgICAgICB4enIsIFt4MjcsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9JTklUX1NUQUNLX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKLQogICAgIC8vIE5vdGU6IHdl
IGhhdmVuJ3QgY2hhbmdlZCB0aGUgdmFsdWUgb2YgZnAuIEhlbmNlLCBpdCBpcyBzdGlsbCBwb2lu
dGluZyB0byB0aGUgZnJhbWUgb2YKICAgICAvLyB0aGUgY2FsbGVyIG9mIHRoZSBwcm9iZSAod2hp
Y2ggaXMgd2hhdCB3ZSB3YW50IGluIG9yZGVyIHRvIHBsYXkgbmljZSB3aXRoIGRlYnVnZ2VycyBl
LmcuIGxsZGIpLgogICAgICJtb3YgICAgICAgeDAsIHNwIiAiXG4iIC8vIFNldCB0aGUgUHJvYmU6
OlN0YXRlKiBhcmcuCi0gICAgImJsciAgICAgICB4MiIgIlxuIiAvLyBDYWxsIHRoZSBwcm9iZSBo
YW5kbGVyIGZ1bmN0aW9uIChsb2FkZWQgaW50byB4MiBhYm92ZSkuCisgICAgImJsciAgICAgICB4
MjgiICJcbiIgLy8gQ2FsbCB0aGUgcHJvYmUgaGFuZGxlci4KIAogICAgIC8vIE1ha2Ugc3VyZSB0
aGUgUHJvYmU6OlN0YXRlIGlzIGVudGlyZWx5IGJlbG93IHRoZSByZXN1bHQgc3RhY2sgcG9pbnRl
ciBzbwogICAgIC8vIHRoYXQgcmVnaXN0ZXIgdmFsdWVzIGFyZSBzdGlsbCBwcmVzZXJ2ZWQgd2hl
biB3ZSBjYWxsIHRoZSBpbml0aWFsaXplU3RhY2sKQEAgLTQ0Niw2MyArNDU0LDM3IEBAIGFzbSAo
CiAKICAgICAvLyBSZW1haW5pbmcgcmVnaXN0ZXJzIHRvIHJlc3RvcmUgYXJlOiBmcHNyLCBuemN2
LCB4MjcsIHgyOCwgZnAsIGxyLCBzcCwgYW5kIHBjLgogCi0gICAgIm1vdiAgICAgICB4MzAsICMi
IFNUUklOR0laRV9WQUxVRV9PRihTVEFURV9QQ19OT1RfQ0hBTkdFRCkgIlxuIgotCiAgICAgLy8g
VGhlIG9ubHkgd2F5IHRvIHNldCB0aGUgcGMgb24gQVJNNjQgKGZyb20gdXNlciBzcGFjZSkgaXMg
dmlhIGFuIGluZGlyZWN0IGJyYW5jaAogICAgIC8vIG9yIGEgcmV0LCB3aGljaCBtZWFucyB3ZSds
bCBuZWVkIGEgZnJlZSByZWdpc3RlciB0byBkbyBzby4gRm9yIG91ciBwdXJwb3NlcywgbHIKICAg
ICAvLyBoYXBwZW5zIHRvIGJlIGF2YWlsYWJsZSBpbiBhcHBsaWNhdGlvbnMgb2YgdGhlIHByb2Jl
IHdoZXJlIHdlIG1heSB3YW50IHRvCiAgICAgLy8gY29udGludWUgZXhlY3V0aW5nIGF0IGEgZGlm
ZmVyZW50IGxvY2F0aW9uIChpLmUuIGNoYW5nZSB0aGUgcGMpIGFmdGVyIHRoZSBwcm9iZQogICAg
IC8vIHJldHVybnMuIFNvLCB0aGUgQVJNNjQgcHJvYmUgaW1wbGVtZW50YXRpb24gd2lsbCBhbGxv
dyB0aGUgcHJvYmUgaGFuZGxlciB0bwogICAgIC8vIGVpdGhlciBtb2RpZnkgbHIgb3IgcGMsIGJ1
dCBub3QgYm90aCBpbiB0aGUgc2FtZSBwcm9iZSBpbnZvY2F0aW9uLiBUaGUgcHJvYmUKLSAgICAv
LyBtZWNoYW5pc20gZW5zdXJlcyB0aGF0IHdlIG5ldmVyIHRyeSB0byBtb2RpZnkgYm90aCBsciBh
bmQgcGMsIGVsc2UgaXQgd2lsbAotICAgIC8vIGZhaWwgd2l0aCBhIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEIGluIGFybTY0UHJvYmVFcnJvcigpLgorICAgIC8vIG1lY2hhbmlzbSBlbnN1cmVz
IHRoYXQgd2UgbmV2ZXIgdHJ5IHRvIG1vZGlmeSBib3RoIGxyIGFuZCBwYyB3aXRoIGEgUkVMRUFT
RV9BU1NFUlQKKyAgICAvLyBpbiBQcm9iZTo6ZXhlY3V0ZVByb2JlKCkuCiAKICAgICAvLyBEZXRl
cm1pbmUgaWYgdGhlIHByb2JlIGhhbmRsZXIgY2hhbmdlZCB0aGUgcGMuCisgICAgImxkciAgICAg
ICB4MzAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJd
IiAiXG4iIC8vIHByZWxvYWQgdGhlIHRhcmdldCBzcC4KICAgICAibGRyICAgICAgIHgyNywgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoU0FWRURfUFJPQkVfUkVUVVJOX1BDX09GRlNFVCkgIl0i
ICJcbiIKICAgICAibGRyICAgICAgIHgyOCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1BDX09GRlNFVCkgIl0iICJcbiIKICAgICAiYWRkICAgICAgIHgyNywgeDI3LCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoMiAqIFBUUl9TSVpFKSAiXG4iCiAgICAgImNtcCAgICAgICB4Mjcs
IHgyOCIgIlxuIgotICAgICJiZXEgICAgICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmVQcmVwYXJlT3V0Z29pbmdSZWNvcmRzKSAiXG4iCi0KLSAgICAvLyBwYyB3YXMg
Y2hhbmdlZC4gRGV0ZXJtaW5lIGlmIHRoZSBwcm9iZSBoYW5kbGVyIGFsc28gY2hhbmdlZCBsci4K
LSAgICAibGRyICAgICAgIHgyNywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoU0FWRURfUFJP
QkVfTFJfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAgeDI4LCBbc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJjbXAgICAg
ICAgeDI3LCB4MjgiICJcbiIKLSAgICAiYm5lICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlN
YXNtUHJvYmVUcmFtcG9saW5lRXJyb3IpICJcbiIKLQotICAgICJtb3YgICAgICAgeDMwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoU1RBVEVfUENfQ0hBTkdFRCkgIlxuIgotCi0gICAgTE9DQUxfTEFC
RUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVQcmVwYXJlT3V0Z29pbmdSZWNvcmRzKSAi
OiIgIlxuIgorICAgICJibmUgICAgICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmVFbmQpICJcbiIKIAotICAgICJsZHIgICAgICAgeDI5LCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihTQVZFRF9QUk9CRV9SRVRVUk5fUENfT0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVs
b2FkIHRoZSBwcm9iZSByZXR1cm4gc2l0ZSBwYy4KLQotICAgIExPQ0FMX0xBQkVMX1NUUklORyhj
dGlNYXNtUHJvYmVUcmFtcG9saW5lRmlsbE91dGdvaW5nUHJvYmVSZWNvcmRzKSAiOiIgIlxuIgot
Ci0gICAgImNibnogICAgICAgeDMwLCAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVU
cmFtcG9saW5lRW5kKSAiXG4iIC8vIFNraXAgbHIgcmVzdG9yYXRpb24gc2V0dXAgaWYgc3RhdGUg
KGluIGxyKSA9PSBTVEFURV9QQ19DSEFOR0VELgotCi0gICAgLy8gSW4gb3JkZXIgdG8gcmVzdG9y
ZSBsciwgd2UgbmVlZCB0byBkbyB0aGUgcmVzdG9yYXRpb24gYXQgdGhlIHByb2JlIHJldHVybiBz
aXRlLgotICAgIC8vIFRoZSBwcm9iZSByZXR1cm4gc2l0ZSBleHBlY3RzIHNwIHRvIGJlIHBvaW50
aW5nIGF0IGFuIE91dGdvaW5nUHJvYmVSZWNvcmQgc3VjaCB0aGF0Ci0gICAgLy8gcG9wcGluZyB0
aGUgT3V0Z29pbmdQcm9iZVJlY29yZCB3aWxsIHlpZWxkIHRoZSBkZXNpcmVkIHNwLiBUaGUgcHJv
YmUgcmV0dXJuIHNpdGUKLSAgICAvLyBhbHNvIGV4cGVjdHMgdGhlIGxyIHZhbHVlIHRvIGJlIHJl
c3RvcmVkIGlzIHN0YXNoZWQgaW4gdGhlIE91dGdvaW5nUHJvYmVSZWNvcmQuCi0gICAgLy8gV2Ug
Y2FuIG1ha2UgdGhpcyBoYXBwZW4gYnkgcHVzaGluZyAyIE91dGdvaW5nUHJvYmVSZWNvcmRzIGlu
c3RlYWQgb2YgMToKLSAgICAvLyAxIGZvciB0aGUgcHJvYmUgcmV0dXJuIHNpdGUsIGFuZCAxIGF0
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVFbmQgZm9yIHJldHVybmluZyBmcm9tCi0gICAgLy8gdGhp
cyBwcm9iZS4KLQotICAgIC8vIEZpbGwgaW4gdGhlIE91dGdvaW5nUHJvYmVTdGFjayBmb3IgdGhl
IHByb2JlIHJldHVybiBzaXRlLgotICAgICJsZHIgICAgICAgeDMwLCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfU1BfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdWIgICAgICAg
eDMwLCB4MzAsICMiIFNUUklOR0laRV9WQUxVRV9PRihPVVRfU0laRSkgIlxuIgorICAgICAvLyBX
ZSBkaWRuJ3QgY2hhbmdlIHRoZSBQQy4gU28sIGxldCdzIHByZXBhcmUgZm9yIHNldHRpbmcgYSBw
b3RlbnRpYWxseSBuZXcgbHIgdmFsdWUuCiAKKyAgICAgLy8gMS4gTWFrZSByb29tIGZvciB0aGUg
TFJSZXN0b3JhdGlvblJlY29yZC4gVGhlIHByb2JlIHNpdGUgd2lsbCBwb3AgdGhpcyBvZmYgbGF0
ZXIuCisgICAgInN1YiAgICAgICB4MzAsIHgzMCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKExSX1JF
U1RPUkFUSU9OX1NJWkUpICJcbiIKKyAgICAgLy8gMi4gU3RvcmUgdGhlIGxwIHZhbHVlIHRvIHJl
c3RvcmUgYXQgdGhlIHByb2JlIHJldHVybiBzaXRlLgogICAgICJsZHIgICAgICAgeDI3LCBbc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxuIgotICAg
ICJzdHIgICAgICAgeDI3LCBbeDMwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoT1VUX0xSX09GRlNF
VCkgIl0iICJcbiIKLQotICAgIC8vIFNldCB1cCB0aGUgc3AgYW5kIHBjIHZhbHVlcyBzbyB0aGF0
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVFbmQgd2lsbCByZXR1cm4gdG8gdGhlIHByb2JlIHJldHVy
biBzaXRlLgotICAgICJzdHIgICAgICAgeDMwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQ
Uk9CRV9DUFVfU1BfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgeDI5LCBbc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxuIiAvLyBTdG9y
ZSB0aGUgcHJvYmUgcmV0dXJuIHNpdGUgcGMgKHByZWxvYWRlZCBpbnRvIGZwIGFib3ZlKS4KKyAg
ICAic3RyICAgICAgIHgyNywgW3gzMCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKExSX1JFU1RPUkFU
SU9OX0xSX09GRlNFVCkgIl0iICJcbiIKKyAgICAgLy8gMy4gRm9yY2UgdGhlIHJldHVybiByYW1w
IHRvIHJldHVybiB0byB0aGUgcHJvYmUgcmV0dXJuIHNpdGUuCisgICAgImxkciAgICAgICB4Mjcs
IFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX1JFVFVSTl9QQ19PRkZTRVQp
ICJdIiAiXG4iCisgICAgInN0ciAgICAgICB4MjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0NQVV9QQ19PRkZTRVQpICJdIiAiXG4iCiAKICAgICBMT0NBTF9MQUJFTF9TVFJJTkco
Y3RpTWFzbVByb2JlVHJhbXBvbGluZUVuZCkgIjoiICJcbiIKIAotICAgIC8vIEZpbGwgaW4gdGhl
IE91dGdvaW5nUHJvYmVTdGFjay4KLSAgICAibGRyICAgICAgIHgzMCwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKKyAgICAvLyBGaWxsIGlu
IHRoZSBPdXRnb2luZ1Byb2JlUmVjb3JkLgogICAgICJzdWIgICAgICAgeDMwLCB4MzAsICMiIFNU
UklOR0laRV9WQUxVRV9PRihPVVRfU0laRSkgIlxuIgogCiAgICAgImxkcCAgICAgICB4MjcsIHgy
OCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX05aQ1ZfT0ZGU0VUKSAiXSIg
IlxuIgpAQCAtNTEwLDUyICs0OTIsMzYgQEAgYXNtICgKICAgICAibGRwICAgICAgIHgyNywgeDI4
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDI3X09GRlNFVCkgIl0iICJc
biIKICAgICAic3RwICAgICAgIHgyNywgeDI4LCBbeDMwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
T1VUX1gyN19PRkZTRVQpICJdIiAiXG4iCiAgICAgImxkciAgICAgICB4MjcsIFtzcCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GUF9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAg
ICAgICB4MjgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9QQ19PRkZTRVQp
ICJdIiAiXG4iCisgICAgImxkciAgICAgICB4MjgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0NQVV9QQ19PRkZTRVQpICJdIiAiXG4iIC8vIFNldCB1cCB0aGUgb3V0Z29pbmcgcmVj
b3JkIHNvIHRoYXQgd2UnbGwganVtcCB0byB0aGUgbmV3IFBDLgogICAgICJzdHAgICAgICAgeDI3
LCB4MjgsIFt4MzAsICMiIFNUUklOR0laRV9WQUxVRV9PRihPVVRfRlBfT0ZGU0VUKSAiXSIgIlxu
IgogICAgICJtb3YgICAgICAgc3AsIHgzMCIgIlxuIgogCi0gICAgLy8gUmVzdG9yZSB0aGUgcmVt
YWluaW5nIHJlZ2lzdGVycyBhbmQgcG9wIHRoZSBPdXRnb2luZ1Byb2JlU3RhY2suCisgICAgLy8g
UmVzdG9yZSB0aGUgcmVtYWluaW5nIHJlZ2lzdGVycyBhbmQgcG9wIHRoZSBPdXRnb2luZ1Byb2Jl
UmVjb3JkLgogICAgICJsZHAgICAgICAgeDI3LCB4MjgsIFtzcF0sICMiIFNUUklOR0laRV9WQUxV
RV9PRigyICogUFRSX1NJWkUpICJcbiIKICAgICAibXNyICAgICAgIG56Y3YsIHgyNyIgIlxuIgog
ICAgICJtc3IgICAgICAgZnBzciwgeDI4IiAiXG4iCiAgICAgImxkcCAgICAgICB4MjcsIHgyOCwg
W3NwXSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKDIgKiBQVFJfU0laRSkgIlxuIgogICAgICJsZHAg
ICAgICAgeDI5LCB4MzAsIFtzcF0sICMiIFNUUklOR0laRV9WQUxVRV9PRigyICogUFRSX1NJWkUp
ICJcbiIKICAgICAicmV0IiAiXG4iCi0KLSAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVBy
b2JlVHJhbXBvbGluZUVycm9yKSAiOiIgIlxuIgotICAgIC8vIFRoZSBwcm9iZSBoYW5kbGVyIGNo
YW5nZWQgYm90aCBsciBhbmQgcGMuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBmb3IgQVJNNjQuCi0g
ICAgImxkciAgICAgICB4MSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoU0FWRURfUFJPQkVf
RVJST1JfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIgotICAgICJtb3YgICAgICAgeDAsIHNwIiAi
XG4iIC8vIFNldCB0aGUgUHJvYmU6OlN0YXRlKiBhcmcuCi0gICAgImJsciAgICAgICB4MSIgIlxu
IgotICAgICJicmsgICAgICAgIzB4MTAwMCIgLy8gU2hvdWxkIG5ldmVyIHJldHVybiBoZXJlLgog
KTsKICNlbmRpZiAvLyBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCiAKLXN0YXRpYyBOT19SRVRVUk5f
RFVFX1RPX0NSQVNIIHZvaWQgYXJtNjRQcm9iZUVycm9yKFByb2JlOjpTdGF0ZSopCi17Ci0gICAg
ZGF0YUxvZygiTWFjcm9Bc3NlbWJsZXIgcHJvYmUgRVJST1I6IEFSTTY0IGRvZXMgbm90IHN1cHBv
cnQgdGhlIHByb2JlIGNoYW5naW5nIGJvdGggTFIgYW5kIFBDLlxuIik7Ci0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogdm9pZCBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoUHJv
YmU6OkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmcpCiB7CiAgICAgc3ViNjQoVHJ1c3RlZElt
bTMyKHNpemVvZihJbmNvbWluZ1Byb2JlUmVjb3JkKSksIHNwKTsKIAorICAgIHN0b3JlUGFpcjY0
KHgyNCwgeDI1LCBzcCwgVHJ1c3RlZEltbTMyKG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQs
IHgyNCkpKTsKICAgICBzdG9yZVBhaXI2NCh4MjYsIHgyNywgc3AsIFRydXN0ZWRJbW0zMihvZmZz
ZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjYpKSk7Ci0gICAgYWRkNjQoVHJ1c3RlZEltbTMy
KHNpemVvZihJbmNvbWluZ1Byb2JlUmVjb3JkKSksIHNwLCB4MjYpOwotICAgIHN0b3JlUGFpcjY0
KGxyLCB4MjYsIHNwLCBUcnVzdGVkSW1tMzIob2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwg
bHIpKSk7IC8vIFNhdmUgbHIgYW5kIG9yaWdpbmFsIHNwIHZhbHVlLgotICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCB4MjYpOwotICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhcmcpLCB4MjcpOwotICAgIHN0b3JlUGFpcjY0KHgyNiwgeDI3LCBz
cCwgVHJ1c3RlZEltbTMyKG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIHByb2JlSGFuZGxl
ckZ1bmN0aW9uKSkpOwotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZv
aWQqPihhcm02NFByb2JlRXJyb3IpKSwgeDI3KTsKLSAgICBzdG9yZTY0KHgyNywgQWRkcmVzcyhz
cCwgb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgcHJvYmVFcnJvckZ1bmN0aW9uKSkpOwot
CisgICAgc3RvcmVQYWlyNjQoeDI4LCB4MzAsIHNwLCBUcnVzdGVkSW1tMzIob2Zmc2V0b2YoSW5j
b21pbmdQcm9iZVJlY29yZCwgeDI4KSkpOyAvLyBOb3RlOiB4MzAgaXMgbHIuCiAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUpKSwgeDI2KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oUHJvYmU6OmV4ZWN1dGVQcm9iZSkpLCB4MjgpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCB4MjQpOworICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhcmcpLCB4MjUpOwogICAgIG1fYXNzZW1ibGVyLmJscih4MjYpOwogCiAgICAgLy8g
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSBzaG91bGQgaGF2ZSByZXN0b3JlZCBldmVyeSByZWdpc3Rl
ciBleGNlcHQgZm9yIGxyIGFuZCB0aGUgc3AuCi0gICAgbG9hZDY0KEFkZHJlc3Moc3AsIG9mZnNl
dG9mKE91dGdvaW5nUHJvYmVSZWNvcmQsIGxyKSksIGxyKTsKLSAgICBhZGQ2NChUcnVzdGVkSW1t
MzIoc2l6ZW9mKE91dGdvaW5nUHJvYmVSZWNvcmQpKSwgc3ApOworICAgIGxvYWQ2NChBZGRyZXNz
KHNwLCBvZmZzZXRvZihMUlJlc3RvcmF0aW9uUmVjb3JkLCBscikpLCBscik7CisgICAgYWRkNjQo
VHJ1c3RlZEltbTMyKHNpemVvZihMUlJlc3RvcmF0aW9uUmVjb3JkKSksIHNwKTsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAJKHJldmlzaW9uIDIyMDk1
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWYgRU5BQkxFKEFTU0VNQkxF
UikgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgog
CisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgog
CiAjaWYgT1MoTElOVVgpCkBAIC0xMDAsNiArMTAxLDggQEAgdm9pZCBNYWNyb0Fzc2VtYmxlckFS
TTo6bG9hZDMyV2l0aFVuYWxpZwogCiBleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSgpOwogCit1c2luZyBuYW1lc3BhY2UgQVJNUmVnaXN0ZXJzOworCiAjaWYgQ09NUElMRVIo
R0NDX09SX0NMQU5HKQogCiAvLyBUaGUgZm9sbG93aW5nIGFyZSBvZmZzZXRzIGZvciBQcm9iZTo6
U3RhdGUgZmllbGRzIGFjY2Vzc2VkCkBAIC0yNTAsNiArMjUzLDMxIEBAIENPTVBJTEVfQVNTRVJU
KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0EKIENPTVBJTEVfQVNTRVJUKHNpemVvZihQcm9iZTo6
U3RhdGUpID09IFBST0JFX1NJWkUsIFByb2JlU3RhdGVfc2l6ZV9tYXRjaGVzX2N0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUpOwogI3VuZGVmIFBST0JFX09GRlNFVE9GCiAKK3N0cnVjdCBJbmNvbWluZ1Jl
Y29yZCB7CisgICAgdWludHB0cl90IGxyOworICAgIHVpbnRwdHJfdCBpcDsKKyAgICB1aW50cHRy
X3QgcjY7CisgICAgdWludHB0cl90IHIwOworICAgIHVpbnRwdHJfdCByMTsKKyAgICB1aW50cHRy
X3QgcjI7Cit9OworCisjZGVmaW5lIElOX0xSX09GRlNFVCAoMCAqIFBUUl9TSVpFKQorI2RlZmlu
ZSBJTl9JUF9PRkZTRVQgKDEgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fUjZfT0ZGU0VUICgyICog
UFRSX1NJWkUpCisjZGVmaW5lIElOX1IwX09GRlNFVCAoMyAqIFBUUl9TSVpFKQorI2RlZmluZSBJ
Tl9SMV9PRkZTRVQgKDQgKiBQVFJfU0laRSkKKyNkZWZpbmUgSU5fUjJfT0ZGU0VUICg1ICogUFRS
X1NJWkUpCisjZGVmaW5lIElOX1NJWkUgICAgICAoNiAqIFBUUl9TSVpFKQorCitzdGF0aWNfYXNz
ZXJ0KElOX0xSX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgbHIpLCAiSU5fTFJf
T0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9JUF9PRkZTRVQgPT0gb2Zm
c2V0b2YoSW5jb21pbmdSZWNvcmQsIGlwKSwgIklOX0lQX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsK
K3N0YXRpY19hc3NlcnQoSU5fUjZfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBy
NiksICJJTl9SNl9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1IwX09G
RlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjApLCAiSU5fUjBfT0ZGU0VUIGlzIGlu
Y29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9SMV9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21p
bmdSZWNvcmQsIHIxKSwgIklOX1IxX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3Nl
cnQoSU5fUjJfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMiksICJJTl9SMl9P
RkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1NJWkUgPT0gc2l6ZW9mKElu
Y29taW5nUmVjb3JkKSwgIklOX1NJWkUgaXMgaW5jb3JyZWN0Iik7CisKIGFzbSAoCiAgICAgIi50
ZXh0IiAiXG4iCiAgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBv
bGluZSkgIlxuIgpAQCAtMjU3LDY2ICsyODUsNzIgQEAgYXNtICgKICAgICBJTkxJTkVfQVJNX0ZV
TkNUSU9OKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICJcbiIKICAgICBTWU1CT0xfU1RSSU5HKGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUpICI6IiAiXG4iCiAKLSAgICAvLyBNYWNyb0Fzc2VtYmxlckFS
TTo6cHJvYmUoKSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0byBzdG9yZSBzb21lIHZhbHVl
cy4KLSAgICAvLyBUaGUgdG9wIG9mIHN0YWNrIG5vdyBsb29rcyBsaWtlIHRoaXM6Ci0gICAgLy8g
ICAgIGVzcFswICogcHRyU2l6ZV06IHByb2JlIGhhbmRsZXIgZnVuY3Rpb24KLSAgICAvLyAgICAg
ZXNwWzEgKiBwdHJTaXplXTogcHJvYmUgYXJnCi0gICAgLy8gICAgIGVzcFsyICogcHRyU2l6ZV06
IHNhdmVkIHIzIC8gUzAKLSAgICAvLyAgICAgZXNwWzMgKiBwdHJTaXplXTogc2F2ZWQgaXAKLSAg
ICAvLyAgICAgZXNwWzQgKiBwdHJTaXplXTogc2F2ZWQgbHIKLSAgICAvLyAgICAgZXNwWzUgKiBw
dHJTaXplXTogc2F2ZWQgc3AKKyAgICAvLyBNYWNyb0Fzc2VtYmxlckFSTXY3Ojpwcm9iZSgpIGhh
cyBhbHJlYWR5IGdlbmVyYXRlZCBjb2RlIHRvIHN0b3JlIHNvbWUgdmFsdWVzLgorICAgIC8vIFRo
ZSB0b3Agb2Ygc3RhY2sgbm93IGNvbnRhaW5zIHRoZSBJbmNvbWluZ1JlY29yZC4KKyAgICAvLwor
ICAgIC8vIEluY29taW5nIHJlZ2lzdGVyIHZhbHVlczoKKyAgICAvLyAgICAgcjA6IHByb2JlIGZ1
bmN0aW9uCisgICAgLy8gICAgIHIxOiBwcm9iZSBhcmcKKyAgICAvLyAgICAgcjI6IFByb2JlOjpl
eGVjdXRlUHJvYmUKKyAgICAvLyAgICAgcjY6IHNjcmF0Y2gKKyAgICAvLyAgICAgaXA6IHNjcmF0
Y2gsIHdhcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lCisgICAgLy8gICAgIGxyOiByZXR1cm4gYWRk
cmVzcwogCiAgICAgIm1vdiAgICAgICBpcCwgc3AiICJcbiIKLSAgICAibW92ICAgICAgIHIzLCBz
cCIgIlxuIgotICAgICJzdWIgICAgICAgcjMsIHIzLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfU0laRSArIE9VVF9TSVpFKSAiXG4iCisgICAgIm1vdiAgICAgICByNiwgc3AiICJcbiIKKyAg
ICAic3ViICAgICAgIHI2LCByNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBP
VVRfU0laRSkgIlxuIgogCiAgICAgLy8gVGhlIEFSTSBFQUJJIHNwZWNpZmllcyB0aGF0IHRoZSBz
dGFjayBuZWVkcyB0byBiZSAxNiBieXRlIGFsaWduZWQuCi0gICAgImJpYyAgICAgICByMywgcjMs
ICMweGYiICJcbiIKLSAgICAibW92ICAgICAgIHNwLCByMyIgIlxuIiAvLyBTZXQgdGhlIHNwIHRv
IHByb3RlY3QgdGhlIFByb2JlOjpTdGF0ZSBmcm9tIGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRp
YWxpemUgaXQuCisgICAgImJpYyAgICAgICByNiwgcjYsICMweGYiICJcbiIKKyAgICAibW92ICAg
ICAgIHNwLCByNiIgIlxuIiAvLyBTZXQgdGhlIHNwIHRvIHByb3RlY3QgdGhlIFByb2JlOjpTdGF0
ZSBmcm9tIGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRpYWxpemUgaXQuCiAKKyAgICAic3RyICAg
ICAgIHIwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9P
RkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICByMSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIl0iICJcbiIKICAgICAic3RyICAgICAgIGxyLCBbc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxuIgotICAg
ICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IwX09G
RlNFVCkgIlxuIgotICAgICJzdG1pYSAgICAgbHIsIHsgcjAtcjExIH0iICJcbiIKKworICAgICJh
ZGQgICAgICAgcjAsIGlwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fU0laRSkgIlxuIgorICAg
ICJzdHIgICAgICAgcjAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9P
RkZTRVQpICJdIiAiXG4iCisKKyAgICAiYWRkICAgICAgIGxyLCBzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9SM19PRkZTRVQpICJcbiIKKyAgICAic3RtaWEgICAgIGxyLCB7IHIz
LXI1IH0iICJcbiIKKyAgICAiYWRkICAgICAgIGxyLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0NQVV9SN19PRkZTRVQpICJcbiIKKyAgICAic3RtaWEgICAgIGxyLCB7IHI3LXIxMSB9
IiAiXG4iCiAgICAgIm1ycyAgICAgICBsciwgQVBTUiIgIlxuIgogICAgICJzdHIgICAgICAgbHIs
IFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9BUFNSX09GRlNFVCkgIl0iICJc
biIKICAgICAidm1ycyAgICAgIGxyLCBGUFNDUiIgIlxuIgogICAgICJzdHIgICAgICAgbHIsIFtz
cCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9GUFNDUl9PRkZTRVQpICJdIiAiXG4i
CiAKLSAgICAibGRyICAgICAgIGxyLCBbaXAsICMwICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRS
X1NJWkUpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAg
ICAgbHIsIFtpcCwgIzEgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIK
LSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9BUkdf
T0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAgbHIsIFtpcCwgIzIgKiAiIFNUUklOR0la
RV9WQUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjNfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJs
ZHIgICAgICAgbHIsIFtpcCwgIzMgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIl0i
ICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfSVBfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAgbHIsIFtpcCwgIzQgKiAi
IFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxy
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxu
IgotICAgICJsZHIgICAgICAgbHIsIFtpcCwgIzUgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJf
U0laRSkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfU1BfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImxkciAgICAgICBsciwg
W3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0iICJcbiIK
KyAgICAibGRyICAgICAgIHI0LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9MUl9PRkZT
RVQpICJdIiAiXG4iCisgICAgImxkciAgICAgICByNSwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoSU5fSVBfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgICAgICAgcjYsIFtpcCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKElOX1I2X09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAgICAgIHI3
LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9SMF9PRkZTRVQpICJdIiAiXG4iCisgICAg
ImxkciAgICAgICByOCwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUjFfT0ZGU0VUKSAi
XSIgIlxuIgorICAgICJsZHIgICAgICAgcjksIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElO
X1IyX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIHI0LCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAgICAg
cjUsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9JUF9PRkZTRVQpICJdIiAi
XG4iCisgICAgInN0ciAgICAgICByNiwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX1I2X09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIHI3LCBbc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjBfT0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAg
ICAgcjgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMV9PRkZTRVQpICJd
IiAiXG4iCisgICAgInN0ciAgICAgICByOSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1IyX09GRlNFVCkgIl0iICJcbiIKIAogICAgICJhZGQgICAgICAgaXAsIHNwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0QwX09GRlNFVCkgIlxuIgogICAgICJ2c3RtaWEu
NjQgaXAhLCB7IGQwLWQxNSB9IiAiXG4iCiAjaWYgQ1BVKEFSTV9ORU9OKSB8fCBDUFUoQVJNX1ZG
UF9WM19EMzIpCiAgICAgInZzdG1pYS42NCBpcCEsIHsgZDE2LWQzMSB9IiAiXG4iCiAjZW5kaWYK
LSAgICAibW92ICAgICAgIGZwLCBzcCIgIlxuIiAvLyBTYXZlIHRoZSBQcm9iZTo6U3RhdGUqLgog
Ci0gICAgLy8gSW5pdGlhbGl6ZSBQcm9iZTo6U3RhdGU6OmluaXRpYWxpemVTdGFja0Z1bmN0aW9u
IHRvIHplcm8uCi0gICAgIm1vdiAgICAgICByMCwgIzAiICJcbiIKLSAgICAic3RyICAgICAgIHIw
LCBbZnAsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9JTklUX1NUQUNLX0ZVTkNUSU9OX09G
RlNFVCkgIl0iICJcbiIKKwkvLyByNSBpcyBhIGNhbGxlZSBzYXZlZCByZWdpc3Rlci4gV2UnbGwg
dXNlIGl0IGZvciBwcmVzZXJ2aW5nIHRoZSBQcm9iZTo6U3RhdGUqLgorCS8vIGh0dHBzOi8vc3Rh
Y2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI2MTQxOS9hcm0tdG8tYy1jYWxsaW5nLWNvbnZlbnRp
b24tcmVnaXN0ZXJzLXRvLXNhdmUjMjYxNDk2CisgICAgIm1vdiAgICAgICByNSwgc3AiICJcbiIK
IAotICAgICJsZHIgICAgICAgaXAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BS
T0JFX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKICAgICAibW92ICAgICAgIHIwLCBzcCIgIlxu
IiAvLyB0aGUgUHJvYmU6OlN0YXRlKiBhcmcuCi0gICAgImJseCAgICAgICBpcCIgIlxuIgorICAg
ICJibHggICAgICAgcjIiICJcbiIgLy8gQ2FsbCBQcm9iZTo6ZXhlY3V0ZVByb2JlLgogCiAgICAg
Ly8gTWFrZSBzdXJlIHRoZSBQcm9iZTo6U3RhdGUgaXMgZW50aXJlbHkgYmVsb3cgdGhlIHJlc3Vs
dCBzdGFjayBwb2ludGVyIHNvCiAgICAgLy8gdGhhdCByZWdpc3RlciB2YWx1ZXMgYXJlIHN0aWxs
IHByZXNlcnZlZCB3aGVuIHdlIGNhbGwgdGhlIGluaXRpYWxpemVTdGFjawogICAgIC8vIGZ1bmN0
aW9uLgotICAgICJsZHIgICAgICAgcjEsIFtmcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iIC8vIFJlc3VsdCBzcC4KLSAgICAiYWRkICAgICAgIHIy
LCBmcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIiAv
LyBFbmQgb2YgUHJvdmVDb250ZXh0ICsgYnVmZmVyLgorICAgICJsZHIgICAgICAgcjEsIFtyNSwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iIC8vIFJl
c3VsdCBzcC4KKyAgICAiYWRkICAgICAgIHIyLCByNSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIiAvLyBFbmQgb2YgUHJvdmVDb250ZXh0ICsgYnVmZmVy
LgogICAgICJjbXAgICAgICAgcjEsIHIyIiAiXG4iCiAgICAgImJnZSAgICAgIiBMT0NBTF9MQUJF
TF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJc1NhZmUpICJcbiIKIApA
QCAtMzI4LDMyICszNjIsMzAgQEAgYXNtICgKICAgICAvLyBDb3B5IHRoZSBQcm9iZTo6U3RhdGUg
dG8gdGhlIHNhZmUgcGxhY2UuCiAgICAgLy8gTm90ZTogd2UgaGF2ZSB0byBjb3B5IGZyb20gbG93
IGFkZHJlc3MgdG8gaGlnaGVyIGFkZHJlc3MgYmVjYXVzZSB3ZSdyZSBtb3ZpbmcgdGhlCiAgICAg
Ly8gUHJvYmU6OlN0YXRlIHRvIGEgbG93ZXIgYWRkcmVzcy4KLSAgICAibW92ICAgICAgIHI1LCBm
cCIgIlxuIgotICAgICJtb3YgICAgICAgcjYsIHIxIiAiXG4iCi0gICAgImFkZCAgICAgICByNywg
ZnAsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9TSVpFKSAiXG4iCisgICAgImFkZCAgICAg
ICByNywgcjUsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9TSVpFKSAiXG4iCiAKICAgICBM
T0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZUNvcHlMb29wKSAiOiIgIlxu
IgogICAgICJsZHIgICAgICAgcjMsIFtyNV0sICM0IiAiXG4iCiAgICAgImxkciAgICAgICByNCwg
W3I1XSwgIzQiICJcbiIKLSAgICAic3RyICAgICAgIHIzLCBbcjZdLCAjNCIgIlxuIgotICAgICJz
dHIgICAgICAgcjQsIFtyNl0sICM0IiAiXG4iCisgICAgInN0ciAgICAgICByMywgW3IxXSwgIzQi
ICJcbiIKKyAgICAic3RyICAgICAgIHI0LCBbcjFdLCAjNCIgIlxuIgogICAgICJjbXAgICAgICAg
cjUsIHI3IiAiXG4iCiAgICAgImJsdCAgICAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVBy
b2JlVHJhbXBvbGluZUNvcHlMb29wKSAiXG4iCiAKLSAgICAibW92ICAgICAgIGZwLCByMSIgIlxu
IgorICAgICJtb3YgICAgICAgcjUsIHNwIiAiXG4iCiAKICAgICAvLyBDYWxsIGluaXRpYWxpemVT
dGFja0Z1bmN0aW9uIGlmIHByZXNlbnQuCiAgICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmVQcm9iZVN0YXRlSXNTYWZlKSAiOiIgIlxuIgotICAgICJsZHIgICAgICAg
cjIsIFtmcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05f
T0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgICAgICAgcjIsIFtyNSwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIgogICAgICJj
bXAgICAgICAgcjIsICMwIiAiXG4iCiAgICAgImJlcSAgICAgIiBMT0NBTF9MQUJFTF9TVFJJTkco
Y3RpTWFzbVByb2JlVHJhbXBvbGluZVJlc3RvcmVSZWdpc3RlcnMpICJcbiIKIAotICAgICJtb3Yg
ICAgICAgcjAsIGZwIiAiXG4iIC8vIFNldCB0aGUgUHJvYmU6OlN0YXRlKiBhcmcuCisgICAgIm1v
diAgICAgICByMCwgcjUiICJcbiIgLy8gU2V0IHRoZSBQcm9iZTo6U3RhdGUqIGFyZy4KICAgICAi
Ymx4ICAgICAgIHIyIiAiXG4iIC8vIENhbGwgdGhlIGluaXRpYWxpemVTdGFja0Z1bmN0aW9uIChs
b2FkZWQgaW50byByMiBhYm92ZSkuCiAKICAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVBy
b2JlVHJhbXBvbGluZVJlc3RvcmVSZWdpc3RlcnMpICI6IiAiXG4iCiAKLSAgICAibW92ICAgICAg
IHNwLCBmcCIgIlxuIgorICAgICJtb3YgICAgICAgc3AsIHI1IiAiXG4iIC8vIEVuc3VyZSB0aGF0
IHNwIHBvaW50cyB0byB0aGUgUHJvYmU6OlN0YXRlKi4KIAogICAgIC8vIFRvIGVuYWJsZSBwcm9i
ZXMgdG8gbW9kaWZ5IHJlZ2lzdGVyIHN0YXRlLCB3ZSBjb3B5IGFsbCByZWdpc3RlcnMKICAgICAv
LyBvdXQgb2YgdGhlIFByb2JlOjpTdGF0ZSBiZWZvcmUgcmV0dXJuaW5nLgpAQCAtMzk5LDE3ICs0
MzEsMjAgQEAgYXNtICgKIAogdm9pZCBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoUHJvYmU6OkZ1bmN0
aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmcpCiB7Ci0gICAgcHVzaChSZWdpc3RlcklEOjpzcCk7Ci0g
ICAgcHVzaChSZWdpc3RlcklEOjpscik7Ci0gICAgcHVzaChSZWdpc3RlcklEOjppcCk7Ci0gICAg
cHVzaChSZWdpc3RlcklEOjpTMCk7Ci0gICAgLy8gVGhlIGZvbGxvd2luZyB1c2VzIFJlZ2lzdGVy
SUQ6OlMwLiBTbywgdGhleSBtdXN0IGNvbWUgYWZ0ZXIgd2UgcHVzaCBTMCBhYm92ZS4KLSAgICBw
dXNoKHRydXN0ZWRJbW0zMkZyb21QdHIoYXJnKSk7Ci0gICAgcHVzaCh0cnVzdGVkSW1tMzJGcm9t
UHRyKGZ1bmN0aW9uKSk7Ci0KLSAgICBtb3ZlKHRydXN0ZWRJbW0zMkZyb21QdHIoY3RpTWFzbVBy
b2JlVHJhbXBvbGluZSksIFJlZ2lzdGVySUQ6OlMwKTsKLSAgICBtX2Fzc2VtYmxlci5ibHgoUmVn
aXN0ZXJJRDo6UzApOworICAgIHN1YjMyKFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdSZWNv
cmQpKSwgc3ApOwogCisgICAgc3RvcmUzMihsciwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21p
bmdSZWNvcmQsIGxyKSkpOworICAgIHN0b3JlMzIoaXAsIEFkZHJlc3Moc3AsIG9mZnNldG9mKElu
Y29taW5nUmVjb3JkLCBpcCkpKTsKKyAgICBzdG9yZTMyKHI2LCBBZGRyZXNzKHNwLCBvZmZzZXRv
ZihJbmNvbWluZ1JlY29yZCwgcjYpKSk7IC8vIFMwID09IHI2LgorICAgIHN0b3JlMzIocjAsIEFk
ZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMCkpKTsKKyAgICBzdG9yZTMyKHIx
LCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjEpKSk7CisgICAgc3RvcmUz
MihyMiwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIyKSkpOworICAgIC8v
IFRoZSBmb2xsb3dpbmcgdXNlcyBSZWdpc3RlcklEOjpTMC4gU28sIHRoZXkgbXVzdCBjb21lIGFm
dGVyIHdlIHByZXNlcnZlIFMwIGFib3ZlLgorICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCByMCk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGFyZyksIHIxKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oUHJvYmU6OmV4ZWN1dGVQcm9iZSkpLCByMik7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpKSwgaXApOworICAg
IG1fYXNzZW1ibGVyLmJseChpcCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNLmgJKHJldmlzaW9uIDIyMDk1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkod29ya2luZyBjb3B5KQpAQCAtMTU4NiwyMyAr
MTU4Niw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9hc3NlbWJsZXIuYmx4KEFSTVJlZ2lzdGVy
czo6UzEpOwogICAgIH0KIAotI2lmIEVOQUJMRShNQVNNX1BST0JFKQotICAgIGlubGluZSBUcnVz
dGVkSW1tMzIgdHJ1c3RlZEltbTMyRnJvbVB0cih2b2lkKiBwdHIpCi0gICAgewotICAgICAgICBy
ZXR1cm4gVHJ1c3RlZEltbTMyKFRydXN0ZWRJbW1QdHIocHRyKSk7Ci0gICAgfQotCi0gICAgaW5s
aW5lIFRydXN0ZWRJbW0zMiB0cnVzdGVkSW1tMzJGcm9tUHRyKFByb2JlOjpGdW5jdGlvbiBmdW5j
dGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUg
VHJ1c3RlZEltbTMyIHRydXN0ZWRJbW0zMkZyb21QdHIodm9pZCAoKmZ1bmN0aW9uKSgpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoTUFTTV9Q
Uk9CRSkKLQogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuY3BwCShyZXZpc2lvbiAyMjA5NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFSTV9USFVNQjIpCiAjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKIAorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNiw2ICszNyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSgpOwogCit1c2luZyBuYW1lc3BhY2UgQVJNUmVnaXN0ZXJzOworCiAjaWYgQ09NUElMRVIo
R0NDX09SX0NMQU5HKQogCiAvLyBUaGUgZm9sbG93aW5nIGFyZSBvZmZzZXRzIGZvciBQcm9iZTo6
U3RhdGUgZmllbGRzIGFjY2Vzc2VkCkBAIC0xODYsNiArMTg5LDMxIEBAIENPTVBJTEVfQVNTRVJU
KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0EKIENPTVBJTEVfQVNTRVJUKHNpemVvZihQcm9iZTo6
U3RhdGUpID09IFBST0JFX1NJWkUsIFByb2JlU3RhdGVfc2l6ZV9tYXRjaGVzX2N0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUpOwogI3VuZGVmIFBST0JFX09GRlNFVE9GCiAKK3N0cnVjdCBJbmNvbWluZ1Jl
Y29yZCB7CisgICAgdWludHB0cl90IGxyOworICAgIHVpbnRwdHJfdCBpcDsKKyAgICB1aW50cHRy
X3QgYXBzcjsKKyAgICB1aW50cHRyX3QgcjA7CisgICAgdWludHB0cl90IHIxOworICAgIHVpbnRw
dHJfdCByMjsKK307CisKKyNkZWZpbmUgSU5fTFJfT0ZGU0VUICgwICogUFRSX1NJWkUpCisjZGVm
aW5lIElOX0lQX09GRlNFVCAoMSAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9BUFNSX09GRlNFVCAo
MiAqIFBUUl9TSVpFKQorI2RlZmluZSBJTl9SMF9PRkZTRVQgKDMgKiBQVFJfU0laRSkKKyNkZWZp
bmUgSU5fUjFfT0ZGU0VUICg0ICogUFRSX1NJWkUpCisjZGVmaW5lIElOX1IyX09GRlNFVCAoNSAq
IFBUUl9TSVpFKQorI2RlZmluZSBJTl9TSVpFICAgICAgKDYgKiBQVFJfU0laRSkKKworc3RhdGlj
X2Fzc2VydChJTl9MUl9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGxyKSwgIklO
X0xSX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fSVBfT0ZGU0VUID09
IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBpcCksICJJTl9JUF9PRkZTRVQgaXMgaW5jb3JyZWN0
Iik7CitzdGF0aWNfYXNzZXJ0KElOX0FQU1JfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVj
b3JkLCBhcHNyKSwgIklOX0FQU1JfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2Vy
dChJTl9SMF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIwKSwgIklOX1IwX09G
RlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fUjFfT0ZGU0VUID09IG9mZnNl
dG9mKEluY29taW5nUmVjb3JkLCByMSksICJJTl9SMV9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Citz
dGF0aWNfYXNzZXJ0KElOX1IyX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjIp
LCAiSU5fUjJfT0ZGU0VUIGlzIGluY29ycmVjdCIpOworc3RhdGljX2Fzc2VydChJTl9TSVpFID09
IHNpemVvZihJbmNvbWluZ1JlY29yZCksICJJTl9TSVpFIGlzIGluY29ycmVjdCIpOworCiBhc20g
KAogICAgICIudGV4dCIgIlxuIgogICAgICIuYWxpZ24gMiIgIlxuIgpAQCAtMTk2LDY1ICsyMjQs
NzAgQEAgYXNtICgKICAgICBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICI6
IiAiXG4iCiAKICAgICAvLyBNYWNyb0Fzc2VtYmxlckFSTXY3Ojpwcm9iZSgpIGhhcyBhbHJlYWR5
IGdlbmVyYXRlZCBjb2RlIHRvIHN0b3JlIHNvbWUgdmFsdWVzLgotICAgIC8vIFRoZSB0b3Agb2Yg
c3RhY2sgbm93IGxvb2tzIGxpa2UgdGhpczoKLSAgICAvLyAgICAgZXNwWzAgKiBwdHJTaXplXTog
cHJvYmUgaGFuZGxlciBmdW5jdGlvbgotICAgIC8vICAgICBlc3BbMSAqIHB0clNpemVdOiBwcm9i
ZSBhcmcKLSAgICAvLyAgICAgZXNwWzIgKiBwdHJTaXplXTogc2F2ZWQgcjAKLSAgICAvLyAgICAg
ZXNwWzMgKiBwdHJTaXplXTogc2F2ZWQgaXAKLSAgICAvLyAgICAgZXNwWzQgKiBwdHJTaXplXTog
c2F2ZWQgbHIKLSAgICAvLyAgICAgZXNwWzUgKiBwdHJTaXplXTogc2F2ZWQgc3AKKyAgICAvLyBU
aGUgdG9wIG9mIHN0YWNrIG5vdyBjb250YWlucyB0aGUgSW5jb21pbmdSZWNvcmQuCisgICAgLy8K
KyAgICAvLyBJbmNvbWluZyByZWdpc3RlciB2YWx1ZXM6CisgICAgLy8gICAgIHIwOiBwcm9iZSBm
dW5jdGlvbgorICAgIC8vICAgICByMTogcHJvYmUgYXJnCisgICAgLy8gICAgIHIyOiBQcm9iZTo6
ZXhlY3V0ZVByb2JlCisgICAgLy8gICAgIGlwOiBzY3JhdGNoLCB3YXMgY3RpTWFzbVByb2JlVHJh
bXBvbGluZQorICAgIC8vICAgICBscjogcmV0dXJuIGFkZHJlc3MKIAogICAgICJtb3YgICAgICAg
aXAsIHNwIiAiXG4iCi0gICAgIm1vdiAgICAgICByMCwgc3AiICJcbiIKLSAgICAic3ViICAgICAg
IHIwLCByMCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxu
IgorICAgICJzdHIgICAgICAgcjIsIFtpcCwgIy0iIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0la
RSkgIl0iICJcbiIgLy8gU3Rhc2ggUHJvYmU6OmV4ZWN1dGVQcm9iZS4KKworICAgICJtb3YgICAg
ICAgcjIsIHNwIiAiXG4iCisgICAgInN1YiAgICAgICByMiwgcjIsICMiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9TSVpFICsgT1VUX1NJWkUpICJcbiIKIAogICAgIC8vIFRoZSBBUk0gRUFCSSBz
cGVjaWZpZXMgdGhhdCB0aGUgc3RhY2sgbmVlZHMgdG8gYmUgMTYgYnl0ZSBhbGlnbmVkLgotICAg
ICJiaWMgICAgICAgcjAsIHIwLCAjMHhmIiAiXG4iCi0gICAgIm1vdiAgICAgICBzcCwgcjAiICJc
biIgLy8gU2V0IHRoZSBzcCB0byBwcm90ZWN0IHRoZSBQcm9iZTo6U3RhdGUgZnJvbSBpbnRlcnJ1
cHRzIGJlZm9yZSB3ZSBpbml0aWFsaXplIGl0LgorICAgICJiaWMgICAgICAgcjIsIHIyLCAjMHhm
IiAiXG4iCisgICAgIm1vdiAgICAgICBzcCwgcjIiICJcbiIgLy8gU2V0IHRoZSBzcCB0byBwcm90
ZWN0IHRoZSBQcm9iZTo6U3RhdGUgZnJvbSBpbnRlcnJ1cHRzIGJlZm9yZSB3ZSBpbml0aWFsaXpl
IGl0LgorICAgICJsZHIgICAgICAgcjIsIFtpcCwgIy0iIFNUUklOR0laRV9WQUxVRV9PRihQVFJf
U0laRSkgIl0iICJcbiIgLy8gUmVsb2FkIFByb2JlOjpleGVjdXRlUHJvYmUuCiAKKyAgICAic3Ry
ICAgICAgIHIwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElP
Tl9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICByMSwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIl0iICJcbiIKICAgICAic3RyICAgICAgIGxyLCBb
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxuIgot
ICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1Ix
X09GRlNFVCkgIlxuIgotICAgICJzdG1pYSAgICAgbHIsIHsgcjEtcjExIH0iICJcbiIKLSAgICAi
bXJzICAgICAgIGxyLCBBUFNSIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0FQU1JfT0ZGU0VUKSAiXSIgIlxuIgorCisgICAgImFk
ZCAgICAgICByMCwgaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9TSVpFKSAiXG4iCisgICAg
InN0ciAgICAgICByMCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09G
RlNFVCkgIl0iICJcbiIKKworICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX1IzX09GRlNFVCkgIlxuIgorICAgICJzdG1pYSAgICAgbHIsIHsgcjMt
cjExIH0iICJcbiIKKwogICAgICJ2bXJzICAgICAgbHIsIEZQU0NSIiAiXG4iCiAgICAgInN0ciAg
ICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0ZQU0NSX09GRlNF
VCkgIl0iICJcbiIKIAotICAgICJsZHIgICAgICAgbHIsIFtpcCwgIzAgKiAiIFNUUklOR0laRV9W
QUxVRV9PRihQVFJfU0laRSkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCi0g
ICAgImxkciAgICAgICBsciwgW2lwLCAjMSAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpF
KSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0FSR19PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICBsciwgW2lwLCAjMiAq
ICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAg
bHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMF9PRkZTRVQpICJdIiAi
XG4iCi0gICAgImxkciAgICAgICBsciwgW2lwLCAjMyAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBU
Ul9TSVpFKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9JUF9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICBsciwg
W2lwLCAjNCAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiXSIgIlxuIgotICAgICJz
dHIgICAgICAgbHIsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9PRkZT
RVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICBsciwgW2lwLCAjNSAqICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBUUl9TSVpFKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgbHIsIFtzcCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iCi0KLSAgICAibGRy
ICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VU
KSAiXSIgIlxuIgorICAgICJsZHIgICAgICAgcjQsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KElOX0xSX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAgICAgIHI1LCBbaXAsICMiIFNUUklO
R0laRV9WQUxVRV9PRihJTl9JUF9PRkZTRVQpICJdIiAiXG4iCisgICAgImxkciAgICAgICByNiwg
W2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fQVBTUl9PRkZTRVQpICJdIiAiXG4iCisgICAg
ImxkciAgICAgICByNywgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUjBfT0ZGU0VUKSAi
XSIgIlxuIgorICAgICJsZHIgICAgICAgcjgsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElO
X1IxX09GRlNFVCkgIl0iICJcbiIKKyAgICAibGRyICAgICAgIHI5LCBbaXAsICMiIFNUUklOR0la
RV9WQUxVRV9PRihJTl9SMl9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICByNCwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0iICJcbiIKKyAg
ICAic3RyICAgICAgIHI1LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfSVBf
T0ZGU0VUKSAiXSIgIlxuIgorICAgICJzdHIgICAgICAgcjYsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9BUFNSX09GRlNFVCkgIl0iICJcbiIKKyAgICAic3RyICAgICAgIHI3
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjBfT0ZGU0VUKSAiXSIgIlxu
IgorICAgICJzdHIgICAgICAgcjgsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQ
VV9SMV9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0ciAgICAgICByOSwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IyX09GRlNFVCkgIl0iICJcbiIKIAogICAgICJhZGQgICAg
ICAgaXAsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0QwX09GRlNFVCkgIlxu
IgogICAgICJ2c3RtaWEuNjQgaXAhLCB7IGQwLWQxNSB9IiAiXG4iCiAjaWYgQ1BVKEFSTV9ORU9O
KSB8fCBDUFUoQVJNX1ZGUF9WM19EMzIpCiAgICAgInZzdG1pYS42NCBpcCEsIHsgZDE2LWQzMSB9
IiAiXG4iCiAjZW5kaWYKLSAgICAibW92ICAgICAgIGZwLCBzcCIgIlxuIiAvLyBTYXZlIHRoZSBQ
cm9iZTo6U3RhdGUqLgogCi0gICAgLy8gSW5pdGlhbGl6ZSBQcm9iZTo6U3RhdGU6OmluaXRpYWxp
emVTdGFja0Z1bmN0aW9uIHRvIHplcm8uCi0gICAgIm1vdiAgICAgICByMCwgIzAiICJcbiIKLSAg
ICAic3RyICAgICAgIHIwLCBbZnAsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9JTklUX1NU
QUNLX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKKwkvLyByNSBpcyBhIGNhbGxlZSBzYXZlZCBy
ZWdpc3Rlci4gV2UnbGwgdXNlIGl0IGZvciBwcmVzZXJ2aW5nIHRoZSBQcm9iZTo6U3RhdGUqLgor
CS8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI2MTQxOS9hcm0tdG8tYy1j
YWxsaW5nLWNvbnZlbnRpb24tcmVnaXN0ZXJzLXRvLXNhdmUjMjYxNDk2CisgICAgIm1vdiAgICAg
ICByNSwgc3AiICJcbiIKIAotICAgICJsZHIgICAgICAgaXAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIKICAgICAibW92ICAg
ICAgIHIwLCBzcCIgIlxuIiAvLyB0aGUgUHJvYmU6OlN0YXRlKiBhcmcuCi0gICAgImJseCAgICAg
ICBpcCIgIlxuIgorICAgICJibHggICAgICAgcjIiICJcbiIgLy8gQ2FsbCBQcm9iZTo6ZXhlY3V0
ZVByb2JlLgogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBQcm9iZTo6U3RhdGUgaXMgZW50aXJlbHkg
YmVsb3cgdGhlIHJlc3VsdCBzdGFjayBwb2ludGVyIHNvCiAgICAgLy8gdGhhdCByZWdpc3RlciB2
YWx1ZXMgYXJlIHN0aWxsIHByZXNlcnZlZCB3aGVuIHdlIGNhbGwgdGhlIGluaXRpYWxpemVTdGFj
awogICAgIC8vIGZ1bmN0aW9uLgotICAgICJsZHIgICAgICAgcjEsIFtmcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iIC8vIFJlc3VsdCBzcC4KLSAg
ICAiYWRkICAgICAgIHIyLCBmcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBP
VVRfU0laRSkgIlxuIiAvLyBFbmQgb2YgUHJvdmVDb250ZXh0ICsgYnVmZmVyLgorICAgICJsZHIg
ICAgICAgcjEsIFtyNSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQp
ICJdIiAiXG4iIC8vIFJlc3VsdCBzcC4KKyAgICAiYWRkICAgICAgIHIyLCByNSwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIiAvLyBFbmQgb2YgUHJvdmVD
b250ZXh0ICsgYnVmZmVyLgogICAgICJjbXAgICAgICAgcjEsIHIyIiAiXG4iCiAgICAgIml0ICAg
ICAgICBnZSIgIlxuIgogICAgICJiZ2UgICAgICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmVQcm9iZVN0YXRlSXNTYWZlKSAiXG4iCkBAIC0yNjcsMzIgKzMwMCwzMCBA
QCBhc20gKAogICAgIC8vIENvcHkgdGhlIFByb2JlOjpTdGF0ZSB0byB0aGUgc2FmZSBwbGFjZS4K
ICAgICAvLyBOb3RlOiB3ZSBoYXZlIHRvIGNvcHkgZnJvbSBsb3cgYWRkcmVzcyB0byBoaWdoZXIg
YWRkcmVzcyBiZWNhdXNlIHdlJ3JlIG1vdmluZyB0aGUKICAgICAvLyBQcm9iZTo6U3RhdGUgdG8g
YSBsb3dlciBhZGRyZXNzLgotICAgICJtb3YgICAgICAgcjUsIGZwIiAiXG4iCi0gICAgIm1vdiAg
ICAgICByNiwgcjEiICJcbiIKLSAgICAiYWRkICAgICAgIHI3LCBmcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX1NJWkUpICJcbiIKKyAgICAiYWRkICAgICAgIHI3LCByNSwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX1NJWkUpICJcbiIKIAogICAgIExPQ0FMX0xBQkVMX1NUUklORyhj
dGlNYXNtUHJvYmVUcmFtcG9saW5lQ29weUxvb3ApICI6IiAiXG4iCiAgICAgImxkciAgICAgICBy
MywgW3I1XSwgIzQiICJcbiIKICAgICAibGRyICAgICAgIHI0LCBbcjVdLCAjNCIgIlxuIgotICAg
ICJzdHIgICAgICAgcjMsIFtyNl0sICM0IiAiXG4iCi0gICAgInN0ciAgICAgICByNCwgW3I2XSwg
IzQiICJcbiIKKyAgICAic3RyICAgICAgIHIzLCBbcjFdLCAjNCIgIlxuIgorICAgICJzdHIgICAg
ICAgcjQsIFtyMV0sICM0IiAiXG4iCiAgICAgImNtcCAgICAgICByNSwgcjciICJcbiIKICAgICAi
aXQgICAgICAgIGx0IiAiXG4iCiAgICAgImJsdCAgICAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoY3Rp
TWFzbVByb2JlVHJhbXBvbGluZUNvcHlMb29wKSAiXG4iCiAKLSAgICAibW92ICAgICAgIGZwLCBy
MSIgIlxuIgorICAgICJtb3YgICAgICAgcjUsIHNwIiAiXG4iCiAKICAgICAvLyBDYWxsIGluaXRp
YWxpemVTdGFja0Z1bmN0aW9uIGlmIHByZXNlbnQuCiAgICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmVQcm9iZVN0YXRlSXNTYWZlKSAiOiIgIlxuIgotICAgICJsZHIg
ICAgICAgcjIsIFtmcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0lOSVRfU1RBQ0tfRlVO
Q1RJT05fT0ZGU0VUKSAiXSIgIlxuIgorICAgICJsZHIgICAgICAgcjIsIFtyNSwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIgog
ICAgICJjYnogICAgICAgcjIsICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmVSZXN0b3JlUmVnaXN0ZXJzKSAiXG4iCiAKLSAgICAibW92ICAgICAgIHIwLCBmcCIgIlxu
IiAvLyBTZXQgdGhlIFByb2JlOjpTdGF0ZSogYXJnLgorICAgICJtb3YgICAgICAgcjAsIHI1IiAi
XG4iIC8vIFNldCB0aGUgUHJvYmU6OlN0YXRlKiBhcmcuCiAgICAgImJseCAgICAgICByMiIgIlxu
IiAvLyBDYWxsIHRoZSBpbml0aWFsaXplU3RhY2tGdW5jdGlvbiAobG9hZGVkIGludG8gcjIgYWJv
dmUpLgogCiAgICAgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVSZXN0
b3JlUmVnaXN0ZXJzKSAiOiIgIlxuIgogCi0gICAgIm1vdiAgICAgICBzcCwgZnAiICJcbiIKKyAg
ICAibW92ICAgICAgIHNwLCByNSIgIlxuIiAvLyBFbnN1cmUgdGhhdCBzcCBwb2ludHMgdG8gdGhl
IFByb2JlOjpTdGF0ZSouCiAKICAgICAvLyBUbyBlbmFibGUgcHJvYmVzIHRvIG1vZGlmeSByZWdp
c3RlciBzdGF0ZSwgd2UgY29weSBhbGwgcmVnaXN0ZXJzCiAgICAgLy8gb3V0IG9mIHRoZSBQcm9i
ZTo6U3RhdGUgYmVmb3JlIHJldHVybmluZy4KQEAgLTMzOCwyMiArMzY5LDI2IEBAIGFzbSAoCiAK
IHZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlvbiwgdm9p
ZCogYXJnKQogewotICAgIHB1c2goUmVnaXN0ZXJJRDo6bHIpOwotICAgIHB1c2goUmVnaXN0ZXJJ
RDo6bHIpOwotICAgIGFkZDMyKFRydXN0ZWRJbW0zMig4KSwgUmVnaXN0ZXJJRDo6c3AsIFJlZ2lz
dGVySUQ6OmxyKTsKLSAgICBzdG9yZTMyKFJlZ2lzdGVySUQ6OmxyLCBBcm1BZGRyZXNzKFJlZ2lz
dGVySUQ6OnNwLCA0KSk7Ci0gICAgcHVzaChSZWdpc3RlcklEOjppcCk7Ci0gICAgcHVzaChSZWdp
c3RlcklEOjpyMCk7Ci0gICAgLy8gVGhlIGZvbGxvd2luZyB1c2VzIFJlZ2lzdGVySUQ6OmlwLiBT
bywgdGhleSBtdXN0IGNvbWUgYWZ0ZXIgd2UgcHVzaCBpcCBhYm92ZS4KLSAgICBwdXNoKHRydXN0
ZWRJbW0zMkZyb21QdHIoYXJnKSk7Ci0gICAgcHVzaCh0cnVzdGVkSW1tMzJGcm9tUHRyKGZ1bmN0
aW9uKSk7CisgICAgc3ViMzIoVHJ1c3RlZEltbTMyKHNpemVvZihJbmNvbWluZ1JlY29yZCkpLCBz
cCk7CiAKLSAgICBtb3ZlKHRydXN0ZWRJbW0zMkZyb21QdHIoY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZSksIFJlZ2lzdGVySUQ6OmlwKTsKLSAgICBtX2Fzc2VtYmxlci5ibHgoUmVnaXN0ZXJJRDo6aXAp
OworICAgIHN0b3JlMzIobHIsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBs
cikpKTsKKyAgICBzdG9yZTMyKGlwLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29y
ZCwgaXApKSk7CisgICAgbV9hc3NlbWJsZXIubXJzKGlwLCBhcHNyKTsKKyAgICBzdG9yZTMyKGlw
LCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgYXBzcikpKTsKKyAgICBzdG9y
ZTMyKHIwLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjApKSk7CisgICAg
c3RvcmUzMihyMSwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIxKSkpOwor
ICAgIHN0b3JlMzIocjIsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMikp
KTsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgbWF5IGVtaXQgYSBUMSBtb3YgaW5zdHJ1Y3Rpb24s
IHdoaWNoIGlzIGVmZmVjdGl2ZWx5IGEgbW92cy4KKyAgICAvLyBUaGlzIG1lYW5zIHdlIG11c3Qg
Zmlyc3QgcHJlc2VydmUgdGhlIGFwc3IgZmxhZ3MgYWJvdmUgZmlyc3QuCisgICAgbW92ZShUcnVz
dGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSksIHIwKTsKKyAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoYXJnKSwgcjEpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihQcm9iZTo6ZXhlY3V0ZVByb2JlKSksIHIyKTsKKyAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY3RpTWFzbVByb2JlVHJhbXBv
bGluZSkpLCBpcCk7CisgICAgbV9hc3NlbWJsZXIuYmx4KGlwKTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoTUFTTV9QUk9CRSkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQotCisjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFSTV9USFVN
QjIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMjIwOTU3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIxMDYsMjMgKzIxMDYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QVJNdjdBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCk7CiAgICAgfQotICAgIAot
I2lmIEVOQUJMRShNQVNNX1BST0JFKQotICAgIGlubGluZSBUcnVzdGVkSW1tMzIgdHJ1c3RlZElt
bTMyRnJvbVB0cih2b2lkKiBwdHIpCi0gICAgewotICAgICAgICByZXR1cm4gVHJ1c3RlZEltbTMy
KFRydXN0ZWRJbW1QdHIocHRyKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIFRydXN0ZWRJbW0zMiB0
cnVzdGVkSW1tMzJGcm9tUHRyKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlvbikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBUcnVzdGVkSW1tMzIoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZv
aWQqPihmdW5jdGlvbikpKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgVHJ1c3RlZEltbTMyIHRydXN0
ZWRJbW0zMkZyb21QdHIodm9pZCAoKmZ1bmN0aW9uKSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IFRydXN0ZWRJbW0zMihUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0
aW9uKSkpOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAJKHJl
dmlzaW9uIDIyMDk1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJQcmludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsMTAgQEAKICNp
bmNsdWRlIDxpbnR0eXBlcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKKwogbmFtZXNwYWNlIFByaW50
ZXIgewogCi11c2luZyBDUFVTdGF0ZSA9IE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTsKK3VzaW5n
IENQVVN0YXRlID0gUHJvYmU6OkNQVVN0YXRlOwogdXNpbmcgUmVnaXN0ZXJJRCA9IE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEOwogdXNpbmcgRlBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6
OkZQUmVnaXN0ZXJJRDsKIApAQCAtMTcxLDEzICsxNzIsMTMgQEAgdm9pZCBwcmludE1lbW9yeShQ
cmludFN0cmVhbSYgb3V0LCBDb250ZQogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiB9CiAKLXZv
aWQgcHJpbnRDYWxsYmFjayhQcm9iZTo6U3RhdGUqIHByb2JlQ29udGV4dCkKK3ZvaWQgcHJpbnRD
YWxsYmFjayhQcm9iZTo6Q29udGV4dCYgcHJvYmVDb250ZXh0KQogewogICAgIGF1dG8mIG91dCA9
IFdURjo6ZGF0YUZpbGUoKTsKLSAgICBQcmludFJlY29yZExpc3QmIGxpc3QgPSAqcmVpbnRlcnBy
ZXRfY2FzdDxQcmludFJlY29yZExpc3QqPihwcm9iZUNvbnRleHQtPmFyZyk7CisgICAgUHJpbnRS
ZWNvcmRMaXN0JiBsaXN0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8UHJpbnRSZWNvcmRMaXN0Kj4ocHJv
YmVDb250ZXh0LmFyZyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsg
aSsrKSB7CiAgICAgICAgIGF1dG8mIHJlY29yZCA9IGxpc3RbaV07Ci0gICAgICAgIENvbnRleHQg
Y29udGV4dCgqcHJvYmVDb250ZXh0LCByZWNvcmQuZGF0YSk7CisgICAgICAgIENvbnRleHQgY29u
dGV4dChwcm9iZUNvbnRleHQsIHJlY29yZC5kYXRhKTsKICAgICAgICAgcmVjb3JkLnByaW50ZXIo
b3V0LCBjb250ZXh0KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmgJKHJldmlzaW9uIDIy
MDk1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQ
cmludGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiUHJpbnRlci5oIgorI2luY2x1ZGUgIlByb2JlQ29u
dGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjIzLDcgKzIyNCw3IEBAIHN0cnVjdCBQ
cmludGVyPE1lbVdvcmQ8SW50VHlwZT4+IDogcHVibGkKICAgICB7IH0KIH07CiAKLXZvaWQgcHJp
bnRDYWxsYmFjayhQcm9iZTo6U3RhdGUqKTsKK3ZvaWQgcHJpbnRDYWxsYmFjayhQcm9iZTo6Q29u
dGV4dCYpOwogCiB9IC8vIG5hbWVzcGFjZSBQcmludGVyCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uY3BwCShyZXZpc2lvbiAyMjA5NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KSkKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0
LmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEw
MSw2ICsxMDIsOCBAQCBleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgpCiAj
ZGVmaW5lIFBST0JFX1NJWkUgKFBST0JFX0NQVV9YTU0xNV9PRkZTRVQgKyBYTU1fU0laRSkKICNl
bmRpZiAvLyBDUFUoWDg2XzY0KQogCisjZGVmaW5lIFBST0JFX0VYRUNVVE9SX09GRlNFVCBQUk9C
RV9TSVpFIC8vIFN0YXNoIHRoZSBleGVjdXRlUHJvYmUgZnVuY3Rpb24gcG9pbnRlciBhdCB0aGUg
ZW5kIG9mIHRoZSBQcm9iZUNvbnRleHQuCisKIC8vIFRoZSBvdXRnb2luZyByZWNvcmQgdG8gYmUg
cG9wcGVkIG9mZiB0aGUgc3RhY2sgYXQgdGhlIGVuZCBjb25zaXN0cyBvZjoKIC8vIGVmbGFncywg
ZWF4LCBlY3gsIGVicCwgZWlwLgogI2RlZmluZSBPVVRfU0laRSAgICAgICAgKDUgKiBQVFJfU0la
RSkKQEAgLTE1OSw2ICsxNjIsNyBAQCBDT01QSUxFX0FTU0VSVChQUk9CRV9PRkZTRVRPRl9SRUco
Y3B1LmZwCiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFBy
b2JlOjpTdGF0ZSkgPT0gUFJPQkVfU0laRSwgUHJvYmVTdGF0ZV9zaXplX21hdGNoZXNfY3RpTWFz
bVByb2JlVHJhbXBvbGluZSk7CitDT01QSUxFX0FTU0VSVCgoUFJPQkVfRVhFQ1VUT1JfT0ZGU0VU
ICsgUFRSX1NJWkUpIDw9IChQUk9CRV9TSVpFICsgT1VUX1NJWkUpLCBNdXN0X2hhdmVfcm9vbV9h
ZnRlcl9Qcm9iZUNvbnRleHRfdG9fc3Rhc2hfdGhlX3Byb2JlX2hhbmRsZXIpOwogCiAjdW5kZWYg
UFJPQkVfT0ZGU0VUT0YKIApAQCAtMTc2LDEwICsxODAsMTYgQEAgYXNtICgKICAgICAvLyB0aGlz
OgogICAgIC8vICAgICBlc3BbMCAqIHB0clNpemVdOiBlZmxhZ3MKICAgICAvLyAgICAgZXNwWzEg
KiBwdHJTaXplXTogcmV0dXJuIGFkZHJlc3MgLyBzYXZlZCBlaXAKLSAgICAvLyAgICAgZXNwWzIg
KiBwdHJTaXplXTogcHJvYmUgaGFuZGxlciBmdW5jdGlvbgotICAgIC8vICAgICBlc3BbMyAqIHB0
clNpemVdOiBwcm9iZSBhcmcKLSAgICAvLyAgICAgZXNwWzQgKiBwdHJTaXplXTogc2F2ZWQgZWF4
Ci0gICAgLy8gICAgIGVzcFs1ICogcHRyU2l6ZV06IHNhdmVkIGVzcAorICAgIC8vICAgICBlc3Bb
MiAqIHB0clNpemVdOiBzYXZlZCBlYngKKyAgICAvLyAgICAgZXNwWzMgKiBwdHJTaXplXTogc2F2
ZWQgZWR4CisgICAgLy8gICAgIGVzcFs0ICogcHRyU2l6ZV06IHNhdmVkIGVjeAorICAgIC8vICAg
ICBlc3BbNSAqIHB0clNpemVdOiBzYXZlZCBlYXgKKyAgICAvLworICAgIC8vIEluY29taW5nIHJl
Z2lzdGVycyBjb250YWluOgorICAgIC8vICAgICBlY3g6IFByb2JlOjpleGVjdXRlUHJvYmUKKyAg
ICAvLyAgICAgZWR4OiBwcm9iZSBmdW5jdGlvbgorICAgIC8vICAgICBlYng6IHByb2JlIGFyZwor
ICAgIC8vICAgICBlYXg6IHNjcmF0Y2ggKHdhcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKQogCiAg
ICAgIm1vdmwgJWVzcCwgJWVheCIgIlxuIgogICAgICJzdWJsICQiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9TSVpFICsgT1VUX1NJWkUpICIsICVlc3AiICJcbiIKQEAgLTE5MCw5ICsyMDAsOSBA
QCBhc20gKAogICAgICJtb3ZsICVlYnAsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9F
QlBfT0ZGU0VUKSAiKCVlc3ApIiAiXG4iCiAgICAgIm1vdmwgJWVzcCwgJWVicCIgIlxuIiAvLyBT
YXZlIHRoZSBQcm9iZTo6U3RhdGUqLgogCi0gICAgIm1vdmwgJWVjeCwgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0VDWF9PRkZTRVQpICIoJWVicCkiICJcbiIKLSAgICAibW92bCAlZWR4
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRURYX09GRlNFVCkgIiglZWJwKSIgIlxu
IgotICAgICJtb3ZsICVlYngsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9FQlhfT0ZG
U0VUKSAiKCVlYnApIiAiXG4iCisgICAgIm1vdmwgJWVjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfRVhFQ1VUT1JfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCisgICAgIm1vdmwgJWVkeCwgIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiKCVlYnApIiAi
XG4iCisgICAgIm1vdmwgJWVieCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJHX09GRlNF
VCkgIiglZWJwKSIgIlxuIgogICAgICJtb3ZsICVlc2ksICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9FU0lfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAgICAgIm1vdmwgJWVkaSwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VESV9PRkZTRVQpICIoJWVicCkiICJcbiIKIApAQCAt
MjAxLDEyICsyMTEsMTYgQEAgYXNtICgKICAgICAibW92bCAxICogIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFRSX1NJWkUpICIoJWVheCksICVlY3giICJcbiIKICAgICAibW92bCAlZWN4LCAiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUlQX09GRlNFVCkgIiglZWJwKSIgIlxuIgogICAgICJt
b3ZsIDIgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIiglZWF4KSwgJWVjeCIgIlxu
IgotICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNU
SU9OX09GRlNFVCkgIiglZWJwKSIgIlxuIgorICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9FQlhfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAgICAgIm1vdmwgMyAq
ICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiKCVlYXgpLCAlZWN4IiAiXG4iCi0gICAg
Im1vdmwgJWVjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIiglZWJw
KSIgIlxuIgorICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9F
RFhfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAgICAgIm1vdmwgNCAqICIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBUUl9TSVpFKSAiKCVlYXgpLCAlZWN4IiAiXG4iCi0gICAgIm1vdmwgJWVjeCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VBWF9PRkZTRVQpICIoJWVicCkiICJcbiIKKyAgICAi
bW92bCAlZWN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUNYX09GRlNFVCkgIigl
ZWJwKSIgIlxuIgogICAgICJtb3ZsIDUgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkg
IiglZWF4KSwgJWVjeCIgIlxuIgorICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0NQVV9FQVhfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCisKKyAgICAibW92bCAlZWF4LCAl
ZWN4IiAiXG4iCisgICAgImFkZGwgJCIgU1RSSU5HSVpFX1ZBTFVFX09GKDYgKiBQVFJfU0laRSkg
IiwgJWVjeCIgIlxuIgogICAgICJtb3ZsICVlY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X0NQVV9FU1BfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCiAKICAgICAibW92cSAleG1tMCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1hNTTBfT0ZGU0VUKSAiKCVlYnApIiAiXG4iCkBAIC0y
MTgsMTUgKzIzMiwxMiBAQCBhc20gKAogICAgICJtb3ZxICV4bW02LCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfWE1NNl9PRkZTRVQpICIoJWVicCkiICJcbiIKICAgICAibW92cSAleG1t
NywgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1hNTTdfT0ZGU0VUKSAiKCVlYnApIiAi
XG4iCiAKLSAgICAieG9ybCAlZWF4LCAlZWF4IiAiXG4iCi0gICAgIm1vdmwgJWVheCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICIoJWVicCki
ICJcbiIKLQogICAgIC8vIFJlc2VydmUgc3RhY2sgc3BhY2UgZm9yIHRoZSBhcmcgd2hpbGUgbWFp
bnRhaW5pbmcgdGhlIHJlcXVpcmVkIHN0YWNrCiAgICAgLy8gcG9pbnRlciAzMiBieXRlIGFsaWdu
bWVudDoKICAgICAic3VibCAkMHgyMCwgJWVzcCIgIlxuIgogICAgICJtb3ZsICVlYnAsIDAoJWVz
cCkiICJcbiIgLy8gdGhlIFByb2JlOjpTdGF0ZSogYXJnLgogCi0gICAgImNhbGwgKiIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIiglZWJwKSIgIlxuIgor
ICAgICJjYWxsICoiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9FWEVDVVRPUl9PRkZTRVQpICIo
JWVicCkiICJcbiIKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgUHJvYmU6OlN0YXRlIGlzIGVudGly
ZWx5IGJlbG93IHRoZSByZXN1bHQgc3RhY2sgcG9pbnRlciBzbwogICAgIC8vIHRoYXQgcmVnaXN0
ZXIgdmFsdWVzIGFyZSBzdGlsbCBwcmVzZXJ2ZWQgd2hlbiB3ZSBjYWxsIHRoZSBpbml0aWFsaXpl
U3RhY2sKQEAgLTMzNiwxMCArMzQ3LDE2IEBAIGV4dGVybiAiQyIgX19kZWNsc3BlYyhuYWtlZCkg
dm9pZCBjdGlNYXMKICAgICAgICAgLy8gdGhpczoKICAgICAgICAgLy8gICAgIGVzcFswICogcHRy
U2l6ZV06IGVmbGFncwogICAgICAgICAvLyAgICAgZXNwWzEgKiBwdHJTaXplXTogcmV0dXJuIGFk
ZHJlc3MgLyBzYXZlZCBlaXAKLSAgICAgICAgLy8gICAgIGVzcFsyICogcHRyU2l6ZV06IHByb2Jl
IGhhbmRsZXIgZnVuY3Rpb24KLSAgICAgICAgLy8gICAgIGVzcFszICogcHRyU2l6ZV06IHByb2Jl
IGFyZwotICAgICAgICAvLyAgICAgZXNwWzQgKiBwdHJTaXplXTogc2F2ZWQgZWF4Ci0gICAgICAg
IC8vICAgICBlc3BbNSAqIHB0clNpemVdOiBzYXZlZCBlc3AKKyAgICAgICAgLy8gICAgIGVzcFsy
ICogcHRyU2l6ZV06IHNhdmVkIGVieAorICAgICAgICAvLyAgICAgZXNwWzMgKiBwdHJTaXplXTog
c2F2ZWQgZWR4CisgICAgICAgIC8vICAgICBlc3BbNCAqIHB0clNpemVdOiBzYXZlZCBlY3gKKyAg
ICAgICAgLy8gICAgIGVzcFs1ICogcHRyU2l6ZV06IHNhdmVkIGVheAorICAgICAgICAvLworICAg
ICAgICAvLyBJbmNvbWluZyByZWdpc3RlcnMgY29udGFpbjoKKyAgICAgICAgLy8gICAgIGVjeDog
UHJvYmU6OmV4ZWN1dGVQcm9iZQorICAgICAgICAvLyAgICAgZWR4OiBwcm9iZSBmdW5jdGlvbgor
ICAgICAgICAvLyAgICAgZWJ4OiBwcm9iZSBhcmcKKyAgICAgICAgLy8gICAgIGVheDogc2NyYXRj
aCAod2FzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpCiAKICAgICAgICAgbW92IGVheCwgZXNwCiAg
ICAgICAgIHN1YiBlc3AsIFBST0JFX1NJWkUgKyBPVVRfU0laRQpAQCAtMzUwLDkgKzM2Nyw5IEBA
IGV4dGVybiAiQyIgX19kZWNsc3BlYyhuYWtlZCkgdm9pZCBjdGlNYXMKICAgICAgICAgbW92IFtQ
Uk9CRV9DUFVfRUJQX09GRlNFVCArIGVzcF0sIGVicAogICAgICAgICBtb3YgZWJwLCBlc3AgLy8g
U2F2ZSB0aGUgUHJvYmVDb250ZXh0Ki4KIAotICAgICAgICBtb3YgW1BST0JFX0NQVV9FQ1hfT0ZG
U0VUICsgZWJwXSwgZWN4Ci0gICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VEWF9PRkZTRVQgKyBlYnBd
LCBlZHgKLSAgICAgICAgbW92IFtQUk9CRV9DUFVfRUJYX09GRlNFVCArIGVicF0sIGVieAorICAg
ICAgICBtb3YgW1BST0JFX0VYRUNVVE9SX09GRlNFVCArIGVicF0sIGVjeAorICAgICAgICBtb3Yg
W1BST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCArIGVicF0sIGVkeAorICAgICAgICBtb3YgW1BS
T0JFX0FSR19PRkZTRVQgKyBlYnBdLCBlYngKICAgICAgICAgbW92IFtQUk9CRV9DUFVfRVNJX09G
RlNFVCArIGVicF0sIGVzaQogICAgICAgICBtb3YgW1BST0JFX0NQVV9FRElfT0ZGU0VUICsgZWJw
XSwgZWRpCiAKQEAgLTM2MSwxMiArMzc4LDE2IEBAIGV4dGVybiAiQyIgX19kZWNsc3BlYyhuYWtl
ZCkgdm9pZCBjdGlNYXMKICAgICAgICAgbW92IGVjeCwgWzEgKiBQVFJfU0laRSArIGVheF0KICAg
ICAgICAgbW92IFtQUk9CRV9DUFVfRUlQX09GRlNFVCArIGVicF0sIGVjeAogICAgICAgICBtb3Yg
ZWN4LCBbMiAqIFBUUl9TSVpFICsgZWF4XQotICAgICAgICBtb3YgW1BST0JFX1BST0JFX0ZVTkNU
SU9OX09GRlNFVCArIGVicF0sIGVjeAorICAgICAgICBtb3YgW1BST0JFX0NQVV9FQlhfT0ZGU0VU
ICsgZWJwXSwgZWN4CiAgICAgICAgIG1vdiBlY3gsIFszICogUFRSX1NJWkUgKyBlYXhdCi0gICAg
ICAgIG1vdiBbUFJPQkVfQVJHX09GRlNFVCArIGVicF0sIGVjeAorICAgICAgICBtb3YgW1BST0JF
X0NQVV9FRFhfT0ZGU0VUICsgZWJwXSwgZWN4CiAgICAgICAgIG1vdiBlY3gsIFs0ICogUFRSX1NJ
WkUgKyBlYXhdCi0gICAgICAgIG1vdiBbUFJPQkVfQ1BVX0VBWF9PRkZTRVQgKyBlYnBdLCBlY3gK
KyAgICAgICAgbW92IFtQUk9CRV9DUFVfRUNYX09GRlNFVCArIGVicF0sIGVjeAogICAgICAgICBt
b3YgZWN4LCBbNSAqIFBUUl9TSVpFICsgZWF4XQorICAgICAgICBtb3YgW1BST0JFX0NQVV9FQVhf
T0ZGU0VUICsgZWJwXSwgZWN4CisKKyAgICAgICAgbW92IGVjeCwgZWF4CisgICAgICAgIGFkZCBl
Y3gsIDYgKiBQVFJfU0laRQogICAgICAgICBtb3YgW1BST0JFX0NQVV9FU1BfT0ZGU0VUICsgZWJw
XSwgZWN4CiAKICAgICAgICAgbW92cSBxd29yZCBwdHJbUFJPQkVfQ1BVX1hNTTBfT0ZGU0VUICsg
ZWJwXSwgeG1tMApAQCAtMzc4LDE1ICszOTksMTIgQEAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKG5h
a2VkKSB2b2lkIGN0aU1hcwogICAgICAgICBtb3ZxIHF3b3JkIHB0cltQUk9CRV9DUFVfWE1NNl9P
RkZTRVQgKyBlYnBdLCB4bW02CiAgICAgICAgIG1vdnEgcXdvcmQgcHRyW1BST0JFX0NQVV9YTU03
X09GRlNFVCArIGVicF0sIHhtbTcKIAotICAgICAgICB4b3IgZWF4LCBlYXgKLSAgICAgICAgbW92
IFtQUk9CRV9JTklUX1NUQUNLX0ZVTkNUSU9OX09GRlNFVCArIGVicF0sIGVheAotCiAgICAgICAg
IC8vIFJlc2VydmUgc3RhY2sgc3BhY2UgZm9yIHRoZSBhcmcgd2hpbGUgbWFpbnRhaW5pbmcgdGhl
IHJlcXVpcmVkIHN0YWNrCiAgICAgICAgIC8vIHBvaW50ZXIgMzIgYnl0ZSBhbGlnbm1lbnQ6CiAg
ICAgICAgIHN1YiBlc3AsIDB4MjAKICAgICAgICAgbW92IFswICsgZXNwXSwgZWJwIC8vIHRoZSBQ
cm9iZUNvbnRleHQqIGFyZy4KIAotICAgICAgICBjYWxsIFtQUk9CRV9QUk9CRV9GVU5DVElPTl9P
RkZTRVQgKyBlYnBdCisgICAgICAgIGNhbGwgW1BST0JFX0VYRUNVVE9SX09GRlNFVCArIGVicF0K
IAogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIFByb2JlQ29udGV4dCBpcyBlbnRpcmVseSBiZWxv
dyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgc28KICAgICAgICAgLy8gdGhhdCByZWdpc3RlciB2
YWx1ZXMgYXJlIHN0aWxsIHByZXNlcnZlZCB3aGVuIHdlIGNhbGwgdGhlIGluaXRpYWxpemVTdGFj
awpAQCAtNDg0LDcgKzUwMiw3IEBAIGV4dGVybiAiQyIgX19kZWNsc3BlYyhuYWtlZCkgdm9pZCBj
dGlNYXMKICAgICAgICAgcmV0CiAgICAgfQogfQotI2VuZGlmCisjZW5kaWYgLy8gQ09NUElMRVIo
TVNWQykKIAogI2VuZGlmIC8vIENQVShYODYpCiAKQEAgLTQ5OCwxNCArNTE2LDE5IEBAIGFzbSAo
CiAgICAgInB1c2hmcSIgIlxuIgogCiAgICAgLy8gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnBy
b2JlKCkgaGFzIGFscmVhZHkgZ2VuZXJhdGVkIGNvZGUgdG8gc3RvcmUgc29tZSB2YWx1ZXMuCi0g
ICAgLy8gVG9nZXRoZXIgd2l0aCB0aGUgcmZsYWdzIHB1c2hlZCBhYm92ZSwgdGhlIHRvcCBvZiBz
dGFjayBub3cgbG9va3MgbGlrZQotICAgIC8vIHRoaXM6Ci0gICAgLy8gICAgIGVzcFswICogcHRy
U2l6ZV06IHJmbGFncwotICAgIC8vICAgICBlc3BbMSAqIHB0clNpemVdOiByZXR1cm4gYWRkcmVz
cyAvIHNhdmVkIHJpcAotICAgIC8vICAgICBlc3BbMiAqIHB0clNpemVdOiBwcm9iZSBoYW5kbGVy
IGZ1bmN0aW9uCi0gICAgLy8gICAgIGVzcFszICogcHRyU2l6ZV06IHByb2JlIGFyZwotICAgIC8v
ICAgICBlc3BbNCAqIHB0clNpemVdOiBzYXZlZCByYXgKLSAgICAvLyAgICAgZXNwWzUgKiBwdHJT
aXplXTogc2F2ZWQgcnNwCisgICAgLy8gVG9nZXRoZXIgd2l0aCB0aGUgcmZsYWdzIHB1c2hlZCBh
Ym92ZSwgdGhlIHRvcCBvZiBzdGFjayBub3cgbG9va3MgbGlrZSB0aGlzOgorICAgIC8vICAgICBy
c3BbMCAqIHB0clNpemVdOiByZmxhZ3MKKyAgICAvLyAgICAgcnNwWzEgKiBwdHJTaXplXTogcmV0
dXJuIGFkZHJlc3MgLyBzYXZlZCByaXAKKyAgICAvLyAgICAgcnNwWzIgKiBwdHJTaXplXTogc2F2
ZWQgcmJ4CisgICAgLy8gICAgIHJzcFszICogcHRyU2l6ZV06IHNhdmVkIHJkeAorICAgIC8vICAg
ICByc3BbNCAqIHB0clNpemVdOiBzYXZlZCByY3gKKyAgICAvLyAgICAgcnNwWzUgKiBwdHJTaXpl
XTogc2F2ZWQgcmF4CisgICAgLy8KKyAgICAvLyBJbmNvbWluZyByZWdpc3RlcnMgY29udGFpbjoK
KyAgICAvLyAgICAgcmN4OiBQcm9iZTo6ZXhlY3V0ZVByb2JlCisgICAgLy8gICAgIHJkeDogcHJv
YmUgZnVuY3Rpb24KKyAgICAvLyAgICAgcmJ4OiBwcm9iZSBhcmcKKyAgICAvLyAgICAgcmF4OiBz
Y3JhdGNoICh3YXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSkKIAogICAgICJtb3ZxICVyc3AsICVy
YXgiICJcbiIKICAgICAic3VicSAkIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9V
VF9TSVpFKSAiLCAlcnNwIiAiXG4iCkBAIC01MTcsOSArNTQwLDkgQEAgYXNtICgKICAgICAibW92
cSAlcmJwLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUJQX09GRlNFVCkgIiglcnNw
KSIgIlxuIgogICAgICJtb3ZxICVyc3AsICVyYnAiICJcbiIgLy8gU2F2ZSB0aGUgUHJvYmU6OlN0
YXRlKi4KIAotICAgICJtb3ZxICVyY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9F
Q1hfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCi0gICAgIm1vdnEgJXJkeCwgIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0VEWF9PRkZTRVQpICIoJXJicCkiICJcbiIKLSAgICAibW92cSAlcmJ4
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUJYX09GRlNFVCkgIiglcmJwKSIgIlxu
IgorICAgICJtb3ZxICVyY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0VYRUNVVE9SX09G
RlNFVCkgIiglcmJwKSIgIlxuIgorICAgICJtb3ZxICVyZHgsICIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIiglcmJwKSIgIlxuIgorICAgICJtb3ZxICVy
YngsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0FSR19PRkZTRVQpICIoJXJicCkiICJcbiIK
ICAgICAibW92cSAlcnNpLCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRVNJX09GRlNF
VCkgIiglcmJwKSIgIlxuIgogICAgICJtb3ZxICVyZGksICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9FRElfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCiAKQEAgLTUyOCwxMiArNTUxLDE2IEBA
IGFzbSAoCiAgICAgIm1vdnEgMSAqICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBUUl9TSVpFKSAiKCVy
YXgpLCAlcmN4IiAiXG4iCiAgICAgIm1vdnEgJXJjeCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0VJUF9PRkZTRVQpICIoJXJicCkiICJcbiIKICAgICAibW92cSAyICogIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFRSX1NJWkUpICIoJXJheCksICVyY3giICJcbiIKLSAgICAibW92cSAlcmN4
LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICIoJXJi
cCkiICJcbiIKKyAgICAibW92cSAlcmN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
RUJYX09GRlNFVCkgIiglcmJwKSIgIlxuIgogICAgICJtb3ZxIDMgKiAiIFNUUklOR0laRV9WQUxV
RV9PRihQVFJfU0laRSkgIiglcmF4KSwgJXJjeCIgIlxuIgotICAgICJtb3ZxICVyY3gsICIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0FSR19PRkZTRVQpICIoJXJicCkiICJcbiIKKyAgICAibW92
cSAlcmN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRURYX09GRlNFVCkgIiglcmJw
KSIgIlxuIgogICAgICJtb3ZxIDQgKiAiIFNUUklOR0laRV9WQUxVRV9PRihQVFJfU0laRSkgIigl
cmF4KSwgJXJjeCIgIlxuIgotICAgICJtb3ZxICVyY3gsICIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9FQVhfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCisgICAgIm1vdnEgJXJjeCwgIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0VDWF9PRkZTRVQpICIoJXJicCkiICJcbiIKICAgICAi
bW92cSA1ICogIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFRSX1NJWkUpICIoJXJheCksICVyY3giICJc
biIKKyAgICAibW92cSAlcmN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRUFYX09G
RlNFVCkgIiglcmJwKSIgIlxuIgorCisgICAgIm1vdnEgJXJheCwgJXJjeCIgIlxuIgorICAgICJh
ZGRxICQiIFNUUklOR0laRV9WQUxVRV9PRig2ICogUFRSX1NJWkUpICIsICVyY3giICJcbiIKICAg
ICAibW92cSAlcmN4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRVNQX09GRlNFVCkg
IiglcmJwKSIgIlxuIgogCiAgICAgIm1vdnEgJXI4LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfUjhfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCkBAIC01NjIsMTEgKzU4OSw4IEBAIGFzbSAo
CiAgICAgIm1vdnEgJXhtbTE0LCAiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWE1NMTRf
T0ZGU0VUKSAiKCVyYnApIiAiXG4iCiAgICAgIm1vdnEgJXhtbTE1LCAiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfWE1NMTVfT0ZGU0VUKSAiKCVyYnApIiAiXG4iCiAKLSAgICAieG9ycSAl
cmF4LCAlcmF4IiAiXG4iCi0gICAgIm1vdnEgJXJheCwgIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICIoJXJicCkiICJcbiIKLQogICAgICJtb3Zx
ICVyYnAsICVyZGkiICJcbiIgLy8gdGhlIFByb2JlOjpTdGF0ZSogYXJnLgotICAgICJjYWxsICoi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICIoJXJicCki
ICJcbiIKKyAgICAiY2FsbCAqIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfRVhFQ1VUT1JfT0ZG
U0VUKSAiKCVyYnApIiAiXG4iCiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIFByb2JlOjpTdGF0ZSBp
cyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgc28KICAgICAvLyB0aGF0
IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VydmVkIHdoZW4gd2UgY2FsbCB0aGUgaW5p
dGlhbGl6ZVN0YWNrCkBAIC03MzEsMTMgKzc1NSwxNCBAQCBleHRlcm4gIkMiIHZvaWQgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSgpCiAKIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpG
dW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogYXJnKQogewotICAgIHB1c2goUmVnaXN0ZXJJRDo6ZXNw
KTsKLSAgICBwdXNoKFJlZ2lzdGVySUQ6OmVheCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGFy
ZyksIFJlZ2lzdGVySUQ6OmVheCk7Ci0gICAgcHVzaChSZWdpc3RlcklEOjplYXgpOwotICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCBSZWdp
c3RlcklEOjplYXgpOwogICAgIHB1c2goUmVnaXN0ZXJJRDo6ZWF4KTsKICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY3RpTWFzbVByb2JlVHJhbXBvbGluZSkp
LCBSZWdpc3RlcklEOjplYXgpOworICAgIHB1c2goUmVnaXN0ZXJJRDo6ZWN4KTsKKyAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oUHJvYmU6OmV4ZWN1dGVQcm9i
ZSkpLCBSZWdpc3RlcklEOjplY3gpOworICAgIHB1c2goUmVnaXN0ZXJJRDo6ZWR4KTsKKyAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSwgUmVn
aXN0ZXJJRDo6ZWR4KTsKKyAgICBwdXNoKFJlZ2lzdGVySUQ6OmVieCk7CisgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGFyZyksIFJlZ2lzdGVySUQ6OmVieCk7CiAgICAgY2FsbChSZWdpc3RlcklEOjpl
YXgpOwogfQogI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9QcmludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9QcmludGVyLmgJKHJldmlzaW9uIDIyMDk1NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJpbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw3ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIFByb2JlIHsKLXN0cnVj
dCBTdGF0ZTsKK2NsYXNzIENvbnRleHQ7CiB9IC8vIG5hbWVzcGFjZSBQcm9iZQogCiBuYW1lc3Bh
Y2UgUHJpbnRlciB7CkBAIC04NiwxMiArODYsMTIgQEAgdW5pb24gRGF0YSB7CiB9OwogCiBzdHJ1
Y3QgQ29udGV4dCB7Ci0gICAgQ29udGV4dChQcm9iZTo6U3RhdGUmIHByb2JlQ29udGV4dCwgRGF0
YSYgZGF0YSkKKyAgICBDb250ZXh0KFByb2JlOjpDb250ZXh0JiBwcm9iZUNvbnRleHQsIERhdGEm
IGRhdGEpCiAgICAgICAgIDogcHJvYmVDb250ZXh0KHByb2JlQ29udGV4dCkKICAgICAgICAgLCBk
YXRhKGRhdGEpCiAgICAgeyB9CiAKLSAgICBQcm9iZTo6U3RhdGUmIHByb2JlQ29udGV4dDsKKyAg
ICBQcm9iZTo6Q29udGV4dCYgcHJvYmVDb250ZXh0OwogICAgIERhdGEmIGRhdGE7CiB9OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJv
YmVDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBQ
cm9iZSB7CisKK3N0YXRpYyB2b2lkIGZsdXNoRGlydHlTdGFja1BhZ2VzKFN0YXRlKik7CisKK3Zv
aWQgZXhlY3V0ZVByb2JlKFN0YXRlKiBzdGF0ZSkKK3sKKyAgICBDb250ZXh0IGNvbnRleHQoc3Rh
dGUpOworI2lmIENQVShBUk02NCkKKyAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKKyAgICB2
b2lkKiBvcmlnaW5hbExSID0gY3B1Lmdwcjx2b2lkKj4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAg
ICB2b2lkKiBvcmlnaW5hbFBDID0gY3B1LnBjKCk7CisjZW5kaWYKKworICAgIHN0YXRlLT5pbml0
aWFsaXplU3RhY2tGdW5jdGlvbiA9IG51bGxwdHI7CisgICAgc3RhdGUtPmluaXRpYWxpemVTdGFj
a0FyZyA9IG51bGxwdHI7CisgICAgc3RhdGUtPnByb2JlRnVuY3Rpb24oY29udGV4dCk7CisKKyNp
ZiBDUFUoQVJNNjQpCisgICAgLy8gVGhlIEFSTTY0IHByb2JlIHRyYW1wb2xpbmUgZG9lcyBub3Qg
c3VwcG9ydCBjaGFuZ2luZyBib3RoIGxyIGFuZCBwYy4KKyAgICBSRUxFQVNFX0FTU0VSVChvcmln
aW5hbFBDID09IGNwdS5wYygpIHx8IG9yaWdpbmFsTFIgPT0gY3B1Lmdwcjx2b2lkKj4oQVJNNjRS
ZWdpc3RlcnM6OmxyKSk7CisjZW5kaWYKKworICAgIGlmIChjb250ZXh0Lmhhc1dyaXRlc1RvRmx1
c2goKSkgeworICAgICAgICBjb250ZXh0LnN0YWNrKCkuc2V0TmV3U3RhY2tQb2ludGVyKHN0YXRl
LT5jcHUuc3AoKSk7CisgICAgICAgIHN0YXRlLT5jcHUuc3AoKSA9IHN0ZDo6bWluKGNvbnRleHQu
c3RhY2soKS5sb3dXYXRlcm1hcmsoKSwgc3RhdGUtPmNwdS5zcCgpKTsKKworICAgICAgICBzdGF0
ZS0+aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gPSBmbHVzaERpcnR5U3RhY2tQYWdlczsKKyAgICAg
ICAgc3RhdGUtPmluaXRpYWxpemVTdGFja0FyZyA9IGNvbnRleHQucmVsZWFzZVN0YWNrKCk7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBmbHVzaERpcnR5U3RhY2tQYWdlcyhTdGF0ZSogc3RhdGUp
Cit7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrPiBzdGFjayhyZWludGVycHJldF9jYXN0PFBy
b2JlOjpTdGFjayo+KHN0YXRlLT5pbml0aWFsaXplU3RhY2tBcmcpKTsKKyAgICBzdGFjay0+Zmx1
c2hXcml0ZXMoKTsKKyAgICBzdGF0ZS0+Y3B1LnNwKCkgPSBzdGFjay0+bmV3U3RhY2tQb2ludGVy
KCk7Cit9CisKKy8vIE5vdCBmb3IgZ2VuZXJhbCB1c2UuIFRoaXMgc2hvdWxkIG9ubHkgYmUgZm9y
IHdyaXRpbmcgdGVzdHMuCitKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBwcm9iZVN0YXRlRm9yQ29u
dGV4dChDb250ZXh0Jik7Cit2b2lkKiBwcm9iZVN0YXRlRm9yQ29udGV4dChDb250ZXh0JiBjb250
ZXh0KQoreworICAgIHJldHVybiBjb250ZXh0Lm1fc3RhdGU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFByb2JlCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUHJvYmVDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUg
IlByb2JlU3RhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgUHJvYmUgeworCitz
dHJ1Y3QgQ1BVU3RhdGUgeworICAgIHVzaW5nIFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6
UmVnaXN0ZXJJRDsKKyAgICB1c2luZyBTUFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6U1BS
ZWdpc3RlcklEOworICAgIHVzaW5nIEZQUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpGUFJl
Z2lzdGVySUQ7CisKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGdwck5hbWUoUmVnaXN0
ZXJJRCBpZCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6Omdwck5hbWUoaWQpOyB9CisgICAgc3Rh
dGljIGlubGluZSBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4g
TWFjcm9Bc3NlbWJsZXI6OnNwck5hbWUoaWQpOyB9CisgICAgc3RhdGljIGlubGluZSBjb25zdCBj
aGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OmZw
ck5hbWUoaWQpOyB9CisgICAgaW5saW5lIHVpbnRwdHJfdCYgZ3ByKFJlZ2lzdGVySUQpOworICAg
IGlubGluZSB1aW50cHRyX3QmIHNwcihTUFJlZ2lzdGVySUQpOworICAgIGlubGluZSBkb3VibGUm
IGZwcihGUFJlZ2lzdGVySUQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxw
dHI+CisgICAgVCBncHIoUmVnaXN0ZXJJRCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5
cGUqID0gbnVsbHB0cj4KKyAgICBUIGdwcihSZWdpc3RlcklEKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+
Ojp2YWx1ZT46OnR5cGUqID0gbnVsbHB0cj4KKyAgICBUIHNwcihTUFJlZ2lzdGVySUQpIGNvbnN0
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlKiA9IG51bGxwdHI+CisgICAgVCBzcHIoU1BSZWdp
c3RlcklEKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZwcihGUFJlZ2lzdGVy
SUQpIGNvbnN0OworCisgICAgdm9pZComIHBjKCk7CisgICAgdm9pZComIGZwKCk7CisgICAgdm9p
ZComIHNwKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBwYygpIGNvbnN0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IFQgZnAoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBUIHNwKCkgY29uc3Q7CisKKyAgICB1aW50cHRyX3QgZ3Byc1tNYWNyb0Fzc2VtYmxlcjo6bnVt
YmVyT2ZSZWdpc3RlcnMoKV07CisgICAgdWludHB0cl90IHNwcnNbTWFjcm9Bc3NlbWJsZXI6Om51
bWJlck9mU1BSZWdpc3RlcnMoKV07CisgICAgZG91YmxlIGZwcnNbTWFjcm9Bc3NlbWJsZXI6Om51
bWJlck9mRlBSZWdpc3RlcnMoKV07Cit9OworCitpbmxpbmUgdWludHB0cl90JiBDUFVTdGF0ZTo6
Z3ByKFJlZ2lzdGVySUQgaWQpCit7CisgICAgQVNTRVJUKGlkID49IE1hY3JvQXNzZW1ibGVyOjpm
aXJzdFJlZ2lzdGVyKCkgJiYgaWQgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpKTsK
KyAgICByZXR1cm4gZ3Byc1tpZF07Cit9CisKK2lubGluZSB1aW50cHRyX3QmIENQVVN0YXRlOjpz
cHIoU1BSZWdpc3RlcklEIGlkKQoreworICAgIEFTU0VSVChpZCA+PSBNYWNyb0Fzc2VtYmxlcjo6
Zmlyc3RTUFJlZ2lzdGVyKCkgJiYgaWQgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RTUFJlZ2lzdGVy
KCkpOworICAgIHJldHVybiBzcHJzW2lkXTsKK30KKworaW5saW5lIGRvdWJsZSYgQ1BVU3RhdGU6
OmZwcihGUFJlZ2lzdGVySUQgaWQpCit7CisgICAgQVNTRVJUKGlkID49IE1hY3JvQXNzZW1ibGVy
OjpmaXJzdEZQUmVnaXN0ZXIoKSAmJiBpZCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0
ZXIoKSk7CisgICAgcmV0dXJuIGZwcnNbaWRdOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUq
PgorVCBDUFVTdGF0ZTo6Z3ByKFJlZ2lzdGVySUQgaWQpIGNvbnN0Cit7CisgICAgQ1BVU3RhdGUq
IGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VD4oY3B1LT5ncHIoaWQpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGUqPgorVCBDUFVT
dGF0ZTo6Z3ByKFJlZ2lzdGVySUQgaWQpIGNvbnN0Cit7CisgICAgQ1BVU3RhdGUqIGNwdSA9IGNv
bnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxU
PihjcHUtPmdwcihpZCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqPgorVCBDUFVTdGF0
ZTo6c3ByKFNQUmVnaXN0ZXJJRCBpZCkgY29uc3QKK3sKKyAgICBDUFVTdGF0ZSogY3B1ID0gY29u
c3RfY2FzdDxDUFVTdGF0ZSo+KHRoaXMpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihjcHUt
PnNwcihpZCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZSo+CitUIENQVVN0YXRlOjpzcHIo
U1BSZWdpc3RlcklEIGlkKSBjb25zdAoreworICAgIENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0
PENQVVN0YXRlKj4odGhpcyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5z
cHIoaWQpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1QgQ1BVU3RhdGU6OmZwcihGUFJl
Z2lzdGVySUQgaWQpIGNvbnN0Cit7CisgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BV
U3RhdGUqPih0aGlzKTsKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KGNwdS0+ZnByKGlkKSk7
Cit9CisKK2lubGluZSB2b2lkKiYgQ1BVU3RhdGU6OnBjKCkKK3sKKyNpZiBDUFUoWDg2KSB8fCBD
UFUoWDg2XzY0KQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZzcHIoWDg2
UmVnaXN0ZXJzOjplaXApKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmc3ByKEFSTTY0UmVnaXN0ZXJzOjpwYykpOworI2VsaWYgQ1BVKEFS
TV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCisgICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OnBjKSk7CisjZWxpZiBDUFUoTUlQUykK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vsc2UKKyNlcnJvciAiVW5zdXBw
b3J0ZWQgQ1BVIgorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiYgQ1BVU3RhdGU6OmZwKCkKK3sK
KyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KCZncHIoWDg2UmVnaXN0ZXJzOjplYnApKTsKKyNlbGlmIENQVShBUk02NCkKKyAg
ICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKEFSTTY0UmVnaXN0ZXJzOjpm
cCkpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCisgICAg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OmZwKSk7
CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
Z3ByKE1JUFNSZWdpc3RlcnM6OmZwKSk7CisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBDUFUi
CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQqJiBDUFVTdGF0ZTo6c3AoKQoreworI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4o
JmdwcihYODZSZWdpc3RlcnM6OmVzcCkpOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiAq
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNNjRSZWdpc3RlcnM6OnNwKSk7CisjZWxp
ZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyAgICByZXR1cm4gKnJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKEFSTVJlZ2lzdGVyczo6c3ApKTsKKyNlbGlmIENQ
VShNSVBTKQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoTUlQU1Jl
Z2lzdGVyczo6c3ApKTsKKyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIENQVSIKKyNlbmRpZgor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVCBDUFVTdGF0ZTo6cGMoKSBjb25zdAoreworICAg
IENQVVN0YXRlKiBjcHUgPSBjb25zdF9jYXN0PENQVVN0YXRlKj4odGhpcyk7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VD4oY3B1LT5wYygpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK1QgQ1BVU3RhdGU6OmZwKCkgY29uc3QKK3sKKyAgICBDUFVTdGF0ZSogY3B1ID0gY29uc3Rf
Y2FzdDxDUFVTdGF0ZSo+KHRoaXMpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KGNw
dS0+ZnAoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUIENQVVN0YXRlOjpzcCgpIGNv
bnN0Cit7CisgICAgQ1BVU3RhdGUqIGNwdSA9IGNvbnN0X2Nhc3Q8Q1BVU3RhdGUqPih0aGlzKTsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihjcHUtPnNwKCkpOworfQorCitzdHJ1Y3Qg
U3RhdGU7Cit0eXBlZGVmIHZvaWQgKCpTdGFja0luaXRpYWxpemF0aW9uRnVuY3Rpb24pKFN0YXRl
Kik7CisKK3N0cnVjdCBTdGF0ZSB7CisgICAgUHJvYmU6OkZ1bmN0aW9uIHByb2JlRnVuY3Rpb247
CisgICAgdm9pZCogYXJnOworICAgIFN0YWNrSW5pdGlhbGl6YXRpb25GdW5jdGlvbiBpbml0aWFs
aXplU3RhY2tGdW5jdGlvbjsKKyAgICB2b2lkKiBpbml0aWFsaXplU3RhY2tBcmc7CisgICAgQ1BV
U3RhdGUgY3B1OworfTsKKworY2xhc3MgQ29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpS
ZWdpc3RlcklEOworICAgIHVzaW5nIFNQUmVnaXN0ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpTUFJl
Z2lzdGVySUQ7CisgICAgdXNpbmcgRlBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OkZQUmVn
aXN0ZXJJRDsKKworICAgIENvbnRleHQoU3RhdGUqIHN0YXRlKQorICAgICAgICA6IG1fc3RhdGUo
c3RhdGUpCisgICAgICAgICwgYXJnKHN0YXRlLT5hcmcpCisgICAgICAgICwgY3B1KHN0YXRlLT5j
cHUpCisgICAgeyB9CisKKyAgICB1aW50cHRyX3QmIGdwcihSZWdpc3RlcklEIGlkKSB7IHJldHVy
biBtX3N0YXRlLT5jcHUuZ3ByKGlkKTsgfQorICAgIHVpbnRwdHJfdCYgc3ByKFNQUmVnaXN0ZXJJ
RCBpZCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwcihpZCk7IH0KKyAgICBkb3VibGUmIGZwcihG
UFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcHIoaWQpOyB9CisgICAgY29u
c3QgY2hhciogZ3ByTmFtZShSZWdpc3RlcklEIGlkKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZ3By
TmFtZShpZCk7IH0KKyAgICBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVnaXN0ZXJJRCBpZCkgeyBy
ZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwck5hbWUoaWQpOyB9CisgICAgY29uc3QgY2hhciogZnByTmFt
ZShGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIG1fc3RhdGUtPmNwdS5mcHJOYW1lKGlkKTsgfQor
CisgICAgdm9pZComIHBjKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnBjKCk7IH0KKyAgICB2b2lk
KiYgZnAoKSB7IHJldHVybiBtX3N0YXRlLT5jcHUuZnAoKTsgfQorICAgIHZvaWQqJiBzcCgpIHsg
cmV0dXJuIG1fc3RhdGUtPmNwdS5zcCgpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBU
IHBjKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnBjPFQ+KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBUIGZwKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LmZwPFQ+KCk7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUIHNwKCkgeyByZXR1cm4gbV9zdGF0ZS0+Y3B1LnNwPFQ+KCk7IH0K
KworICAgIFN0YWNrJiBzdGFjaygpCisgICAgeworICAgICAgICBBU1NFUlQobV9zdGFjay5pc1Zh
bGlkKCkpOworICAgICAgICByZXR1cm4gbV9zdGFjazsKKyAgICB9OworCisgICAgYm9vbCBoYXNX
cml0ZXNUb0ZsdXNoKCkgeyByZXR1cm4gbV9zdGFjay5oYXNXcml0ZXNUb0ZsdXNoKCk7IH0KKyAg
ICBTdGFjayogcmVsZWFzZVN0YWNrKCkgeyByZXR1cm4gbmV3IFN0YWNrKFdURk1vdmUobV9zdGFj
aykpOyB9CisKK3ByaXZhdGU6CisgICAgU3RhdGUqIG1fc3RhdGU7CitwdWJsaWM6CisgICAgdm9p
ZCogYXJnOworICAgIENQVVN0YXRlJiBjcHU7CisKK3ByaXZhdGU6CisgICAgU3RhY2sgbV9zdGFj
azsKKworICAgIGZyaWVuZCBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBwcm9iZVN0YXRlRm9yQ29u
dGV4dChDb250ZXh0Jik7IC8vIE5vdCBmb3IgZ2VuZXJhbCB1c2UuIFRoaXMgc2hvdWxkIG9ubHkg
YmUgZm9yIHdyaXRpbmcgdGVzdHMuCit9OworCit2b2lkIGV4ZWN1dGVQcm9iZShTdGF0ZSopOwor
Cit9IC8vIG5hbWVzcGFjZSBQcm9iZQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByb2Jl
U3RhY2suaCIKKworI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3Bh
Y2UgUHJvYmUgeworCitQYWdlOjpQYWdlKHZvaWQqIGJhc2VBZGRyZXNzKQorICAgIDogbV9iYXNl
TG9naWNhbEFkZHJlc3MoYmFzZUFkZHJlc3MpCit7CisgICAgbWVtY3B5KCZtX2J1ZmZlciwgYmFz
ZUFkZHJlc3MsIHNfcGFnZVNpemUpOworfQorCit2b2lkIFBhZ2U6OmZsdXNoV3JpdGVzKCkKK3sK
KyAgICB1aW50cHRyX3QgZGlydHlCaXRzID0gbV9kaXJ0eUJpdHM7CisgICAgc2l6ZV90IG9mZnNl
dCA9IDA7CisgICAgd2hpbGUgKGRpcnR5Qml0cykgeworICAgICAgICAvLyBGaW5kIHN0YXJ0Lgor
ICAgICAgICBpZiAoZGlydHlCaXRzICYgMSkgeworICAgICAgICAgICAgc2l6ZV90IHN0YXJ0T2Zm
c2V0ID0gb2Zmc2V0OworICAgICAgICAgICAgLy8gRmluZCBlbmQuCisgICAgICAgICAgICBkbyB7
CisgICAgICAgICAgICAgICAgZGlydHlCaXRzID0gZGlydHlCaXRzID4+IDE7CisgICAgICAgICAg
ICAgICAgb2Zmc2V0ICs9IHNfY2h1bmtTaXplOworICAgICAgICAgICAgfSB3aGlsZSAoZGlydHlC
aXRzICYgMSk7CisKKyAgICAgICAgICAgIHNpemVfdCBzaXplID0gb2Zmc2V0IC0gc3RhcnRPZmZz
ZXQ7CisgICAgICAgICAgICB1aW50OF90KiBzcmMgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PigmbV9idWZmZXIpICsgc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICB1aW50OF90KiBkc3QgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2Jhc2VMb2dpY2FsQWRkcmVzcykgKyBzdGFydE9m
ZnNldDsKKyAgICAgICAgICAgIG1lbWNweShkc3QsIHNyYywgc2l6ZSk7CisgICAgICAgIH0KKyAg
ICAgICAgZGlydHlCaXRzID0gZGlydHlCaXRzID4+IDE7CisgICAgICAgIG9mZnNldCArPSBzX2No
dW5rU2l6ZTsKKyAgICB9CisgICAgbV9kaXJ0eUJpdHMgPSAwOworfQorCitTdGFjazo6U3RhY2so
U3RhY2smJiBvdGhlcikKKyAgICA6IG1fbmV3U3RhY2tQb2ludGVyKG90aGVyLm1fbmV3U3RhY2tQ
b2ludGVyKQorICAgICwgbV9sb3dXYXRlcm1hcmsob3RoZXIubV9sb3dXYXRlcm1hcmspCisgICAg
LCBtX3N0YWNrQm91bmRzKFdURk1vdmUob3RoZXIubV9zdGFja0JvdW5kcykpCisgICAgLCBtX3Bh
Z2VzKFdURk1vdmUob3RoZXIubV9wYWdlcykpCit7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAg
IG90aGVyLm1faXNWYWxpZCA9IGZhbHNlOworI2VuZGlmCit9CisKK2Jvb2wgU3RhY2s6Omhhc1dy
aXRlc1RvRmx1c2goKQoreworICAgIHJldHVybiBzdGQ6OmFueV9vZihtX3BhZ2VzLmJlZ2luKCks
IG1fcGFnZXMuZW5kKCksIFtdIChhdXRvJiBpdCkgeyByZXR1cm4gaXQudmFsdWUtPmhhc1dyaXRl
c1RvRmx1c2goKTsgfSk7Cit9CisKK3ZvaWQgU3RhY2s6OmZsdXNoV3JpdGVzKCkKK3sKKyAgICBm
b3IgKGF1dG8gaXQgPSBtX3BhZ2VzLmJlZ2luKCk7IGl0ICE9IG1fcGFnZXMuZW5kKCk7ICsraXQp
CisgICAgICAgIGl0LT52YWx1ZS0+Zmx1c2hXcml0ZXNJZk5lZWRlZCgpOworfQorCitQYWdlKiBT
dGFjazo6ZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNzKQoreworICAgIC8vIFNpbmNlIHRoZSBt
YWNoaW5lIHN0YWNrIGlzIGFsd2F5cyBhbGxvY2F0ZWQgaW4gdW5pdHMgb2Ygd2hvbGUgcGFnZXMs
IGFzc2VydGluZworICAgIC8vIHRoYXQgdGhlIGFkZHJlc3MgaXMgY29udGFpbmVkIGluIHRoZSBz
dGFjayBpcyBzdWZmaWNpZW50IHRvIGluZmVyIHRoYXQgaXRzIHBhZ2UKKyAgICAvLyBpcyBhbHNv
IGNvbnRhaW5lZCBpbiB0aGUgc3RhY2suCisgICAgUkVMRUFTRV9BU1NFUlQobV9zdGFja0JvdW5k
cy5jb250YWlucyhhZGRyZXNzKSk7CisKKyAgICAvLyBXZSBtYXkgaGF2ZSBnb3R0ZW4gaGVyZSBi
ZWNhdXNlIG9mIGEgY2FjaGUgbWlzcy4gU28sIGxvb2sgdXAgdGhlIHBhZ2UgZmlyc3QKKyAgICAv
LyBiZWZvcmUgYWxsb2NhdGluZyBhIG5ldyBvbmUsCisgICAgdm9pZCogYmFzZUFkZHJlc3MgPSBQ
YWdlOjpiYXNlQWRkcmVzc0ZvcihhZGRyZXNzKTsKKyAgICBhdXRvIGl0ID0gbV9wYWdlcy5maW5k
KGJhc2VBZGRyZXNzKTsKKyAgICBpZiAoTElLRUxZKGl0ICE9IG1fcGFnZXMuZW5kKCkpKQorICAg
ICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgZWxzZSB7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
PihiYXNlQWRkcmVzcyk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFzZUFk
ZHJlc3MsIFdURk1vdmUocGFnZSkpOworICAgICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIH0KKyAgICBtX2xhc3RBY2Nlc3NlZFBhZ2VC
YXNlQWRkcmVzcyA9IGJhc2VBZGRyZXNzOworICAgIHJldHVybiBtX2xhc3RBY2Nlc3NlZFBhZ2U7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFByb2JlCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJvYmVDb250ZXh0OworCituYW1lc3Bh
Y2UgUHJvYmUgeworCitjbGFzcyBQYWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBQYWdlKHZvaWQqIGJhc2VBZGRyZXNzKTsKKworICAgIHN0YXRpYyB2b2lk
KiBiYXNlQWRkcmVzc0Zvcih2b2lkKiBwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwKSAmIH5zX3BhZ2VN
YXNrKTsKKyAgICB9CisgICAgc3RhdGljIHZvaWQqIGNodW5rQWRkcmVzc0Zvcih2b2lkKiBwKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihwKSAmIH5zX2NodW5rTWFzayk7CisgICAgfQorCisgICAgdm9pZCog
YmFzZUFkZHJlc3MoKSB7IHJldHVybiBtX2Jhc2VMb2dpY2FsQWRkcmVzczsgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBUIGdldCh2b2lkKiBsb2dpY2FsQWRkcmVzcykKKyAgICB7
CisgICAgICAgIHJldHVybiAqcGh5c2ljYWxBZGRyZXNzRm9yPFQqPihsb2dpY2FsQWRkcmVzcyk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldCh2b2lkKiBs
b2dpY2FsQWRkcmVzcywgVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fZGlydHlCaXRzIHw9IGRp
cnR5Qml0Rm9yKGxvZ2ljYWxBZGRyZXNzKTsKKyAgICAgICAgKnBoeXNpY2FsQWRkcmVzc0ZvcjxU
Kj4obG9naWNhbEFkZHJlc3MpID0gdmFsdWU7CisgICAgfQorCisgICAgYm9vbCBoYXNXcml0ZXNU
b0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gISFtX2RpcnR5Qml0czsgfQorICAgIHZvaWQgZmx1c2hX
cml0ZXNJZk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAobV9kaXJ0eUJpdHMpCisgICAgICAg
ICAgICBmbHVzaFdyaXRlcygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50cHRyX3QgZGly
dHlCaXRGb3Iodm9pZCogbG9naWNhbEFkZHJlc3MpCisgICAgeworICAgICAgICB1aW50cHRyX3Qg
b2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGxvZ2ljYWxBZGRyZXNzKSAmIHNf
cGFnZU1hc2s7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpIDw8IChv
ZmZzZXQgPj4gc19jaHVua1NpemVTaGlmdCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8
VD46OnZhbHVlPjo6dHlwZT4KKyAgICBUIHBoeXNpY2FsQWRkcmVzc0Zvcih2b2lkKiBsb2dpY2Fs
QWRkcmVzcykKKyAgICB7CisgICAgICAgIHVpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4obG9naWNhbEFkZHJlc3MpICYgc19wYWdlTWFzazsKKyAgICAgICAgdm9p
ZCogcGh5c2ljYWxBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJm1fYnVmZmVy
KSArIG9mZnNldDsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VD4ocGh5c2ljYWxB
ZGRyZXNzKTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoV3JpdGVzKCk7CisKKyAgICB2b2lkKiBt
X2Jhc2VMb2dpY2FsQWRkcmVzcyB7IG51bGxwdHIgfTsKKyAgICB1aW50cHRyX3QgbV9kaXJ0eUJp
dHMgeyAwIH07CisKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzX3BhZ2VTaXplID0gMTAy
NDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBzX3BhZ2VNYXNrID0gc19wYWdlU2l6
ZSAtIDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc19jaHVua3NQZXJQYWdlID0gc2l6
ZW9mKHVpbnRwdHJfdCkgKiA4OyAvLyBzaXplb2YobV9kaXJ0eUJpdHMpIGluIGJpdHMuCisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc19jaHVua1NpemUgPSBzX3BhZ2VTaXplIC8gc19jaHVu
a3NQZXJQYWdlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHNfY2h1bmtNYXNrID0g
c19jaHVua1NpemUgLSAxOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3Qgc19jaHVua1NpemVTaGlmdCA9IDQ7CisjZWxzZQorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IHNfY2h1bmtTaXplU2hpZnQgPSA1OworI2VuZGlmCisgICAgc3RhdGljX2Fzc2Vy
dChzX3BhZ2VTaXplID4gc19jaHVua1NpemUsICJiYWQgcGFnZVNpemUgb3IgY2h1bmtTaXplIik7
CisgICAgc3RhdGljX2Fzc2VydChzX2NodW5rU2l6ZSA9PSAoMSA8PCBzX2NodW5rU2l6ZVNoaWZ0
KSwgImJhZCBjaHVua1NpemVTaGlmdCIpOworCisKKyAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6
YWxpZ25lZF9zdG9yYWdlPHNfcGFnZVNpemUsIHN0ZDo6YWxpZ25tZW50X29mPHVpbnRwdHJfdD46
OnZhbHVlPjo6dHlwZSBCdWZmZXI7CisgICAgQnVmZmVyIG1fYnVmZmVyOworfTsKKworY2xhc3Mg
U3RhY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFN0YWNr
KCkKKyAgICAgICAgOiBtX2xvd1dhdGVybWFyayhyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkp
CisgICAgICAgICwgbV9zdGFja0JvdW5kcyhUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpKQorICAg
IHsgfQorICAgIFN0YWNrKFN0YWNrJiYgb3RoZXIpOworCisgICAgdm9pZCogbG93V2F0ZXJtYXJr
KCkgeyByZXR1cm4gbV9sb3dXYXRlcm1hcms7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxkb3VibGUsIHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlIGdldCh2b2lkKiBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgUGFnZSogcGFnZSA9IHBhZ2VGb3IoYWRkcmVzcyk7Cisg
ICAgICAgIHJldHVybiBwYWdlLT5nZXQ8VD4oYWRkcmVzcyk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjpp
c19zYW1lPGRvdWJsZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZT46
OnR5cGU+CisgICAgdm9pZCBzZXQodm9pZCogYWRkcmVzcywgVCB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIFBhZ2UqIHBhZ2UgPSBwYWdlRm9yKGFkZHJlc3MpOworICAgICAgICBwYWdlLT5zZXQ8VD4o
YWRkcmVzcywgdmFsdWUpOworCisgICAgICAgIC8vIFdlIHVzZSB0aGUgY2h1bmtBZGRyZXNzIGZv
ciB0aGUgbG93IHdhdGVybWFyayBiZWNhdXNlIHdlJ2xsIGJlIGRvaW5nIHdyaXRlIGJhY2tzCisg
ICAgICAgIC8vIHRvIHRoZSBzdGFjayBpbiBpbmNyZW1lbnRzIG9mIGNodW5rcy4gSGVuY2UsIHdl
J2xsIHRyZWF0IHRoZSBsb3dlc3QgYWRkcmVzcyBvZgorICAgICAgICAvLyB0aGUgY2h1bmsgYXMg
dGhlIGxvdyB3YXRlcm1hcmsgb2YgYW55IGdpdmVuIHNldCBhZGRyZXNzLgorICAgICAgICB2b2lk
KiBjaHVua0FkZHJlc3MgPSBQYWdlOjpjaHVua0FkZHJlc3NGb3IoYWRkcmVzcyk7CisgICAgICAg
IGlmIChjaHVua0FkZHJlc3MgPCBtX2xvd1dhdGVybWFyaykKKyAgICAgICAgICAgIG1fbG93V2F0
ZXJtYXJrID0gY2h1bmtBZGRyZXNzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPGRvdWJsZSwgdHlwZW5h
bWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZSwgVD46OnR5cGUgZ2V0KHZvaWQqIGFk
ZHJlc3MpCisgICAgeworICAgICAgICBQYWdlKiBwYWdlID0gcGFnZUZvcihhZGRyZXNzKTsKKyAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KHBhZ2UtPmdldDx1aW50NjRfdD4oYWRk
cmVzcykpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPGRvdWJsZSwgdHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+CisgICAgdm9pZCBzZXQodm9pZCogYWRk
cmVzcywgZG91YmxlIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0PHVpbnQ2NF90PihhZGRyZXNz
LCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSk7CisgICAgfQorCisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgUGFnZSogZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNzKTsKKworICAgIHZvaWQq
IG5ld1N0YWNrUG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3RhY2tQb2ludGVyOyB9Owor
ICAgIHZvaWQgc2V0TmV3U3RhY2tQb2ludGVyKHZvaWQqIHNwKSB7IG1fbmV3U3RhY2tQb2ludGVy
ID0gc3A7IH07CisKKyAgICBib29sIGhhc1dyaXRlc1RvRmx1c2goKTsKKyAgICB2b2lkIGZsdXNo
V3JpdGVzKCk7CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgYm9vbCBpc1ZhbGlkKCkgeyBy
ZXR1cm4gbV9pc1ZhbGlkOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBQYWdlKiBwYWdlRm9y
KHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoTElLRUxZKFBhZ2U6OmJhc2VBZGRy
ZXNzRm9yKGFkZHJlc3MpID09IG1fbGFzdEFjY2Vzc2VkUGFnZUJhc2VBZGRyZXNzKSkKKyAgICAg
ICAgICAgIHJldHVybiBtX2xhc3RBY2Nlc3NlZFBhZ2U7CisgICAgICAgIHJldHVybiBlbnN1cmVQ
YWdlRm9yKGFkZHJlc3MpOworICAgIH0KKworICAgIHZvaWQqIG1fbmV3U3RhY2tQb2ludGVyIHsg
bnVsbHB0ciB9OworICAgIHZvaWQqIG1fbG93V2F0ZXJtYXJrOworCisgICAgLy8gQSBjYWNoZSBv
ZiB0aGUgbGFzdCBhY2Nlc3NlZCBwYWdlIGRldGFpbHMgZm9yIHF1aWNrIGFjY2Vzcy4KKyAgICB2
b2lkKiBtX2xhc3RBY2Nlc3NlZFBhZ2VCYXNlQWRkcmVzcyB7IG51bGxwdHIgfTsKKyAgICBQYWdl
KiBtX2xhc3RBY2Nlc3NlZFBhZ2UgeyBudWxscHRyIH07CisKKyAgICBTdGFja0JvdW5kcyBtX3N0
YWNrQm91bmRzOworICAgIEhhc2hNYXA8dm9pZCosIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPj4gbV9w
YWdlczsKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIG1faXNWYWxpZCB7IHRydWUg
fTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgUHJvYmUKK30gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJ
KHJldmlzaW9uIDIyMDk1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVz
dG1hc20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR1BS
SW5mby5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBp
bGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KQEAgLTYxLDEyICs2MiwyMCBAQCBzdGF0aWMgdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvCiB9IC8vIG5hbWVzcGFjZSBXVEYKICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkK
IAorbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgUHJvYmUgeworCitKU19FWFBPUlRfUFJJVkFU
RSB2b2lkKiBwcm9iZVN0YXRlRm9yQ29udGV4dChQcm9iZTo6Q29udGV4dCYpOworCit9IC8vIG5h
bWVzcGFjZSBQcm9iZQorfSAvLyBuYW1lc3BhY2UgSlNDCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSB7CiAKICNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKLXVzaW5nIENQVVN0YXRl
ID0gTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOwordXNpbmcgQ1BVU3RhdGUgPSBQcm9iZTo6Q1BV
U3RhdGU7CiAjZW5kaWYKIAogU3RhdGljTG9jayBjcmFzaExvY2s7CkBAIC0xODQsOCArMTkzLDgg
QEAgdm9pZCB0ZXN0UHJvYmVSZWFkc0FyZ3VtZW50UmVnaXN0ZXJzKCkKICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodGVzdFdvcmQoMykpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjMpOwogI2VuZGlmCiAKLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0YXRl
KiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7CisgICAg
ICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlV2FzQ2FsbGVkID0g
dHJ1ZTsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5ncHIoR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSwgdGVzdFdvcmQoMCkpOwogICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmdwcihHUFJJbmZvOjph
cmd1bWVudEdQUjEpLCB0ZXN0V29yZCgxKSk7CkBAIC0yMjYsOCArMjM1LDggQEAgdm9pZCB0ZXN0
UHJvYmVXcml0ZXNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAgICAgIGppdC5jb252ZXJ0SW50MzJU
b0RvdWJsZShHUFJJbmZvOjphcmd1bWVudEdQUjAsIEZQUkluZm86OmZwUmVnVDEpOwogCiAgICAg
ICAgIC8vIFdyaXRlIGV4cGVjdGVkIHZhbHVlcy4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJv
YmU6OlN0YXRlKiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5j
cHU7CisgICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2Fs
bENvdW50Kys7CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0
ZXN0V29yZCgwKTsKICAgICAgICAgICAgIGNwdS5ncHIoR1BSSW5mbzo6YXJndW1lbnRHUFIxKSA9
IHRlc3RXb3JkKDEpOwpAQCAtMjM5LDggKzI0OCw4IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJn
dW1lbnRSZWdpc3RlcnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0
IGV4cGVjdGVkIHZhbHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC0+
Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNh
bGxDb3VudCsrOwogICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVu
dEdQUjApLCB0ZXN0V29yZCgwKSk7CiAgICAgICAgICAgICBDSEVDS19FUShjcHUuZ3ByKEdQUklu
Zm86OmFyZ3VtZW50R1BSMSksIHRlc3RXb3JkKDEpKTsKQEAgLTI4Miw4ICsyOTEsOCBAQCB2b2lk
IHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoKTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0
ZXJzIChleGNlcHQgZm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnByb2JlKFsmXSAo
UHJvYmU6OlN0YXRlKiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0
LT5jcHU7CisgICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2Jl
Q2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZp
cnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBu
ZXh0SUQoaWQpKSB7CiAgICAgICAgICAgICAgICAgb3JpZ2luYWxTdGF0ZS5ncHIoaWQpID0gY3B1
LmdwcihpZCk7CkBAIC0yOTgsMTUgKzMwNywxNSBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQ
UlMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwg
YSBsb3Qgb2YgZnVuY3Rpb25zIGFuZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGpp
dC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSopIHsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJv
YmU6OkNvbnRleHQmKSB7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAg
ICAgQ0hFQ0tfRVEodGVzdEZ1bmN0aW9uVG9UcmFzaEdQUnMoMCwgMSwgMiwgMywgNCwgNSwgNiwg
NywgOCwgOSksIDEwKTsKICAgICAgICAgICAgIENIRUNLX0VRKHRlc3RGdW5jdGlvblRvVHJhc2hG
UFJzKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAxMCk7CiAgICAgICAgIH0pOwogCiAg
ICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2
YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewot
ICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUo
WyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0g
Y29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAg
Zm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxs
SGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewogICAgICAgICAgICAg
ICAgIGlmIChpc1NQKGlkKSB8fCBpc0ZQKGlkKSkgewpAQCAtMzIyLDggKzMzMSw4IEBAIHZvaWQg
dGVzdFByb2JlUHJlc2VydmVzR1BSUygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3Rv
cmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3Rh
dGUqIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKKyAg
ICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAg
ICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQr
KzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3Rl
cigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoaXNTcGVjaWFsR1BSKGlkKSkKQEAgLTMzNSw4ICszNDQs
OCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsKIAogICAgICAg
ICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9yZWQuCi0gICAg
ICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAg
YXV0byYgY3B1ID0gY29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7
CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlk
ID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFz
dFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewogICAgICAgICAgICAgICAgIGlmIChpc1Nw
ZWNpYWxHUFIoaWQpKQpAQCAtMzUzLDcgKzM2Miw3IEBAIHZvaWQgdGVzdFByb2JlUHJlc2VydmVz
R1BSUygpCiAgICAgQ0hFQ0tfRVEocHJvYmVDYWxsQ291bnQsIDUpOwogfQogCi12b2lkIHRlc3RQ
cm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OlN0YXRl
Kik+IGNvbXB1dGVNb2RpZmllZFN0YWNrKQordm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9p
bnRlcihXVEY6OkZ1bmN0aW9uPHZvaWQqKFByb2JlOjpDb250ZXh0Jik+IGNvbXB1dGVNb2RpZmll
ZFN0YWNrUG9pbnRlcikKIHsKICAgICB1bnNpZ25lZCBwcm9iZUNhbGxDb3VudCA9IDA7CiAgICAg
Q1BVU3RhdGUgb3JpZ2luYWxTdGF0ZTsKQEAgLTM2Niw3ICszNzUsNyBAQCB2b2lkIHRlc3RQcm9i
ZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6CiAgICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4
YzU7CiAjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKICAgICBh
dXRvIGZsYWdzU1BSID0gQVJNUmVnaXN0ZXJzOjphcHNyOwotICAgIHVpbnRwdHJfdCBmbGFnc01h
c2sgPSAweGYwMDAwMDAwOworICAgIHVpbnRwdHJfdCBmbGFnc01hc2sgPSAweGY4MDAwMDAwOwog
I2VsaWYgQ1BVKEFSTTY0KQogICAgIGF1dG8gZmxhZ3NTUFIgPSBBUk02NFJlZ2lzdGVyczo6bnpj
djsKICAgICB1aW50cHRyX3QgZmxhZ3NNYXNrID0gMHhmMDAwMDAwMDsKQEAgLTM3Nyw4ICszODYs
OCBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6CiAKICAgICAgICAg
Ly8gUHJlc2VydmUgb3JpZ2luYWwgc3RhY2sgcG9pbnRlciBhbmQgbW9kaWZ5IHRoZSBzcCwgYW5k
CiAgICAgICAgIC8vIHdyaXRlIGV4cGVjdGVkIHZhbHVlcyBpbnRvIG90aGVyIHJlZ2lzdGVycyAo
ZXhjZXB0IGZvciBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OlN0
YXRlKiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7Cisg
ICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0
ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQp
KSB7CiAgICAgICAgICAgICAgICAgb3JpZ2luYWxTdGF0ZS5ncHIoaWQpID0gY3B1LmdwcihpZCk7
CkBAIC0zOTYsMTMgKzQwNSwxMyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVy
KFdURjo6CiAgICAgICAgICAgICBjcHUuc3ByKGZsYWdzU1BSKSA9IG1vZGlmaWVkRmxhZ3M7CiAK
ICAgICAgICAgICAgIG9yaWdpbmFsU1AgPSBjcHUuc3AoKTsKLSAgICAgICAgICAgIG1vZGlmaWVk
U1AgPSBjb21wdXRlTW9kaWZpZWRTdGFjayhjb250ZXh0KTsKKyAgICAgICAgICAgIG1vZGlmaWVk
U1AgPSBjb21wdXRlTW9kaWZpZWRTdGFja1BvaW50ZXIoY29udGV4dCk7CiAgICAgICAgICAgICBj
cHUuc3AoKSA9IG1vZGlmaWVkU1A7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRl
IHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMuCi0gICAgICAgIGpp
dC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYg
Y3B1ID0gY29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4
dCYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAg
ICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0Nh
bGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lz
dGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewogICAgICAgICAgICAgICAgIGlmIChpc0ZQKGlkKSkg
ewpAQCAtNDE1LDEzICs0MjQsMTMgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRl
cihXVEY6OgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxI
ZWxwZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdp
c3RlcigpOyBpZCA9IG5leHRJRChpZCkpCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmZw
cjx1aW50NjRfdD4oaWQpLCB0ZXN0V29yZDY0KGlkKSk7Ci0gICAgICAgICAgICBDSEVDS19FUShj
cHUuc3ByKGZsYWdzU1BSKSwgbW9kaWZpZWRGbGFncyk7CisgICAgICAgICAgICBDSEVDS19FUShj
cHUuc3ByKGZsYWdzU1BSKSAmIGZsYWdzTWFzaywgbW9kaWZpZWRGbGFncyAmIGZsYWdzTWFzayk7
CiAgICAgICAgICAgICBDSEVDS19FUShjcHUuc3AoKSwgbW9kaWZpZWRTUCk7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQu
cHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGF1dG8mIGNw
dSA9IGNvbnRleHQtPmNwdTsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpIHsKKyAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAg
ICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxs
SGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3Rl
cigpOyBpZCA9IG5leHRJRChpZCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNTcGVjaWFsR1BS
KGlkKSkKQEAgLTQzNSw4ICs0NDQsOCBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2lu
dGVyKFdURjo6CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIG9y
aWdpbmFsIHN0YXRlIHdhcyByZXN0b3JlZC4KLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6
OlN0YXRlKiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LT5jcHU7
CisgICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENv
dW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVn
aXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQo
aWQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzU3BlY2lhbEdQUihpZCkpCkBAIC00NDUsNyAr
NDU0LDcgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcihXVEY6OgogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdEZQ
UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0RlBSZWdpc3RlcigpOyBpZCA9IG5l
eHRJRChpZCkpCiAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoY3B1LmZwcjx1aW50NjRfdD4oaWQp
LCBvcmlnaW5hbFN0YXRlLmZwcjx1aW50NjRfdD4oaWQpKTsKLSAgICAgICAgICAgIENIRUNLX0VR
KGNwdS5zcHIoZmxhZ3NTUFIpLCBvcmlnaW5hbFN0YXRlLnNwcihmbGFnc1NQUikpOworICAgICAg
ICAgICAgQ0hFQ0tfRVEoY3B1LnNwcihmbGFnc1NQUikgJiBmbGFnc01hc2ssIG9yaWdpbmFsU3Rh
dGUuc3ByKGZsYWdzU1BSKSAmIGZsYWdzTWFzayk7CiAgICAgICAgICAgICBDSEVDS19FUShjcHUu
c3AoKSwgb3JpZ2luYWxTUCk7CiAgICAgICAgIH0pOwogCkBAIC00NjMsOCArNDcyLDkgQEAgdm9p
ZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlclRvSW5zaQogICAgIGluY3JlbWVudCA9IDIg
KiBzaXplb2YodWludHB0cl90KTsKICNlbmRpZgogICAgIGZvciAoc2l6ZV90IG9mZnNldCA9IDA7
IG9mZnNldCA8IHNpemVvZihQcm9iZTo6U3RhdGUpOyBvZmZzZXQgKz0gaW5jcmVtZW50KSB7Ci0g
ICAgICAgIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFs9XSAoUHJvYmU6OlN0YXRlKiBj
b250ZXh0KSAtPiB2b2lkKiB7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oY29udGV4dCkgKyBvZmZzZXQ7CisgICAgICAgIHRlc3RQcm9iZU1vZGlmaWVzU3Rh
Y2tQb2ludGVyKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIC0+IHZvaWQqIHsKKyAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihwcm9iZVN0YXRlRm9yQ29u
dGV4dChjb250ZXh0KSkgKyBvZmZzZXQ7CisKICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtNDc3
LDggKzQ4Nyw4IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXJUb05CeXQKICAg
ICBpbmNyZW1lbnQgPSAyICogc2l6ZW9mKHVpbnRwdHJfdCk7CiAjZW5kaWYKICAgICBmb3IgKHNp
emVfdCBvZmZzZXQgPSAwOyBvZmZzZXQgPCAxICogS0I7IG9mZnNldCArPSBpbmNyZW1lbnQpIHsK
LSAgICAgICAgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoWz1dIChQcm9iZTo6U3RhdGUq
IGNvbnRleHQpIC0+IHZvaWQqIHsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihjb250ZXh0LT5jcHUuc3AoKSkgLSBvZmZzZXQ7CisgICAgICAgIHRlc3RQcm9i
ZU1vZGlmaWVzU3RhY2tQb2ludGVyKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIC0+IHZv
aWQqIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNwdS5zcDx1aW50OF90Kj4oKSAtIG9m
ZnNldDsKICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtNDkzLDcgKzUwMyw3IEBAIHZvaWQgdGVz
dFByb2JlTW9kaWZpZXNQcm9ncmFtQ291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgY29udGludWF0aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAg
ICAgIC8vIFZhbGlkYXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAgICAg
ICBqaXQucHJvYmUoWyZdIChQcm9iZTo6U3RhdGUqKSB7CisgICAgICAgIGppdC5wcm9iZShbJl0g
KFByb2JlOjpDb250ZXh0JikgewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAg
ICAgICAgIGNvbnRpbnVhdGlvbldhc1JlYWNoZWQgPSB0cnVlOwogICAgICAgICB9KTsKQEAgLTUw
Niw5ICs1MTYsOSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIoKQogICAg
ICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgICAgICAvLyBXcml0ZSBleHBl
Y3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQ
cm9iZTo6U3RhdGUqIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5wYygpID0gY29udGludWF0aW9uLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpOworICAgICAgICAgICAgY29udGV4dC5jcHUucGMoKSA9IGNvbnRpbnVhdGlvbi5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmJyZWFrcG9p
bnQoKTsgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLgpAQCAtNTE3LDcxICs1MjcsMjMgQEAg
dm9pZCB0ZXN0UHJvYmVNb2RpZmllc1Byb2dyYW1Db3VudGVyKCkKICAgICBDSEVDS19FUShjb250
aW51YXRpb25XYXNSZWFjaGVkLCB0cnVlKTsKIH0KIAotc3RydWN0IEZpbGxTdGFja0RhdGEgewor
dm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKK3sKKyAgICB1bnNpZ25lZCBwcm9i
ZUNhbGxDb3VudCA9IDA7CiAgICAgQ1BVU3RhdGUgb3JpZ2luYWxTdGF0ZTsKICAgICB2b2lkKiBv
cmlnaW5hbFNQIHsgbnVsbHB0ciB9OwogICAgIHZvaWQqIG5ld1NQIHsgbnVsbHB0ciB9OwogICAg
IHVpbnRwdHJfdCBtb2RpZmllZEZsYWdzIHsgMCB9OwotICAgIE1hY3JvQXNzZW1ibGVyOjpTUFJl
Z2lzdGVySUQgZmxhZ3NTUFI7Ci19OwotCi1zdGF0aWMgdm9pZCBmaWxsU3RhY2soUHJvYmU6OlN0
YXRlKiBjb250ZXh0KQotewotICAgIGF1dG8mIGNwdSA9IGNvbnRleHQtPmNwdTsKLQotICAgIEZp
bGxTdGFja0RhdGEmIGRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxGaWxsU3RhY2tEYXRhKj4oY29u
dGV4dC0+aW5pdGlhbGl6ZVN0YWNrQXJnKTsKLSAgICBDUFVTdGF0ZSYgb3JpZ2luYWxTdGF0ZSA9
IGRhdGEub3JpZ2luYWxTdGF0ZTsKLSAgICB2b2lkKiYgb3JpZ2luYWxTUCA9IGRhdGEub3JpZ2lu
YWxTUDsKLSAgICB2b2lkKiYgbmV3U1AgPSBkYXRhLm5ld1NQOwotICAgIHVpbnRwdHJfdCYgbW9k
aWZpZWRGbGFncyA9IGRhdGEubW9kaWZpZWRGbGFnczsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6U1BS
ZWdpc3RlcklEJiBmbGFnc1NQUiA9IGRhdGEuZmxhZ3NTUFI7Ci0KLSAgICBDSEVDS19FUShyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LT5pbml0aWFsaXplU3RhY2tGdW5jdGlvbiksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZpbGxTdGFjaykpOwotICAgIENIRUNLX0VRKGNwdS5zcCgp
LCBuZXdTUCk7Ci0KLSAgICAvLyBWZXJpZnkgdGhhdCB0aGUgcHJvYmUgaGFzIHB1dCB0aGUgUHJv
YmU6OlN0YXRlIG91dCBvZiBoYXJtJ3Mgd2F5LgotICAgIENIRUNLX0VRKChyZWludGVycHJldF9j
YXN0PHZvaWQqPihjb250ZXh0ICsgMSkgPD0gY3B1LnNwKCkpLCB0cnVlKTsKLQotICAgIC8vIFZl
cmlmeSB0aGUgQ1BVIHN0YXRlLgotICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmly
c3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5l
eHRJRChpZCkpIHsKLSAgICAgICAgaWYgKGlzRlAoaWQpKSB7Ci0gICAgICAgICAgICBDSEVDS19F
UShjcHUuZ3ByKGlkKSwgb3JpZ2luYWxTdGF0ZS5ncHIoaWQpKTsKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc1NwZWNpYWxHUFIoaWQpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIENIRUNLX0VRKGNwdS5ncHIoaWQpLCB0ZXN0V29yZChpZCkp
OwotICAgIH0KLSAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0RlBSZWdpc3Rl
cigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RGUFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlk
KSkKLSAgICAgICAgQ0hFQ0tfRVEoY3B1LmZwcjx1aW50NjRfdD4oaWQpLCB0ZXN0V29yZDY0KGlk
KSk7Ci0gICAgQ0hFQ0tfRVEoY3B1LnNwcihmbGFnc1NQUiksIG1vZGlmaWVkRmxhZ3MpOwotCi0g
ICAgLy8gRmlsbCB0aGUgc3RhY2sgd2l0aCB2YWx1ZXMuCi0gICAgdWludHB0cl90KiBwID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPihuZXdTUCk7Ci0gICAgaW50IGNvdW50ID0gMDsKLSAg
ICB3aGlsZSAocCA8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4ob3JpZ2luYWxTUCkpCi0g
ICAgICAgICpwKysgPSB0ZXN0V29yZChjb3VudCsrKTsKLX07Ci0KLXZvaWQgdGVzdFByb2JlTW9k
aWZpZXNTdGFja1dpdGhDYWxsYmFjaygpCi17Ci0gICAgdW5zaWduZWQgcHJvYmVDYWxsQ291bnQg
PSAwOwotICAgIEZpbGxTdGFja0RhdGEgZGF0YTsKLSAgICBDUFVTdGF0ZSYgb3JpZ2luYWxTdGF0
ZSA9IGRhdGEub3JpZ2luYWxTdGF0ZTsKLSAgICB2b2lkKiYgb3JpZ2luYWxTUCA9IGRhdGEub3Jp
Z2luYWxTUDsKLSAgICB2b2lkKiYgbmV3U1AgPSBkYXRhLm5ld1NQOwotICAgIHVpbnRwdHJfdCYg
bW9kaWZpZWRGbGFncyA9IGRhdGEubW9kaWZpZWRGbGFnczsKLSAgICBzaXplX3QgbnVtYmVyT2ZF
eHRyYUVudHJpZXNUb1dyaXRlID0gMTA7IC8vIEFSTTY0IHJlcXVpcmVzIHRoYXQgdGhpcyBiZSAy
IHdvcmQgYWxpZ25lZC4KLSAgICBNYWNyb0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEJiBmbGFnc1NQ
UiA9IGRhdGEuZmxhZ3NTUFI7CisgICAgc2l6ZV90IG51bWJlck9mRXh0cmFFbnRyaWVzVG9Xcml0
ZSB7IDEwIH07IC8vIEFSTTY0IHJlcXVpcmVzIHRoYXQgdGhpcyBiZSAyIHdvcmQgYWxpZ25lZC4K
IAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCi0gICAgZmxhZ3NTUFIgPSBYODZSZWdpc3Rl
cnM6OmVmbGFnczsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEIGZsYWdzU1BSID0g
WDg2UmVnaXN0ZXJzOjplZmxhZ3M7CiAgICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4YzU7CiAj
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICBmbGFnc1NQ
UiA9IEFSTVJlZ2lzdGVyczo6YXBzcjsKLSAgICB1aW50cHRyX3QgZmxhZ3NNYXNrID0gMHhmMDAw
MDAwMDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEIGZsYWdzU1BSID0gQVJNUmVn
aXN0ZXJzOjphcHNyOworICAgIHVpbnRwdHJfdCBmbGFnc01hc2sgPSAweGY4MDAwMDAwOwogI2Vs
aWYgQ1BVKEFSTTY0KQotICAgIGZsYWdzU1BSID0gQVJNNjRSZWdpc3RlcnM6Om56Y3Y7CisgICAg
TWFjcm9Bc3NlbWJsZXI6OlNQUmVnaXN0ZXJJRCBmbGFnc1NQUiA9IEFSTTY0UmVnaXN0ZXJzOjpu
emN2OwogICAgIHVpbnRwdHJfdCBmbGFnc01hc2sgPSAweGYwMDAwMDAwOwogI2VuZGlmCiAKQEAg
LTU4OSw4ICs1NTEsOSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tXaXRoQ2FsbGJhY2so
CiAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAgICAgICAgIC8vIFdyaXRl
IGV4cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29u
dGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4
dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CisgICAgICAgICAgICBh
dXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAKICAgICAgICAgICAgIC8vIFByZXNlcnZlIHRoZSBvcmlnaW5hbCBDUFUgc3RhdGUuCkBA
IC02MDgsMjEgKzU3MSwyNSBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tXaXRoQ2FsbGJh
Y2soCiAgICAgICAgICAgICBtb2RpZmllZEZsYWdzID0gb3JpZ2luYWxTdGF0ZS5zcHIoZmxhZ3NT
UFIpIF4gZmxhZ3NNYXNrOwogICAgICAgICAgICAgY3B1LnNwcihmbGFnc1NQUikgPSBtb2RpZmll
ZEZsYWdzOwogCi0gICAgICAgICAgICBDSEVDS19FUShyZWludGVycHJldF9jYXN0PHZvaWQqPihj
b250ZXh0LT5pbml0aWFsaXplU3RhY2tGdW5jdGlvbiksIDApOwotCi0gICAgICAgICAgICAvLyBQ
cmVwYXJlIGZvciBpbml0aWFsaXplU3RhY2sgY2FsbGJhY2suCi0gICAgICAgICAgICBjb250ZXh0
LT5pbml0aWFsaXplU3RhY2tGdW5jdGlvbiA9IGZpbGxTdGFjazsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmluaXRpYWxpemVTdGFja0FyZyA9ICZkYXRhOwotCiAgICAgICAgICAgICAvLyBFbnN1cmUg
dGhhdCB3ZSdsbCBiZSB3cml0aW5nIG92ZXIgdGhlIHJlZ2lvbnMgb2YgdGhlIHN0YWNrIHdoZXJl
IHRoZSBQcm9iZTo6U3RhdGUgaXMuCiAgICAgICAgICAgICBvcmlnaW5hbFNQID0gY3B1LnNwKCk7
Ci0gICAgICAgICAgICBuZXdTUCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4oY29udGV4
dCkgLSBudW1iZXJPZkV4dHJhRW50cmllc1RvV3JpdGU7CisgICAgICAgICAgICBuZXdTUCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4ocHJvYmVTdGF0ZUZvckNvbnRleHQoY29udGV4dCkp
IC0gbnVtYmVyT2ZFeHRyYUVudHJpZXNUb1dyaXRlOwogICAgICAgICAgICAgY3B1LnNwKCkgPSBu
ZXdTUDsKKworICAgICAgICAgICAgLy8gRmlsbCB0aGUgc3RhY2sgd2l0aCB2YWx1ZXMuCisgICAg
ICAgICAgICB1aW50cHRyX3QqIHAgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCo+KG5ld1NQ
KTsKKyAgICAgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgICAgICBzdGFjay5zZXQ8ZG91
YmxlPihwKyssIDEuMjM0NTY3ODkpOworICAgICAgICAgICAgaWYgKGlzMzJCaXQoKSkKKyAgICAg
ICAgICAgICAgICBwKys7IC8vIE9uIDMyLWJpdCB0YXJnZXRzLCBhIGRvdWJsZSB0YWtlcyB1cCAy
IHVpbnRwdHJfdC4KKyAgICAgICAgICAgIHdoaWxlIChwIDwgcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3QqPihvcmlnaW5hbFNQKSkKKyAgICAgICAgICAgICAgICBzdGFjay5zZXQ8dWludHB0cl90
PihwKyssIHRlc3RXb3JkKGNvdW50KyspKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gVmFs
aWRhdGUgdGhhdCB0aGUgcmVnaXN0ZXJzIGFuZCBzdGFjayBoYXZlIHRoZSBleHBlY3RlZCB2YWx1
ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpTdGF0ZSogY29udGV4dCkgewotICAg
ICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC0+Y3B1OworICAgICAgICBqaXQucHJvYmUoWyZd
IChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgYXV0byYgY3B1ID0gY29u
dGV4dC5jcHU7CisgICAgICAgICAgICBhdXRvJiBzdGFjayA9IGNvbnRleHQuc3RhY2soKTsKICAg
ICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAKICAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRo
ZSByZWdpc3RlciB2YWx1ZXMuCkBAIC02MzcsMTkgKzYwNCwyMiBAQCB2b2lkIHRlc3RQcm9iZU1v
ZGlmaWVzU3RhY2tXaXRoQ2FsbGJhY2soCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3Ig
KGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0RlBSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhl
bHBlcnM6Omxhc3RGUFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkKICAgICAgICAgICAgICAg
ICBDSEVDS19FUShjcHUuZnByPHVpbnQ2NF90PihpZCksIHRlc3RXb3JkNjQoaWQpKTsKLSAgICAg
ICAgICAgIENIRUNLX0VRKGNwdS5zcHIoZmxhZ3NTUFIpLCBtb2RpZmllZEZsYWdzKTsKKyAgICAg
ICAgICAgIENIRUNLX0VRKGNwdS5zcHIoZmxhZ3NTUFIpICYgZmxhZ3NNYXNrLCBtb2RpZmllZEZs
YWdzICYgZmxhZ3NNYXNrKTsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5zcCgpLCBuZXdTUCk7
CiAKLSAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSBzdGFjayB3aXRoIHZhbHVlcy4KKyAgICAg
ICAgICAgIC8vIFZhbGlkYXRlIHRoZSBzdGFjayB2YWx1ZXMuCiAgICAgICAgICAgICB1aW50cHRy
X3QqIHAgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCo+KG5ld1NQKTsKICAgICAgICAgICAg
IGludCBjb3VudCA9IDA7CisgICAgICAgICAgICBDSEVDS19FUShzdGFjay5nZXQ8ZG91YmxlPihw
KyspLCAxLjIzNDU2Nzg5KTsKKyAgICAgICAgICAgIGlmIChpczMyQml0KCkpCisgICAgICAgICAg
ICAgICAgcCsrOyAvLyBPbiAzMi1iaXQgdGFyZ2V0cywgYSBkb3VibGUgdGFrZXMgdXAgMiB1aW50
cHRyX3QuCiAgICAgICAgICAgICB3aGlsZSAocCA8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Kj4ob3JpZ2luYWxTUCkpCi0gICAgICAgICAgICAgICAgQ0hFQ0tfRVEoKnArKywgdGVzdFdvcmQo
Y291bnQrKykpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKHN0YWNrLmdldDx1aW50cHRyX3Q+
KHArKyksIHRlc3RXb3JkKGNvdW50KyspKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gUmVz
dG9yZSB0aGUgb3JpZ2luYWwgc3RhdGUuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpT
dGF0ZSogY29udGV4dCkgewotICAgICAgICAgICAgYXV0byYgY3B1ID0gY29udGV4dC0+Y3B1Owor
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3Vu
dCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lz
dGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlk
KSkgewogICAgICAgICAgICAgICAgIGlmIChpc1NwZWNpYWxHUFIoaWQpKQpAQCAtNzA3LDcgKzY3
Nyw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFByb2JlTW9k
aWZpZXNTdGFja1BvaW50ZXJUb0luc2lkZVByb2JlU3RhdGVPblN0YWNrKCkpOwogICAgIFJVTih0
ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlclRvTkJ5dGVzQmVsb3dTUCgpKTsKICAgICBSVU4o
dGVzdFByb2JlTW9kaWZpZXNQcm9ncmFtQ291bnRlcigpKTsKLSAgICBSVU4odGVzdFByb2JlTW9k
aWZpZXNTdGFja1dpdGhDYWxsYmFjaygpKTsKKyAgICBSVU4odGVzdFByb2JlTW9kaWZpZXNTdGFj
a1ZhbHVlcygpKTsKICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKIAogICAgIGlmICh0YXNr
cy5pc0VtcHR5KCkpCg==
</data>
<flag name="commit-queue"
          id="338978"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>