<?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>103623</bug_id>
          
          <creation_ts>2012-11-29 02:41:31 -0800</creation_ts>
          <short_desc>It should be easy to find code blocks in debug dumps</short_desc>
          <delta_ts>2012-11-29 19:43:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>102999</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>ojan</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>778860</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-29 02:41:31 -0800</bug_when>
    <thetext>Currently debug dumps identify code blocks by their address in memory. This has loads of problems:

- The relationship between code block and executable is not explicitly stated. So, if a code block gets inlined, the inlined code will refer to it by the address of its executable and you won&apos;t be able to quickly figure out which code block it was.
- The relationship between code blocks corresponding to different tiers is not stated. So, if a code block gets optimized, or reoptimized, then it will have a different address. It&apos;s hard to search debug output for all of the &quot;versions&quot; of a code block.
- If you want to search debug output on a 64-bit machine for a code block, you have to search for the address, which can be quite large. This can mean more typing sometimes.

This can be fixed by giving code blocks some sort of relatively strong, but also relatively compact, hash. We can compute it lazily so that it only impacts run-time when debug support is enabled. We can stringify it smartly so that it&apos;s short and easy to type. We can base it on the source code so that the optimization level is irrelevant. And, we can use SHA1 since it&apos;s already in our code base.

As part of this, we should also get CodeBlock debugging to use the new world of print() and dataLog(). In particular, CodeBlock::dump() should correspond to the thing you want printed if you do:

dataLog(&quot;I heart &quot;, *myCodeBlock);

Probably, you want to just print some identifying information at this point rather than the full bytecode dump. This implies renaming the existing CodeBlock::dump() to CodeBlock::dumpBytecode().

Finally, this new notion of CodeBlockHash should be available for other purposes like bisecting breakage. So it should have all of the comparisons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778871</commentid>
    <comment_count>1</comment_count>
      <attachid>176689</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-29 02:59:38 -0800</bug_when>
    <thetext>Created attachment 176689
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778873</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 03:02:45 -0800</bug_when>
    <thetext>Attachment 176689 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOSRExitCompiler.cpp:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/bytecode/CodeOrigin.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:708:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:782:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:853:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:919:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:992:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:1070:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:1144:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/CodeSpecializationKind.h:48:  The parameter name &quot;kind&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JITDisassembler.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:751:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:820:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:821:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:889:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:954:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1028:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/jit/JITPropertyAccess.cpp:1180:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/Executable.h:91:  The parameter name &quot;kind&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Executable.h:301:  The parameter name &quot;kind&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Executable.h:361:  The parameter name &quot;kind&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/dfg/DFGRepatch.cpp:240:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGRepatch.cpp:301:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGRepatch.cpp:530:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGRepatch.cpp:742:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/dfg/DFGRepatch.cpp:944:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 27 in 35 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>778877</commentid>
    <comment_count>3</comment_count>
      <attachid>176689</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-29 03:05:45 -0800</bug_when>
    <thetext>Comment on attachment 176689
work in progress

Attachment 176689 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15026796</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778884</commentid>
    <comment_count>4</comment_count>
      <attachid>176689</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-29 03:10:22 -0800</bug_when>
    <thetext>Comment on attachment 176689
work in progress

Attachment 176689 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15023780</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778886</commentid>
    <comment_count>5</comment_count>
      <attachid>176689</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-29 03:12:12 -0800</bug_when>
    <thetext>Comment on attachment 176689
work in progress

Attachment 176689 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15027775</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778887</commentid>
    <comment_count>6</comment_count>
      <attachid>176689</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-29 03:13:20 -0800</bug_when>
    <thetext>Comment on attachment 176689
work in progress

Attachment 176689 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15018806</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778891</commentid>
    <comment_count>7</comment_count>
      <attachid>176696</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-29 03:17:15 -0800</bug_when>
    <thetext>Created attachment 176696
sample disassembly

Sample disassembly, of bitops-bitwise-and.  Note that all of the things related to the benchmark&apos;s sole code block can be found by searching for DiBSvy.  That&apos;s the code block hash of this benchmark&apos;s global code.  It will not change from execution to execution, and so can be used for both casual introspection as well as bisecting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779084</commentid>
    <comment_count>8</comment_count>
      <attachid>176689</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 09:22:19 -0800</bug_when>
    <thetext>Comment on attachment 176689
work in progress

Attachment 176689 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15016902</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779353</commentid>
    <comment_count>9</comment_count>
      <attachid>176689</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-29 12:49:30 -0800</bug_when>
    <thetext>Comment on attachment 176689
work in progress

Attachment 176689 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15028977</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779453</commentid>
    <comment_count>10</comment_count>
      <attachid>176821</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-29 14:44:50 -0800</bug_when>
    <thetext>Created attachment 176821
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779462</commentid>
    <comment_count>11</comment_count>
      <attachid>176821</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-29 14:52:37 -0800</bug_when>
    <thetext>Comment on attachment 176821
the patch

Attachment 176821 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15060023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779463</commentid>
    <comment_count>12</comment_count>
      <attachid>176821</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-29 14:53:25 -0800</bug_when>
    <thetext>Comment on attachment 176821
the patch

Attachment 176821 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15025900</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779466</commentid>
    <comment_count>13</comment_count>
      <attachid>176821</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-29 14:58:08 -0800</bug_when>
    <thetext>Comment on attachment 176821
the patch

Attachment 176821 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15057069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779472</commentid>
    <comment_count>14</comment_count>
      <attachid>176821</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-11-29 15:01:04 -0800</bug_when>
    <thetext>Comment on attachment 176821
the patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:72
&gt; +    out.print(hash(), &quot;:[&quot;, RawPointer(this), &quot;, &quot;, jitType, codeType());

I wonder if there&apos;s a better way to call this out as a hash. Prefix with &quot;#&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779475</commentid>
    <comment_count>15</comment_count>
      <attachid>176821</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-29 15:01:25 -0800</bug_when>
    <thetext>Comment on attachment 176821
the patch

Attachment 176821 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15056076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779484</commentid>
    <comment_count>16</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-29 15:11:01 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 176821 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176821&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:72
&gt; &gt; +    out.print(hash(), &quot;:[&quot;, RawPointer(this), &quot;, &quot;, jitType, codeType());
&gt; 
&gt; I wonder if there&apos;s a better way to call this out as a hash. Prefix with &quot;#&quot;?

Yeah, that&apos;s a good idea.  I made all of the people who print CodeBlockHash&apos;s prefix them with #.  This preserves the invariant that

CodeBlockHash(toCString(foo).data()) == foo

and

!strcmp(toCString(CodeBlockHash(foo)).data(), foo)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779489</commentid>
    <comment_count>17</comment_count>
      <attachid>176828</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-29 15:14:55 -0800</bug_when>
    <thetext>Created attachment 176828
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779503</commentid>
    <comment_count>18</comment_count>
      <attachid>176828</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-29 15:24:42 -0800</bug_when>
    <thetext>Comment on attachment 176828
patch for landing

Attachment 176828 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15044477</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779506</commentid>
    <comment_count>19</comment_count>
      <attachid>176828</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-29 15:25:48 -0800</bug_when>
    <thetext>Comment on attachment 176828
patch for landing

Attachment 176828 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15044476</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779703</commentid>
    <comment_count>20</comment_count>
      <attachid>176877</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-29 18:17:52 -0800</bug_when>
    <thetext>Created attachment 176877
try again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779758</commentid>
    <comment_count>21</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-29 19:43:53 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/136199</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176689</attachid>
            <date>2012-11-29 02:59:38 -0800</date>
            <delta_ts>2012-11-29 14:44:50 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>codeblockhash.patch</filename>
            <type>text/plain</type>
            <size>96066</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MTE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MSBA
QAorMjAxMi0xMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEl0IHNob3VsZCBiZSBlYXN5IHRvIGZpbmQgY29kZSBibG9ja3MgaW4gZGVidWcgZHVtcHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzYyMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZ2l2ZXMg
Q29kZUJsb2NrIGEgcmVsYXRpdmVseSBzdHJvbmcsIGJ1dCBhbHNvIHJlbGF0aXZlbHkgY29tcGFj
dCwgaGFzaC4gV2UgY29tcHV0ZQorICAgICAgICBpdCBsYXppbHkgc28gdGhhdCBpdCBvbmx5IGlt
cGFjdHMgcnVuLXRpbWUgd2hlbiBkZWJ1ZyBzdXBwb3J0IGlzIGVuYWJsZWQuIFdlIHN0cmluZ2lm
eQorICAgICAgICBpdCBzbWFydGx5IHNvIHRoYXQgaXQncyBzaG9ydCBhbmQgZWFzeSB0byB0eXBl
LiBXZSBiYXNlIGl0IG9uIHRoZSBzb3VyY2UgY29kZSBzbyB0aGF0CisgICAgICAgIHRoZSBvcHRp
bWl6YXRpb24gbGV2ZWwgaXMgaXJyZWxldmFudC4gQW5kLCB3ZSB1c2UgU0hBMSBzaW5jZSBpdCdz
IGFscmVhZHkgaW4gb3VyIGNvZGUKKyAgICAgICAgYmFzZS4gTm93LCB3aGVuIGEgcGllY2Ugb2Yg
Y29kZSB3YW50cyB0byBwcmludCBzb21lIGRlYnVnZ2luZyB0byBzYXkgdGhhdCBpdCdzIG9wZXJh
dGluZworICAgICAgICBvbiBzb21lIGNvZGUgYmxvY2ssIGl0IGNhbiB1c2UgdGhpcyBDb2RlQmxv
Y2tIYXNoIGluc3RlYWQgb2YgbWVtb3J5IGFkZHJlc3Nlcy4KKworICAgICAgICBUaGlzIGFsc28g
dGFrZXMgQ29kZUJsb2NrIGRlYnVnZ2luZyB0byB1c2UgdGhlIG5ldyB3b3JsZCBvZiBwcmludCgp
IGFuZCBkYXRhTG9nKCkuIEluCisgICAgICAgIHBhcnRpY3VsYXIsIENvZGVCbG9jazo6ZHVtcCgp
IGNvcnJlc3BvbmRzIHRvIHRoZSB0aGluZyB5b3Ugd2FudCBwcmludGVkIGlmIHlvdSBkbzoKKwor
ICAgICAgICBkYXRhTG9nKCJJIGhlYXJ0ICIsICpteUNvZGVCbG9jayk7CisKKyAgICAgICAgUHJv
YmFibHksIHlvdSB3YW50IHRvIGp1c3QgcHJpbnQgc29tZSBpZGVudGlmeWluZyBpbmZvcm1hdGlv
biBhdCB0aGlzIHBvaW50IHJhdGhlciB0aGFuCisgICAgICAgIHRoZSBmdWxsIGJ5dGVjb2RlIGR1
bXAuIFNvLCB0aGUgZXhpc3RpbmcgQ29kZUJsb2NrOjpkdW1wKCkgaGFzIGJlZW4gcmVuYW1lZCB0
bworICAgICAgICBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpLCBhbmQgQ29kZUJsb2NrOjpkdW1w
KCkgbm93IHByaW50cyB0aGUgQ29kZUJsb2NrSGFzaCBwbHVzIGp1c3QKKyAgICAgICAgYSBmZXcg
bGl0dGxlIHRpZGJpdHMuCisgICAgICAgIAorICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBD
b2RlQmxvY2s6OmR1bXAoKSBvdXRwdXQ6CisgICAgICAgIAorICAgICAgICBFa0lMenI6WzB4MTAz
ODgzYTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbF0KKyAgICAgICAgCisgICAgICAgIEVrSUx6ciBp
cyB0aGUgQ29kZUJsb2NrSGFzaC4gMHgxMDM4ODNhMDAgaXMgdGhlIENvZGVCbG9jaydzIGFkZHJl
c3MgaW4gbWVtb3J5LiBUaGUgb3RoZXIKKyAgICAgICAgcGFydCBpcyBzZWxmLWV4cGxhbmF0b3J5
LgorCisgICAgICAgIEZpbmFsbHksIHRoaXMgbmV3IG5vdGlvbiBvZiBDb2RlQmxvY2tIYXNoIGlz
IGF2YWlsYWJsZSBmb3Igb3RoZXIgcHVycG9zZXMgbGlrZSBiaXNlY3RpbmcKKyAgICAgICAgYnJl
YWthZ2UuIEFzIHN1Y2ggQ29kZUJsb2NrSGFzaCBoYXMgYWxsIG9mIHRoZSBjb21wYXJpc29uIG9w
ZXJhdG9yIG92ZXJsb2Fkcy4gV2hlbgorICAgICAgICBiaXNlY3RpbmcgaW4gREZHRHJpdmVyLmNw
cCwgeW91IGNhbiBub3cgc2F5IHRoaW5ncyBsaWtlOgorICAgICAgICAKKyAgICAgICAgaWYgKGNv
ZGVCbG9jay0+aGFzaCgpIDwgQ29kZUJsb2NrSGFzaCgiQ0FBQUFBIikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBBbmQgeWVzLCBDQUFBQUEgaXMgdGhlIG1l
ZGlhbiBoYXNoLCBhbmQgdGhlIGxhcmdlc3Qgb25lIGlzIHNtYWxsZXIgdGhhbiBFOTk5OTkuIFN1
Y2ggaXMKKyAgICAgICAgbGlmZSB3aGVuIHlvdSB1c2UgYmFzZSA2MiB0byBlbmNvZGUgYSAzMi1i
aXQgbnVtYmVyLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKENh
bGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c3BlY2lhbGl6YXRpb25L
aW5kKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6Omhhc2gpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJ
VFR5cGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVzZXRTdHViSW50ZXJuYWwpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnJlb3B0aW1pemUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJs
b2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVt
cFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnNwZWNpYWxpemF0aW9uS2luZCk6CisgICAgICAgIChDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldEpJVFR5cGUpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
SGFzaDo6Q29kZUJsb2NrSGFzaCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6OmR1bXAp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0hhc2guaDogQWRkZWQuCisgICAgICAgIChD
b2RlQmxvY2tIYXNoKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrSGFzaDo6Q29kZUJsb2NrSGFz
aCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2tIYXNoOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrSGFzaDo6
b3BlcmF0b3IhPSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6Om9wZXJhdG9yPCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6Om9wZXJhdG9yPik6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9ja0hhc2g6Om9wZXJhdG9yPD0pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tIYXNoOjpv
cGVyYXRvcj49KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oOiBB
ZGRlZC4KKyAgICAgICAgKENvZGVCbG9ja1dpdGhKSVRUeXBlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrV2l0aEpJVFR5cGU6OkNvZGVCbG9ja1dpdGhKSVRUeXBlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrV2l0aEpJVFR5cGU6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmln
aW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JD
YWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjppbmxpbmVEZXB0aCk6CisgICAg
ICAgIChKU0M6OkNvZGVPcmlnaW46OmlubGluZVN0YWNrKToKKyAgICAgICAgKEpTQzo6SW5saW5l
Q2FsbEZyYW1lOjpoYXNoKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlT3JpZ2luLmg6CisgICAg
ICAgIChJbmxpbmVDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OnNw
ZWNpYWxpemF0aW9uS2luZCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZVR5cGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZVR5cGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6RXhlY3V0aW9uQ291bnRlcjo6ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhl
Y3V0aW9uQ291bnRlci5oOgorICAgICAgICAoRXhlY3V0aW9uQ291bnRlcik6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdEaXNhc3NlbWJsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6ZHVtcCk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcENvZGVPcmlnaW4p
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAgIChKU0M6
OkRGRzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlCdWlsZEdldEJ5
SURMaXN0KToKKyAgICAgICAgKEpTQzo6REZHOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAg
ICAoSlNDOjpERkc6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OkRGRzo6
ZGZnTGlua0Nsb3N1cmVDYWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpkdW1wQ2FsbEZyYW1lKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6
cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6
SklUQ29kZTo6aml0VHlwZSk6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIGppdC9KSVREaXNh
c3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpKSVREaXNhc3NlbWJsZXI6OmR1bXApOgorICAg
ICAgICAoSlNDOjpKSVREaXNhc3NlbWJsZXI6OmR1bXBGb3JJbnN0cnVjdGlvbnMpOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkU2VsZkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvTGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5M
aXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJ
ZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRB
cnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJv
dG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRp
b25LaW5kLmg6CisgICAgICAgIChKU0M6OnNwZWNpYWxpemF0aW9uRnJvbUlzQ2FsbCk6CisgICAg
ICAgIChKU0M6OnNwZWNpYWxpemF0aW9uRnJvbUlzQ29uc3RydWN0KToKKyAgICAgICAgKFdURik6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0
YWJsZUJhc2U6Omhhc2hGb3IpOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpoYXNo
Rm9yKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6aGFzaEZvcik6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChFeGVjdXRhYmxlQmFzZSk6CisgICAg
ICAgIChOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKFNjcmlwdEV4ZWN1dGFibGUpOgorICAg
ICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpzb3VyY2UpOgorCiAyMDEyLTExLTI4ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgZHVt
cGluZyBzaG91bGQgbm90IHVzZSB0aGUgc3RhdGljIGNoYXIgYnVmZmVyW3RoaW5neV0gaWRpb20K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzYwOTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCwxMiBAQAogCQkwRjgzMzVCNzE2MzlD
MUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
ODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjhGOTQzQzE2Njc2MzEz
MDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEgLyog
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgKi87IH07CisJCTBGOEY5NDQwMTY2NzYzMzAwMEQ2
MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNEMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNo
LmNwcCAqLzsgfTsKKwkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNF
MTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8q
IENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOEY5NDNGMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgKi87IH07CisJCTBG
OEY5NDQ0MTY2NzYzNTQwMEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDQzMTY2NzYzNTIwMEQ2MTk3MSAvKiBK
SVRDb2RlLmNwcCAqLzsgfTsKKwkJMEY4Rjk0NDYxNjY3NjRGMTAwRDYxOTcxIC8qIENvZGVPcmln
aW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4
Rjk0NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICovOyB9OwogCQkwRjkxOUQw
QzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwOTE1N0VFMDlEMDA0QTRF
N0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTBGOTE5RDBEMTU3RUUwQTIw
MDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1i
b2xUYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNw
cCAqLzsgfTsKQEAgLTE4NSw2ICsxOTEsNyBAQAogCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYg
LyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjkzMzJBNTE0
Q0E3REREMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0
dXJlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMzYxM0ZDNkZERTAwMDJE
OUIyIC8qIFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2RlQmxvY2tXaXRo
SklUVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY5NkVCQjExNjY3NkVGNDAwOEJBREUzIC8qIENvZGVCbG9ja1dpdGhKSVRUeXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5RDMzNzAxNjVE
QkI5MDAwNUFEMzg3IC8qIERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM2RTE2NURCQjhEMDA1QUQzODcgLyogRGlzYXNz
ZW1ibGVyLmNwcCAqLzsgfTsKIAkJMEY5RkM4QzMxNEUxQjVGRTAwRDUyQUUwIC8qIFBvbHltb3Jw
aGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExp
c3QuY3BwICovOyB9OwogCQkwRjlGQzhDNDE0RTFCNjAwMDBENTJBRTAgLyogUG9seW1vcnBoaWNQ
dXRCeUlkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY5RkM4QzAxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTY4LDYg
Kzk3NSwxMiBAQAogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1
QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJh
bmNoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0JyYW5j
aERpcmVjdGlvbi5oOyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEgLyogQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY4Rjk0M0QxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29kZUJsb2NrSGFzaC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tI
YXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVCbG9ja0hhc2guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0M0YxNjY3NjMyRDAwRDYxOTcxIC8q
IENvZGVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVU
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0NDMxNjY3NjM1MjAw
RDYxOTcxIC8qIEpJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSklUQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOEY5NDQ1MTY2
NzY0RUUwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N5bWJvbFRhYmxlT2JqZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEExNTdFRTA5RDAwNEE0RTdE
IC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4Myw2ICs5OTYsNyBA
QAogCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeUlkU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGOTMzMjlCMTRDQTdEQzEwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1
ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVQcm9maWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTZFQkIxMTY2NzZFRjQwMDhCQURF
MyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb2RlQmxvY2tXaXRoSklUVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjlEMzM2RTE2NURCQjhEMDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkaXNh
c3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9seW1vcnBoaWNQdXRCeUlkTGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZDOEMwMTRFMUI1RkIwMEQ1
MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE4MzgsNiArMTg1Miw3IEBACiAJCQkJQTc1NzA2REQxMThBMkJDRjAwNTdGODhG
IC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi8sCiAJCQkJODZDQzg1QTIwRUU3OUI3NDAwMjg4
NjgyIC8qIEpJVENhbGwuY3BwICovLAogCQkJCTE0NkZFNTExMTFBNzEwNDMwMDg3QUU2NiAvKiBK
SVRDYWxsMzJfNjQuY3BwICovLAorCQkJCTBGOEY5NDQzMTY2NzYzNTIwMEQ2MTk3MSAvKiBKSVRD
b2RlLmNwcCAqLywKIAkJCQk4NkNDRUZERDBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oICov
LAogCQkJCTBGMDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5o
ICovLAogCQkJCTBGQUY3RUZBMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuY3Bw
ICovLApAQCAtMjEzNiw2ICsyMTUxLDcgQEAKIAkJCQlCQ0E2MkRGRTBFMjgyNjIzMDAwNEYzMEQg
LyogQ2FsbERhdGEuY3BwICovLAogCQkJCTE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxs
RGF0YS5oICovLAogCQkJCUJDNkFBQUU0MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCAq
LywKKwkJCQkwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5jcHAgKi8sCiAJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCAqLywKIAkJCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRl
bnRpZmllcnMuY3BwICovLAogCQkJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25J
ZGVudGlmaWVycy5oICovLApAQCAtMjU2MCw5ICsyNTc2LDE0IEBACiAJCQkJMEY5MzMyOTMxNENB
N0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NDE0Q0E3
REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjBCODNCODE0QkNGOTVC
MDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLywKKwkJCQkw
RjhGOTQzRDE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAgKi8sCisJCQkJMEY4
Rjk0M0UxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCAqLywKKwkJCQkwRjk2RUJC
MTE2Njc2RUY0MDA4QkFERTMgLyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCAqLywKIAkJCQk5NjlB
MDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLywKIAkJCQk5NjlBMDc5MTBF
RDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCisJCQkJMEY4Rjk0NDUxNjY3NjRFRTAw
RDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICovLAogCQkJCTBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMx
NSAvKiBDb2RlT3JpZ2luLmggKi8sCisJCQkJMEY4Rjk0M0YxNjY3NjMyRDAwRDYxOTcxIC8qIENv
ZGVUeXBlLmNwcCAqLywKIAkJCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUu
aCAqLywKIAkJCQlGRUI2M0FBMjE1OUI5REEzMDA4OTMyQTYgLyogQ29tbWVudC5oICovLAogCQkJ
CTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi8sCkBAIC0zMDU0LDYg
KzMwNzUsOCBAQAogCQkJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzNEN0FGMTY1QTE0MzAwMEFDQUI3MSAvKiBDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkREQkZCNjE2NjZFRURB
MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNjM3LDYgKzM2NjAsMTEgQEAKIAkJCQkwRjczRDdBRTE2
NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjlEMzM3MDE2NURCQjkwMDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRERCRkI1MTY2NkVFRDgwMEM1NUZFRiAvKiBERkdWYXJpYWJsZUFj
Y2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOEY5NDNDMTY2NzYzMTMwMEQ2
MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
OEY5NDQwMTY2NzYzMzAwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEgLyogSklUQ29kZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjhGOTQ0NjE2Njc2NEYxMDBENjE5NzEgLyogQ29kZU9yaWdpbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSAiQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkNvZGVM
b2NhdGlvbi5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRl
ICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
T3Bjb2RlLmgiCkBAIC02NSw2ICs2NiwxMSBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvIDogcHVibGlj
IEJhc2ljUmF3U2VuCiAgICAgICAgIGlmIChpc09uTGlzdCgpKQogICAgICAgICAgICAgcmVtb3Zl
KCk7CiAgICAgfQorICAgIAorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRp
b25LaW5kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzcGVjaWFsaXphdGlvbkZyb21J
c0NvbnN0cnVjdChjYWxsVHlwZSA9PSBDb25zdHJ1Y3QpOworICAgIH0KIAogICAgIENvZGVMb2Nh
dGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICBDb2RlTG9jYXRpb25EYXRhTGFi
ZWxQdHIgaG90UGF0aEJlZ2luOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miwy
NCBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAjZW5kaWYKIAorQ29k
ZUJsb2NrSGFzaCBDb2RlQmxvY2s6Omhhc2goKSBjb25zdAoreworICAgIHJldHVybiBDb2RlQmxv
Y2tIYXNoKG93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3BlY2lhbGl6YXRpb25LaW5kKCkp
OworfQorCit2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlwZShQcmludFN0cmVhbSYg
b3V0LCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KGhh
c2goKSwgIjpbIiwgUmF3UG9pbnRlcih0aGlzKSwgIiwgIiwgaml0VHlwZSwgY29kZVR5cGUoKSk7
CisgICAgaWYgKGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQorICAgICAgICBvdXQucHJpbnQo
c3BlY2lhbGl6YXRpb25LaW5kKCkpOworICAgIG91dC5wcmludCgiXSIpOworfQorCit2b2lkIENv
ZGVCbG9jazo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1bXBBc3N1bWlu
Z0pJVFR5cGUob3V0LCBnZXRKSVRUeXBlKCkpOworfQorCiBzdGF0aWMgU3RyaW5nIGVzY2FwZVF1
b3Rlcyhjb25zdCBTdHJpbmcmIHN0cikKIHsKICAgICBTdHJpbmcgcmVzdWx0ID0gc3RyOwpAQCAt
NDgwLDcgKzQ5OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVyZXMoY29uc3QgSW4K
ICAgICBBU1NFUlQodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
Z2V0X2J5X2lkX2dlbmVyaWMpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX3B1dF9ieV9pZF9nZW5lcmljKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9jYWxsKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZShvcF9jYWxsX2V2YWwpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlKG9wX2NvbnN0cnVjdCkpOwogfQogCi12b2lkIENvZGVCbG9jazo6ZHVt
cCgpCit2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIHsKICAgICAvLyBXZSBvbmx5IHVz
ZSB0aGUgRXhlY1N0YXRlKiBmb3IgdGhpbmdzIHRoYXQgZG9uJ3QgYWN0dWFsbHkgbGVhZCB0byBK
UyBleGVjdXRpb24sCiAgICAgLy8gbGlrZSBjb252ZXJ0aW5nIGEgSlNTdHJpbmcgdG8gYSBTdHJp
bmcuIEhlbmNlIHRoZSBnbG9iYWxFeGVjIGlzIGFwcHJvcHJpYXRlLgpAQCAtNDkxLDEyICs1MDks
MTIgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0
ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkKICAgICAgICAg
KytpbnN0cnVjdGlvbkNvdW50OwogCisgICAgZGF0YUxvZygqdGhpcyk7CiAgICAgZGF0YUxvZ0Yo
Ci0gICAgICAgICIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcCAoJXMpOyAlZCBw
YXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocykiLAorICAg
ICAgICAiOiAlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlczsgJWQgcGFyYW1ldGVyKHMpOyAl
ZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpIiwKICAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSwKICAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3Ry
dWN0aW9uKSksCi0gICAgICAgIHRoaXMsIGNvZGVUeXBlVG9TdHJpbmcoY29kZVR5cGUoKSksIG1f
bnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsCi0gICAgICAgIG1fbnVtVmFycyk7
CisgICAgICAgIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFy
cyk7CiAgICAgaWYgKHN5bWJvbFRhYmxlKCkgJiYgc3ltYm9sVGFibGUoKS0+Y2FwdHVyZUNvdW50
KCkpCiAgICAgICAgIGRhdGFMb2dGKCI7ICVkIGNhcHR1cmVkIHZhcihzKSIsIHN5bWJvbFRhYmxl
KCktPmNhcHR1cmVDb3VudCgpKTsKICAgICBpZiAodXNlc0FyZ3VtZW50cygpKSB7CkBAIC01MTIs
NyArNTMwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoKQogICAgIGNvbnN0IEluc3RydWN0aW9u
KiBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24q
IGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwogICAgIGZvciAoY29uc3QgSW5zdHJ1Y3Rpb24q
IGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZHVtcChleGVjLCBiZWdpbiwg
aXQpOworICAgICAgICBkdW1wQnl0ZWNvZGUoZXhlYywgYmVnaW4sIGl0KTsKIAogICAgIGlmICgh
bV9pZGVudGlmaWVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgZGF0YUxvZ0YoIlxuSWRlbnRpZmll
cnM6XG4iKTsKQEAgLTYwNyw3ICs2MjUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcCgpCiAgICAg
ZGF0YUxvZ0YoIlxuIik7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KQordm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0
aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCkKIHsKICAgICBpbnQgbG9jYXRpb24g
PSBpdCAtIGJlZ2luOwogICAgIHN3aXRjaCAoZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2Rl
SUQoaXQtPnUub3Bjb2RlKSkgewpAQCAtMTQ1OCwxMSArMTQ3NiwxMSBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgfQogfQogCi12b2lkIENvZGVCbG9jazo6
ZHVtcCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9n
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSBp
bnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVPZmZzZXQ7Ci0gICAgZHVtcChleGVjLCBp
bnN0cnVjdGlvbnMoKS5iZWdpbigpLCBpdCk7CisgICAgZHVtcEJ5dGVjb2RlKGV4ZWMsIGluc3Ry
dWN0aW9ucygpLmJlZ2luKCksIGl0KTsKIH0KIAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNU
SUNTCkBAIC0xODkyLDcgKzE5MTAsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVj
dXRhYmxlKiBvCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEY6OlJlZkNvdW50ZWRBcnJheTxJbnN0
cnVjdGlvbj4oaW5zdHJ1Y3Rpb25zKTsKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2VuZXJhdGVk
Qnl0ZWNvZGVzKCkpCi0gICAgICAgIGR1bXAoKTsKKyAgICAgICAgZHVtcEJ5dGVjb2RlKCk7CiAg
ICAgbV9nbG9iYWxEYXRhLT5maW5pc2hlZENvbXBpbGluZyh0aGlzKTsKIH0KIApAQCAtMjE4Niw3
ICsyMjA0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtl
ZCgpICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0
KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlz
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgTExJbnQgY2FsbCBmcm9t
ICIsICp0aGlzLCAiXG4iKTsKICAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tp
XS51bmxpbmsoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghIW1fbGxpbnRDYWxs
TGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2Fs
bExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCkBAIC0yMTk5LDE0ICsyMjE3LDE0
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAvLyBDaGVj
ayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICgh
KHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRh
LT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5n
KQotICAgICAgICAgICAgZGF0YUxvZ0YoIkNvZGUgYmxvY2sgJXAgKGV4ZWN1dGFibGUgJXApIGhh
cyBkZWFkIHdlYWsgcmVmZXJlbmNlcywgamV0dGlzb25pbmcgZHVyaW5nIEdDLlxuIiwgdGhpcywg
b3duZXJFeGVjdXRhYmxlKCkpOworICAgICAgICAgICAgZGF0YUxvZygqdGhpcywgIiBoYXMgZGVh
ZCB3ZWFrIHJlZmVyZW5jZXMsIGpldHRpc29uaW5nIGR1cmluZyBHQy5cbiIpOwogCiAgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBiYXNlbGluZSBKSVQga25vd3MgdGhhdCBpdCBzaG91bGQg
cmUtd2FybS11cCBiZWZvcmUKICAgICAgICAgLy8gb3B0aW1pemluZy4KICAgICAgICAgYWx0ZXJu
YXRpdmUoKS0+b3B0aW1pemVBZnRlcldhcm1VcCgpOwogICAgICAgICAKICAgICAgICAgaWYgKERG
Rzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJERkcg
Q29kZUJsb2NrICVwIHdpbGwgYmUgamV0dGlzb25lZCBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcg
ZGVhZCByZWZlcmVuY2VzOlxuIiwgdGhpcyk7CisgICAgICAgICAgICBkYXRhTG9nKCp0aGlzLCAi
d2lsbCBiZSBqZXR0aXNvbmVkIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBkZWFkIHJlZmVyZW5j
ZXM6XG4iKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RmZ0RhdGEt
PnRyYW5zaXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgV2Vha1JlZmVyZW5j
ZVRyYW5zaXRpb24mIHRyYW5zaXRpb24gPSBtX2RmZ0RhdGEtPnRyYW5zaXRpb25zW2ldOwogICAg
ICAgICAgICAgICAgIEpTQ2VsbCogb3JpZ2luID0gdHJhbnNpdGlvbi5tX2NvZGVPcmlnaW4uZ2V0
KCk7CkBAIC0yMjM0LDcgKzIyNTIsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHV0VG9CYXNlT3BlcmF0aW9ucy5z
aXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmIChtX3B1dFRvQmFzZU9w
ZXJhdGlvbnNbaV0ubV9zdHJ1Y3R1cmUgJiYgIUhlYXA6OmlzTWFya2VkKG1fcHV0VG9CYXNlT3Bl
cmF0aW9uc1tpXS5tX3N0cnVjdHVyZS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3Nl
VW5saW5raW5nKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBwdXRUb0Jhc2Ug
aW5mbyBpbiAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5n
IHB1dFRvQmFzZSBpbmZvIGluICIsICp0aGlzLCAiXG4iKTsKICAgICAgICAgICAgIG1fcHV0VG9C
YXNlT3BlcmF0aW9uc1tpXS5tX3N0cnVjdHVyZS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQpA
QCAtMjI0OCw3ICsyMjY2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KAogICAgICAgICBtX3Jlc29sdmVPcGVyYXRpb25zW2ldLmxhc3QoKS5tX3N0cnVjdHVyZS5j
bGVhcigpOwogICAgICAgICBpZiAobV9yZXNvbHZlT3BlcmF0aW9uc1tpXS5sYXN0KCkubV9zdHJ1
Y3R1cmUgJiYgIUhlYXA6OmlzTWFya2VkKG1fcmVzb2x2ZU9wZXJhdGlvbnNbaV0ubGFzdCgpLm1f
c3RydWN0dXJlLmdldCgpKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0g
ICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIHJlc29sdmUgaW5mbyBpbiAlcC5cbiIs
IHRoaXMpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIHJlc29sdmUgaW5mbyBp
biAiLCAqdGhpcywgIlxuIik7CiAgICAgICAgICAgICBtX3Jlc29sdmVPcGVyYXRpb25zW2ldLmxh
c3QoKS5tX3N0cnVjdHVyZS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjI2MiwxMyAr
MjI4MCwyMyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAg
ICAgICAgICAgICAgaWYgKENsb3N1cmVDYWxsU3R1YlJvdXRpbmUqIHN0dWIgPSBjYWxsTGlua0lu
Zm8oaSkuc3R1Yi5nZXQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIUhlYXA6OmlzTWFy
a2VkKHN0dWItPnN0cnVjdHVyZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgfHwgIUhlYXA6
OmlzTWFya2VkKHN0dWItPmV4ZWN1dGFibGUoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2dGKCJDbGVhcmluZyBjbG9zdXJlIGNhbGwgZnJvbSAlcCB0byAlcCwgc3R1YiByb3V0aW5lICVw
LlxuIiwgdGhpcywgc3R1Yi0+ZXhlY3V0YWJsZSgpLCBzdHViKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFyaW5nIGNs
b3N1cmUgY2FsbCBmcm9tICIsICp0aGlzLCAiIHRvICIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0dWItPmV4ZWN1dGFibGUoKS0+aGFzaEZvcihjYWxsTGlua0luZm8oaSkuc3Bl
Y2lhbGl6YXRpb25LaW5kKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBz
dHViIHJvdXRpbmUgIiwgUmF3UG9pbnRlcihzdHViKSwgIi5cbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvKGkpLnVubGlu
aygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUhlYXA6OmlzTWFya2VkKGNhbGxMaW5rSW5mbyhp
KS5jYWxsZWUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5r
aW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIGNhbGwgZnJv
bSAlcCB0byAlcC5cbiIsIHRoaXMsIGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXJpbmcg
Y2FsbCBmcm9tICIsICp0aGlzLCAiIHRvICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmF3UG9pbnRlcihjYWxsTGlua0luZm8oaSkuY2FsbGVlLmdldCgpKSwgIiAoIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8oaSkuY2FsbGVlLmdldCgpLT5leGVjdXRh
YmxlKCktPmhhc2hGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mbyhpKS5zcGVjaWFsaXphdGlvbktpbmQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIikuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBj
YWxsTGlua0luZm8oaSkudW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIzMDMsNyArMjMzMSw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpyZXNldFN0dWJJbnRlcm5hbChSZXBhdGMKICAgICBBY2Nlc3NUeXBlIGFjY2Vz
c1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKICAg
ICAKICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5n
IHN0cnVjdHVyZSBjYWNoZSAoa2luZCAlZCkgaW4gJXAuXG4iLCBzdHViSW5mby5hY2Nlc3NUeXBl
LCB0aGlzKTsKKyAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgc3RydWN0dXJlIGNhY2hlIChraW5k
ICIsIHN0YXRpY19jYXN0PGludD4oc3R1YkluZm8uYWNjZXNzVHlwZSksICIpIGluICIsICp0aGlz
LCAiLlxuIik7CiAgICAgCiAgICAgaWYgKGlzR2V0QnlJZEFjY2VzcyhhY2Nlc3NUeXBlKSkgewog
ICAgICAgICBpZiAoZ2V0SklUQ29kZSgpLmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpCkBA
IC0yNzY5LDcgKzI3OTcsNyBAQCB2b2lkIENvZGVCbG9jazo6cmVvcHRpbWl6ZSgpCiAgICAgQVNT
RVJUKHJlcGxhY2VtZW50KCktPmFsdGVybmF0aXZlKCkgPT0gdGhpcyk7CiAgICAgcmVwbGFjZW1l
bnQoKS0+dGFsbHlGcmVxdWVudEV4aXRTaXRlcygpOwogICAgIGlmIChERkc6OnNob3VsZFNob3dE
aXNhc3NlbWJseSgpKQotICAgICAgICBkYXRhTG9nRigiREZHIENvZGVCbG9jayAlcCB3aWxsIGJl
IGpldHRpc29uZWQgZHVlIHRvIHJlb3B0aW1pemF0aW9uIG9mICVwLlxuIiwgcmVwbGFjZW1lbnQo
KSwgdGhpcyk7CisgICAgICAgIGRhdGFMb2coKnJlcGxhY2VtZW50KCksICIgd2lsbCBiZSBqZXR0
aXNvbmVkIGR1ZSB0byByZW9wdGltaXphdGlvbiBvZiAiLCAqdGhpcywgIi5cbiIpOwogICAgIHJl
cGxhY2VtZW50KCktPmpldHRpc29uKCk7CiAgICAgY291bnRSZW9wdGltaXphdGlvbigpOwogICAg
IG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKQEAgLTI4MzYsNyArMjg2NCw3IEBAIHZvaWQgUHJvZ3Jh
bUNvZGVCbG9jazo6amV0dGlzb24oKQogICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdK
SVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAg
ICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFMb2dGKCJK
ZXR0aXNvbmluZyBERkcgQ29kZUJsb2NrICVwLlxuIiwgdGhpcyk7CisgICAgICAgIGRhdGFMb2co
IkpldHRpc29uaW5nICIsICp0aGlzLCAiLlxuIik7CiAgICAgc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4
ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xv
YmFsRGF0YSgpKTsKIH0KIApAQCAtMjg0NSw3ICsyODczLDcgQEAgdm9pZCBFdmFsQ29kZUJsb2Nr
OjpqZXR0aXNvbigpCiAgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRU
eXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBpZiAoREZH
OjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkKLSAgICAgICAgZGF0YUxvZ0YoIkpldHRpc29uaW5n
IERGRyBDb2RlQmxvY2sgJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgZGF0YUxvZygiSmV0dGlzb25p
bmcgIiwgKnRoaXMsICIuXG4iKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwog
fQogCkBAIC0yODU0LDcgKzI4ODIsNyBAQCB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNv
bigpCiAgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsK
ICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBpZiAoREZHOjpzaG91bGRT
aG93RGlzYXNzZW1ibHkoKSkKLSAgICAgICAgZGF0YUxvZ0YoIkpldHRpc29uaW5nIERGRyBDb2Rl
QmxvY2sgJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgZGF0YUxvZygiSmV0dGlzb25pbmcgIiwgKnRo
aXMsICIuXG4iKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4
ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0YSgpLCBtX2lz
Q29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogfQogCkBAIC0y
OTQ4LDcgKzI5NzYsNyBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnMoT3Bl
CiBib29sIENvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3coKQogewogI2lmIEVOQUJMRShKSVRf
VkVSQk9TRV9PU1IpCi0gICAgZGF0YUxvZ0YoIkNvbnNpZGVyaW5nIG9wdGltaXppbmcgJXAuLi5c
biIsIHRoaXMpOworICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIG9wdGltaXppbmcgIiwgKnRoaXMs
ICIuLi5cbiIpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQpA
QCAtMjk5Niw3ICszMDI0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnRhbGx5RnJlcXVlbnRFeGl0U2l0
ZXMoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIk9TUiBleGl0ICMldSAoYmMjJXUsIEAldSwg
JXMpIGZvciBjb2RlIGJsb2NrICVwIG9jY3VycmVkIGZyZXF1ZW50bHk7IGNvdW50aW5nIGFzIGZy
ZXF1ZW50IGV4aXQgc2l0ZS5cbiIsIGksIGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgs
IGV4aXQubV9ub2RlSW5kZXgsIERGRzo6ZXhpdEtpbmRUb1N0cmluZyhleGl0Lm1fa2luZCksIHRo
aXMpOworICAgICAgICBkYXRhTG9nKCJPU1IgZXhpdCAjIiwgaSwgIiAoYmMjIiwgZXhpdC5tX2Nv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgIiwgQCIsIGV4aXQubV9ub2RlSW5kZXgsICIsICIsIERG
Rzo6ZXhpdEtpbmRUb1N0cmluZyhleGl0Lm1fa2luZCksICIpIGZvciAiLCAqdGhpcywgIiBvY2N1
cnJlZCBmcmVxdWVudGx5OiBjb3VudGluZyBhcyBmcmVxdWVudCBleGl0IHNpdGUuXG4iKTsKICNl
bmRpZgogICAgIH0KIH0KQEAgLTMwMDUsNyArMzAzMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjp0YWxs
eUZyZXF1ZW50RXhpdFNpdGVzKCkKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQog
dm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIHsKLSAgICBkYXRhTG9nRigiVmFs
dWVQcm9maWxlIGZvciAlcDpcbiIsIHRoaXMpOworICAgIGRhdGFMb2coIlZhbHVlUHJvZmlsZSBm
b3IgIiwgKnRoaXMsICI6XG4iKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxO
dW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9IGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICBpZiAocHJvZmlsZS0+
bV9ieXRlY29kZU9mZnNldCA8IDApIHsKQEAgLTMwMjAsMTIgKzMwNDgsMTIgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKICAgICAgICAgcHJvZmlsZS0+ZHVtcChXVEY6OmRh
dGFGaWxlKCkpOwogICAgICAgICBkYXRhTG9nRigiXG4iKTsKICAgICB9Ci0gICAgZGF0YUxvZ0Yo
IlJhcmVDYXNlUHJvZmlsZSBmb3IgJXA6XG4iLCB0aGlzKTsKKyAgICBkYXRhTG9nKCJSYXJlQ2Fz
ZVByb2ZpbGUgZm9yICIsICp0aGlzLCAiOlxuIik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpOyArK2kpIHsKICAgICAgICAgUmFyZUNhc2VQ
cm9maWxlKiBwcm9maWxlID0gcmFyZUNhc2VQcm9maWxlKGkpOwogICAgICAgICBkYXRhTG9nRigi
ICAgYmMgPSAlZDogJXVcbiIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQsIHByb2ZpbGUtPm1f
Y291bnRlcik7CiAgICAgfQotICAgIGRhdGFMb2dGKCJTcGVjaWFsRmFzdENhc2VQcm9maWxlIGZv
ciAlcDpcbiIsIHRoaXMpOworICAgIGRhdGFMb2coIlNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUgZm9y
ICIsICp0aGlzLCAiOlxuIik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
U3BlY2lhbEZhc3RDYXNlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFJhcmVDYXNlUHJvZmls
ZSogcHJvZmlsZSA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUoaSk7CiAgICAgICAgIGRhdGFMb2dG
KCIgICBiYyA9ICVkOiAldVxuIiwgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCwgcHJvZmlsZS0+
bV9jb3VudGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNs
dWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgorI2luY2x1ZGUgIkNvZGVC
bG9ja0hhc2guaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUu
aCIKICNpbmNsdWRlICJDb21tZW50LmgiCkBAIC0xMjgsNiArMTI5LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+Q29k
ZUJsb2NrKCk7CiAgICAgICAgIAorICAgICAgICBDb2RlQmxvY2tIYXNoIGhhc2goKSBjb25zdDsK
KyAgICAgICAgdm9pZCBkdW1wQXNzdW1pbmdKSVRUeXBlKFByaW50U3RyZWFtJiwgSklUQ29kZTo6
SklUVHlwZSkgY29uc3Q7CisgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owor
ICAgICAgICAKICAgICAgICAgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251
bVBhcmFtZXRlcnM7IH0KICAgICAgICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJzKGludCBuZXdWYWx1
ZSk7CiAgICAgICAgIApAQCAtMTM4LDExICsxNDMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUGFzc093blB0cjxDb2RlQmxvY2s+IHJlbGVhc2VBbHRlcm5hdGl2ZSgpIHsgcmV0dXJuIG1f
YWx0ZXJuYXRpdmUucmVsZWFzZSgpOyB9CiAgICAgICAgIHZvaWQgc2V0QWx0ZXJuYXRpdmUoUGFz
c093blB0cjxDb2RlQmxvY2s+IGFsdGVybmF0aXZlKSB7IG1fYWx0ZXJuYXRpdmUgPSBhbHRlcm5h
dGl2ZTsgfQogICAgICAgICAKLSAgICAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFs
aXphdGlvbktpbmQoKQorICAgICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0
aW9uS2luZCgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2lzQ29uc3RydWN0
b3IpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvZGVGb3JDb25zdHJ1Y3Q7Ci0gICAgICAgICAg
ICByZXR1cm4gQ29kZUZvckNhbGw7CisgICAgICAgICAgICByZXR1cm4gc3BlY2lhbGl6YXRpb25G
cm9tSXNDb25zdHJ1Y3QobV9pc0NvbnN0cnVjdG9yKTsKICAgICAgICAgfQogICAgICAgICAKICNp
ZiBFTkFCTEUoSklUKQpAQCAtMTYzLDggKzE2Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAgdm9pZCBkdW1wKCk7
Ci0gICAgICAgIHZvaWQgZHVtcCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisgICAgICAgIHZv
aWQgZHVtcEJ5dGVjb2RlKCk7CisgICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKTsKIApAQCAtNDcyLDcgKzQ3NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIEpJVENvZGUmIGdldEpJVENvZGUoKSB7
IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGdldEpJ
VENvZGVXaXRoQXJpdHlDaGVjaygpIHsgcmV0dXJuIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOyB9
Ci0gICAgICAgIEpJVENvZGU6OkpJVFR5cGUgZ2V0SklUVHlwZSgpIHsgcmV0dXJuIG1faml0Q29k
ZS5qaXRUeXBlKCk7IH0KKyAgICAgICAgSklUQ29kZTo6SklUVHlwZSBnZXRKSVRUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9qaXRDb2RlLmppdFR5cGUoKTsgfQogICAgICAgICBFeGVjdXRhYmxlTWVt
b3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklUQ29kZSgpLmdldEV4
ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0
aW1pemVkKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpID0gMDsKQEAgLTEyMTIsNyArMTIxNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNb
aV0uc2V0KCptX2dsb2JhbERhdGEsIG93bmVyRXhlY3V0YWJsZSgpLCBjb25zdGFudHNbaV0uZ2V0
KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IElu
c3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7CisgICAgICAgIHZvaWQgZHVt
cEJ5dGVjb2RlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5z
dHJ1Y3Rpb24qJik7CiAKICAgICAgICAgQ1N0cmluZyByZWdpc3Rlck5hbWUoRXhlY1N0YXRlKiwg
aW50IHIpIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50VW5hcnlPcChFeGVjU3RhdGUqLCBpbnQg
bG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFz
aC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNvZGVCbG9ja0hhc2guaCIKKworI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlIDx3
dGYvU0hBMS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBUQUJMRSAoIkFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IikK
KworQ29kZUJsb2NrSGFzaDo6Q29kZUJsb2NrSGFzaChjb25zdCBjaGFyKiBzdHJpbmcpCisgICAg
OiBtX2hhc2goMCkKK3sKKyAgICBpZiAoc3RybGVuKHN0cmluZykgIT0gNikKKyAgICAgICAgQ1JB
U0goKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgNjsgKytpKSB7CisgICAg
ICAgIG1faGFzaCAqPSA2MjsKKyAgICAgICAgdW5zaWduZWQgYyA9IHN0cmluZ1tpXTsKKyAgICAg
ICAgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB7CisgICAgICAgICAgICBtX2hhc2ggKz0gYyAt
ICdBJzsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChjID49
ICdhJyAmJiBjIDw9ICd6JykgeworICAgICAgICAgICAgbV9oYXNoICs9IGMgLSAnYScgKyAyNjsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChjID49ICcw
JyAmJiBjIDw9ICc5Jyk7CisgICAgICAgIG1faGFzaCArPSBjIC0gJzAnICsgMjYgKiAyOworICAg
IH0KK30KKworQ29kZUJsb2NrSGFzaDo6Q29kZUJsb2NrSGFzaChjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgOiBtX2hhc2goMCkK
K3sKKyAgICBTSEExIHNoYTE7CisgICAgc2hhMS5hZGRCeXRlcyhzb3VyY2VDb2RlLnRvU3RyaW5n
KCkudXRmOCgpKTsKKyAgICBWZWN0b3I8dWludDhfdCwgMjA+IGRpZ2VzdDsKKyAgICBzaGExLmNv
bXB1dGVIYXNoKGRpZ2VzdCk7CisgICAgbV9oYXNoICs9IGRpZ2VzdFswXSB8IChkaWdlc3RbMV0g
PDwgOCkgfCAoZGlnZXN0WzJdIDw8IDE2KSB8IChkaWdlc3RbM10gPDwgMjQpOworICAgIG1faGFz
aCBePSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCk7Cit9CisKK3ZvaWQgQ29kZUJsb2NrSGFz
aDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIEFTU0VSVChzdHJsZW4oVEFC
TEUpID09IDYyKTsKKyAgICAKKyAgICBjaGFyIGJ1ZmZlcls3XTsKKyAgICB1bnNpZ25lZCBhY2N1
bXVsYXRvciA9IG1faGFzaDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSA2OyBpLS07KSB7CisgICAg
ICAgIGJ1ZmZlcltpXSA9IFRBQkxFW2FjY3VtdWxhdG9yICUgNjJdOworICAgICAgICBhY2N1bXVs
YXRvciAvPSA2MjsKKyAgICB9CisgICAgYnVmZmVyWzZdID0gMDsKKyAgICAKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgQ29kZUJsb2NrSGFzaCByZWNvbXB1dGUoYnVmZmVyKTsKKyAgICBBU1NF
UlQocmVjb21wdXRlID09ICp0aGlzKTsKKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisgICAg
CisgICAgb3V0LnByaW50KGJ1ZmZlcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFz
aC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZUJsb2NrSGFzaF9oCisjZGVmaW5l
IENvZGVCbG9ja0hhc2hfaAorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgor
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCisvLyBDb2RlQmxvY2sgaGFzaGVzIGFyZSB1
c2VmdWwgZm9yIGluZm9ybWFsbHkgaWRlbnRpZnlpbmcgY29kZSBibG9ja3MuIFRoZXkgY29ycmVz
cG9uZAorLy8gdG8gdGhlIGxvdyAzMiBiaXRzIG9mIGEgU0hBMSBoYXNoIG9mIHRoZSBzb3VyY2Ug
Y29kZSB3aXRoIHRoZSB0d28gbG93IGJpdHMgZmxpcHBlZAorLy8gYWNjb3JkaW5nIHRvIHRoZSBy
b2xlIHRoYXQgdGhlIGNvZGUgYmxvY2sgc2VydmVzIChjYWxsLCBjb25zdHJ1Y3QpLiBBZGRpdGlv
bmFsbHksIHRoZQorLy8gaGFzaGVzIGFyZSB0eXBpY2FsbHkgb3BlcmF0ZWQgb3ZlciB1c2luZyBh
IHN0cmluZyBpbiB3aGljaCB0aGUgaGFzaCBpcyB0cmFuc2Zvcm1lZAorLy8gaW50byBhIDYtYnl0
ZSBhbHBoYW51bWVyaWMgcmVwcmVzZW50YXRpb24uIFRoaXMgY2FuIGJlIHJldHJpZXZlZCBieSB1
c2luZworLy8gdG9TdHJpbmcoY29uc3QgQ29kZUJsb2NrSGFzaCYpLiBGaW5hbGx5LCB3ZSBzdXBw
b3J0IENvZGVCbG9ja0hhc2hlcyBmb3IgbmF0aXZlCisvLyBmdW5jdGlvbnMsIGluIHdoaWNoIGNh
c2UgdGhlIGhhc2ggaXMgcmVwbGFjZWQgYnkgdGhlIGZ1bmN0aW9uIGFkZHJlc3MuCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlOworCitjbGFzcyBDb2RlQmxvY2tIYXNoIHsK
K3B1YmxpYzoKKyAgICBDb2RlQmxvY2tIYXNoKCkKKyAgICAgICAgOiBtX2hhc2goMCkKKyAgICB7
CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IENvZGVCbG9ja0hhc2godW5zaWduZWQgaGFzaCkK
KyAgICAgICAgOiBtX2hhc2goaGFzaCkKKyAgICB7CisgICAgfQorICAgIAorICAgIENvZGVCbG9j
a0hhc2goY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgIAor
ICAgIGV4cGxpY2l0IENvZGVCbG9ja0hhc2goY29uc3QgY2hhciopOworICAgIAorICAgIHVuc2ln
bmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KKyAgICAKKyAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKKyAgICAvLyBDb21wYXJpc29uIG1ldGhvZHMgdXNl
ZnVsIGZvciBiaXNlY3Rpb24uCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvZGVCbG9ja0hh
c2gmIG90aGVyKSBjb25zdCB7IHJldHVybiBoYXNoKCkgPT0gb3RoZXIuaGFzaCgpOyB9CisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVCbG9ja0hhc2gmIG90aGVyKSBjb25zdCB7IHJldHVy
biBoYXNoKCkgIT0gb3RoZXIuaGFzaCgpOyB9CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ29k
ZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2goKSA8IG90aGVyLmhhc2goKTsg
fQorICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IENvZGVCbG9ja0hhc2gmIG90aGVyKSBjb25zdCB7
IHJldHVybiBoYXNoKCkgPiBvdGhlci5oYXNoKCk7IH0KKyAgICBib29sIG9wZXJhdG9yPD0oY29u
c3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2goKSA8PSBvdGhlci5o
YXNoKCk7IH0KKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIGhhc2goKSA+PSBvdGhlci5oYXNoKCk7IH0KKyAgICAKK3ByaXZhdGU6
CisgICAgdW5zaWduZWQgbV9oYXNoOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBDb2RlQmxvY2tIYXNoX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja1dpdGhKSVRUeXBlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlQmxvY2tXaXRoSklUVHlwZV9oCisjZGVmaW5lIENv
ZGVCbG9ja1dpdGhKSVRUeXBlX2gKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworLy8gV2Ugc29tZXRpbWVzIHdoYXQgdG8gcHJpbnQgdGhlIENvZGVCbG9jaydz
IElEIGJlZm9yZSBzZXR0aW5nIGl0cyBKSVRDb2RlLiBBdCB0aGF0CisvLyBwb2ludCB0aGUgQ29k
ZUJsb2NrIHdpbGwgY2xhaW0gYSBib2d1cyBKSVRUeXBlLiBUaGlzIGhlbHBlciBjbGFzcyBsZXRz
IHVzIGRvIHRoYXQuCisKK2NsYXNzIENvZGVCbG9ja1dpdGhKSVRUeXBlIHsKK3B1YmxpYzoKKyAg
ICBDb2RlQmxvY2tXaXRoSklUVHlwZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQorICAgICAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAgICAg
LCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBB
c3N1bWluZ0pJVFR5cGUob3V0LCBtX2ppdFR5cGUpOworICAgIH0KK3ByaXZhdGU6CisgICAgQ29k
ZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBKSVRDb2RlOjpKSVRUeXBlIG1faml0VHlwZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29kZUJsb2NrV2l0aEpJVFR5cGVf
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4u
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVP
cmlnaW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJDb2RlT3JpZ2luLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCit1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aEZvckNhbGxGcmFtZShJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQg
PSAxOworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBjdXJyZW50ID0gaW5saW5lQ2FsbEZyYW1l
OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkKKyAg
ICAgICAgcmVzdWx0Kys7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordW5zaWduZWQgQ29kZU9y
aWdpbjo6aW5saW5lRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBpbmxpbmVEZXB0aEZvckNh
bGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOworfQorICAgIAorVmVjdG9yPENvZGVPcmlnaW4+IENv
ZGVPcmlnaW46OmlubGluZVN0YWNrKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8Q29kZU9yaWdpbj4g
cmVzdWx0KGlubGluZURlcHRoKCkpOworICAgIHJlc3VsdC5sYXN0KCkgPSAqdGhpczsKKyAgICB1
bnNpZ25lZCBpbmRleCA9IHJlc3VsdC5zaXplKCkgLSAyOworICAgIGZvciAoSW5saW5lQ2FsbEZy
YW1lKiBjdXJyZW50ID0gaW5saW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVu
dC0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgcmVzdWx0W2luZGV4LS1dID0gY3Vy
cmVudC0+Y2FsbGVyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NvZGVCbG9ja0hhc2ggSW5s
aW5lQ2FsbEZyYW1lOjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXhlY3V0YWJsZS0+aGFz
aEZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHJldmlz
aW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2lu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgQ29kZU9yaWdpbl9oCiAj
ZGVmaW5lIENvZGVPcmlnaW5faAogCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
IgorI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKICNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5Lmgi
CiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgpA
QCAtOTgsNiArMTAwLDEwIEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgIEJpdFZlY3Rv
ciBjYXB0dXJlZFZhcnM7IC8vIEluZGV4ZWQgYnkgdGhlIG1hY2hpbmUgY2FsbCBmcmFtZSdzIHZh
cmlhYmxlIG51bWJlcmluZy4KICAgICB1bnNpZ25lZCBzdGFja09mZnNldCA6IDMxOwogICAgIGJv
b2wgaXNDYWxsIDogMTsKKyAgICAKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxp
emF0aW9uS2luZCgpIGNvbnN0IHsgcmV0dXJuIHNwZWNpYWxpemF0aW9uRnJvbUlzQ2FsbChpc0Nh
bGwpOyB9CisgICAgCisgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3Q7CiB9OwogCiBzdHJ1
Y3QgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCB7CkBAIC0xMDUsMzYgKzExMSwxMiBAQCBz
dHJ1Y3QgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCB7CiAgICAgdW5zaWduZWQgY2FsbFJl
dHVybk9mZnNldDsKIH07CiAKLWlubGluZSB1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0
aEZvckNhbGxGcmFtZShJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKLXsKLSAgICB1
bnNpZ25lZCByZXN1bHQgPSAxOwotICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBjdXJyZW50ID0g
aW5saW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+Y2FsbGVyLmlubGlu
ZUNhbGxGcmFtZSkKLSAgICAgICAgcmVzdWx0Kys7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
aW5saW5lIHVuc2lnbmVkIENvZGVPcmlnaW46OmlubGluZURlcHRoKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKLX0KLSAgICAK
IGlubGluZSBib29sIENvZGVPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QgQ29kZU9yaWdpbiYgb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJ5dGVjb2RlSW5kZXggPT0gb3RoZXIuYnl0ZWNvZGVJ
bmRleAogICAgICAgICAmJiBpbmxpbmVDYWxsRnJhbWUgPT0gb3RoZXIuaW5saW5lQ2FsbEZyYW1l
OwogfQogICAgIAotLy8gR2V0IHRoZSBpbmxpbmUgc3RhY2suIFRoaXMgaXMgc2xvdywgYW5kIGlz
IGludGVuZGVkIGZvciBkZWJ1Z2dpbmcgb25seS4KLWlubGluZSBWZWN0b3I8Q29kZU9yaWdpbj4g
Q29kZU9yaWdpbjo6aW5saW5lU3RhY2soKSBjb25zdAotewotICAgIFZlY3RvcjxDb2RlT3JpZ2lu
PiByZXN1bHQoaW5saW5lRGVwdGgoKSk7Ci0gICAgcmVzdWx0Lmxhc3QoKSA9ICp0aGlzOwotICAg
IHVuc2lnbmVkIGluZGV4ID0gcmVzdWx0LnNpemUoKSAtIDI7Ci0gICAgZm9yIChJbmxpbmVDYWxs
RnJhbWUqIGN1cnJlbnQgPSBpbmxpbmVDYWxsRnJhbWU7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICByZXN1bHRbaW5kZXgtLV0gPSBj
dXJyZW50LT5jYWxsZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogaW5saW5lIHVuc2lnbmVk
IGdldENhbGxSZXR1cm5PZmZzZXRGb3JDb2RlT3JpZ2luKENvZGVPcmlnaW5BdENhbGxSZXR1cm5P
ZmZzZXQqIGRhdGEpCiB7CiAgICAgcmV0dXJuIGRhdGEtPmNhbGxSZXR1cm5PZmZzZXQ7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2RlVHlwZS5o
IgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpDb2RlVHlwZSBjb2RlVHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7CisgICAgY2FzZSBKU0M6Okdsb2JhbENvZGU6
CisgICAgICAgIG91dC5wcmludCgiR2xvYmFsIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEpTQzo6RXZhbENvZGU6CisgICAgICAgIG91dC5wcmludCgiRXZhbCIpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBKU0M6OkZ1bmN0aW9uQ29kZToKKyAgICAgICAgb3V0LnByaW50KCJGdW5j
dGlvbiIpOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgQ1JBU0goKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCShyZXZpc2lvbiAxMzYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMjIgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIENvZGVU
eXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSB9OwogCi1pbmxpbmUgY29u
c3QgY2hhciogY29kZVR5cGVUb1N0cmluZyhDb2RlVHlwZSBjb2RlVHlwZSkKLXsKLSAgICBzd2l0
Y2ggKGNvZGVUeXBlKSB7Ci0gICAgY2FzZSBHbG9iYWxDb2RlOgotICAgICAgICByZXR1cm4gIkds
b2JhbENvZGUiOwotICAgIGNhc2UgRXZhbENvZGU6Ci0gICAgICAgIHJldHVybiAiRXZhbENvZGUi
OwotICAgIGNhc2UgRnVuY3Rpb25Db2RlOgotICAgICAgICByZXR1cm4gIkZ1bmN0aW9uQ29kZSI7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKK25hbWVzcGFjZSBXVEYg
eworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IEpTQzo6Q29kZVR5cGUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIENvZGVU
eXBlX2gKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNv
dW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRpb25Db3VudGVyLmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjAsMTEgKzE2MCw5IEBAIHZvaWQgRXhlY3V0aW9uQ291bnRlcjo6cmVzZXQoKQogICAgIG1fYWN0
aXZlVGhyZXNob2xkID0gMDsKIH0KIAotY29uc3QgY2hhciogRXhlY3V0aW9uQ291bnRlcjo6c3Rh
dHVzKCkgY29uc3QKK3ZvaWQgRXhlY3V0aW9uQ291bnRlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewotICAgIHN0YXRpYyBjaGFyIHJlc3VsdFs4MF07Ci0gICAgc25wcmludGYocmVz
dWx0LCBzaXplb2YocmVzdWx0KSwgIiVsZi8lbGYsICVkIiwgY291bnQoKSwgc3RhdGljX2Nhc3Q8
ZG91YmxlPihtX2FjdGl2ZVRocmVzaG9sZCksIG1fY291bnRlcik7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICBvdXQucHJpbnRmKCIlbGYvJWxmLCAlZCIsIGNvdW50KCksIHN0YXRpY19jYXN0PGRv
dWJsZT4obV9hY3RpdmVUaHJlc2hvbGQpLCBtX2NvdW50ZXIpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3Vu
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1
dGlvbkNvdW50ZXIuaAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJPcHRpb25zLmgi
CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1NpbXBsZVN0YXRz
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXROZXdUaHJlc2hvbGQoaW50MzJfdCB0aHJlc2hvbGQsIENvZGVCbG9jayopOwogICAgIHZv
aWQgZGVmZXJJbmRlZmluaXRlbHkoKTsKICAgICBkb3VibGUgY291bnQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdG90YWxDb3VudCkgKyBtX2NvdW50ZXI7IH0KLSAgICBj
b25zdCBjaGFyKiBzdGF0dXMoKSBjb25zdDsKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdDsKICAgICBzdGF0aWMgZG91YmxlIGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzKGludDMy
X3QgdmFsdWUsIENvZGVCbG9jayopOwogICAgIHN0YXRpYyBpbnQzMl90IGFwcGx5TWVtb3J5VXNh
Z2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50KGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTM2MDk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2NDUsMjEgKzM2NDUsMjMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxv
Y2soKQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2Rl
QmxvY2s7CiAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGRhdGFMb2dG
KCJQYXJzaW5nIGNvZGUgYmxvY2sgJXAuIGNvZGVUeXBlID0gJXMsIGNhcHR1cmVDb3VudCA9ICV1
LCBuZWVkc0Z1bGxTY29wZUNoYWluID0gJXMsIG5lZWRzQWN0aXZhdGlvbiA9ICVzLCBpc1N0cmlj
dE1vZGUgPSAlc1xuIiwKLSAgICAgICAgICAgIGNvZGVCbG9jaywKLSAgICAgICAgICAgIGNvZGVU
eXBlVG9TdHJpbmcoY29kZUJsb2NrLT5jb2RlVHlwZSgpKSwKLSAgICAgICAgICAgIGNvZGVCbG9j
ay0+c3ltYm9sVGFibGUoKSA/IGNvZGVCbG9jay0+c3ltYm9sVGFibGUoKS0+Y2FwdHVyZUNvdW50
KCkgOiAwLAotICAgICAgICAgICAgY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCk/InRy
dWUiOiJmYWxzZSIsCi0gICAgICAgICAgICBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5u
ZWVkc0FjdGl2YXRpb24oKT8idHJ1ZSI6ImZhbHNlIiwKLSAgICAgICAgICAgIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpPyJ0cnVlIjoiZmFsc2UiKTsKLSAgICBj
b2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5kdW1wKCk7CisgICAgZGF0YUxvZygKKyAgICAg
ICAgIlBhcnNpbmcgIiwgKmNvZGVCbG9jaywKKyAgICAgICAgIjogY2FwdHVyZUNvdW50ID0gIiwg
Y29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpID8gY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpLT5jYXB0
dXJlQ291bnQoKSA6IDAsCisgICAgICAgICIsIG5lZWRzRnVsbFNjb3BlQ2hhaW4gPSAiLCBjb2Rl
QmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSwKKyAgICAgICAgIiwgbmVlZHNBY3RpdmF0aW9u
ID0gIiwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmVlZHNBY3RpdmF0aW9uKCksCisg
ICAgICAgICIsIGlzU3RyaWN0TW9kZSA9ICIsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
PmlzU3RyaWN0TW9kZSgpLCAiXG4iKTsKKyAgICBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigp
LT5kdW1wQnl0ZWNvZGUoKTsKICNlbmRpZgogICAgIAogICAgIGZvciAodW5zaWduZWQganVtcFRh
cmdldEluZGV4ID0gMDsganVtcFRhcmdldEluZGV4IDw9IGNvZGVCbG9jay0+bnVtYmVyT2ZKdW1w
VGFyZ2V0cygpOyArK2p1bXBUYXJnZXRJbmRleCkgewogICAgICAgICAvLyBUaGUgbWF4aW11bSBi
eXRlY29kZSBvZmZzZXQgdG8gZ28gaW50byB0aGUgY3VycmVudCBiYXNpY2Jsb2NrIGlzIGVpdGhl
ciB0aGUgbmV4dCBqdW1wIHRhcmdldCwgb3IgdGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb25zLgog
ICAgICAgICB1bnNpZ25lZCBsaW1pdCA9IGp1bXBUYXJnZXRJbmRleCA8IGNvZGVCbG9jay0+bnVt
YmVyT2ZKdW1wVGFyZ2V0cygpID8gY29kZUJsb2NrLT5qdW1wVGFyZ2V0KGp1bXBUYXJnZXRJbmRl
eCkgOiBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJQYXJzaW5nIGJ5dGVjb2RlIHdpdGggbGlt
aXQgJXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwgbV9pbmxpbmVTdGFja1RvcC0+ZXhl
Y3V0YWJsZSgpLCBsaW1pdCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxsRnJhbWUobV9p
bmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKKyAgICAgICAgZGF0YUxvZygKKyAg
ICAgICAgICAgICJQYXJzaW5nIGJ5dGVjb2RlIHdpdGggbGltaXQgIiwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9pbmxpbmVDYWxsRnJhbWUtPmhhc2goKSwKKyAgICAgICAgICAgICIgYmMjIiwgbGltaXQs
ICIgYXQgaW5saW5lIGRlcHRoICIsCisgICAgICAgICAgICBDb2RlT3JpZ2luOjppbmxpbmVEZXB0
aEZvckNhbGxGcmFtZShtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSksICIuXG4i
KTsKICNlbmRpZgogICAgICAgICBBU1NFUlQobV9jdXJyZW50SW5kZXggPCBsaW1pdCk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJl
dmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1i
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAKKyNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTQzLDcgKzQ0
LDcgQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoUHJpbnRTdHJlYW0mIG91dAogewogICAgIG1f
Z3JhcGgubV9kb21pbmF0b3JzLmNvbXB1dGVJZk5lY2Vzc2FyeShtX2dyYXBoKTsKICAgICAKLSAg
ICBvdXQucHJpbnQoIkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgREZHIENvZGVCbG9jayAiLCBSYXdQ
b2ludGVyKG1fZ3JhcGgubV9jb2RlQmxvY2spLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIG1f
Z3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIjpcbiIpOworICAgIG91dC5w
cmludCgiR2VuZXJhdGVkIEpJVCBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShtX2dy
YXBoLm1fY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9
ICIsIG1fZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIjpcbiIpOwogICAg
IG91dC5wcmludCgiICAgIENvZGUgYXQgWyIsIFJhd1BvaW50ZXIobGlua0J1ZmZlci5kZWJ1Z0Fk
ZHJlc3MoKSksICIsICIsIFJhd1BvaW50ZXIoc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIu
ZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSksICIpOlxuIik7CiAgICAg
CiAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDEzNjA5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxNCArODgsMTQg
QEAgdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0mIAogICAgIGZvciAodW5z
aWduZWQgaSA9IHByZXZpb3VzSW5saW5lU3RhY2suc2l6ZSgpOyBpLS0gPiBpbmRleE9mRGl2ZXJn
ZW5jZTspIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCk7CiAgICAgICAgIHByaW50V2hpdGVT
cGFjZShvdXQsIGkgKiAyKTsKLSAgICAgICAgb3V0LnByaW50KCI8LS0gIiwgUmF3UG9pbnRlcihw
cmV2aW91c0lubGluZVN0YWNrW2ldLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSks
ICJcbiIpOworICAgICAgICBvdXQucHJpbnQoIjwtLSAiLCBwcmV2aW91c0lubGluZVN0YWNrW2ld
LmlubGluZUNhbGxGcmFtZS0+aGFzaCgpLCAiXG4iKTsKICAgICB9CiAgICAgCiAgICAgLy8gUHJp
bnQgdGhlIHB1c2hlcy4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRleE9mRGl2ZXJnZW5jZTsg
aSA8IGN1cnJlbnRJbmxpbmVTdGFjay5zaXplKCk7ICsraSkgewogICAgICAgICBvdXQucHJpbnQo
cHJlZml4KTsKICAgICAgICAgcHJpbnRXaGl0ZVNwYWNlKG91dCwgaSAqIDIpOwotICAgICAgICBv
dXQucHJpbnQoIi0tPiAiLCBSYXdQb2ludGVyKGN1cnJlbnRJbmxpbmVTdGFja1tpXS5pbmxpbmVD
YWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KCIt
LT4gIiwgY3VycmVudElubGluZVN0YWNrW2ldLmlubGluZUNhbGxGcmFtZS0+aGFzaCgpLCAiXG4i
KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIu
aCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtODEsNyAr
ODIsMTAgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
Y292ZXJ5ID0gJmNvZGVCbG9jay0+c3BlY3VsYXRpb25SZWNvdmVyeShleGl0Lm1fcmVjb3ZlcnlJ
bmRleCAtIDEpOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGRhdGFMb2dG
KCJHZW5lcmF0aW5nIE9TUiBleGl0ICMldSAoc2VxIyV1LCBiYyMldSwgQCV1LCAlcykgZm9yIGNv
ZGUgYmxvY2sgJXAuXG4iLCBleGl0SW5kZXgsIGV4aXQubV9zdHJlYW1JbmRleCwgZXhpdC5tX2Nv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgZXhpdC5tX25vZGVJbmRleCwgZXhpdEtpbmRUb1N0cmlu
ZyhleGl0Lm1fa2luZCksIGNvZGVCbG9jayk7CisgICAgZGF0YUxvZygKKyAgICAgICAgIkdlbmVy
YXRpbmcgT1NSIGV4aXQgIyIsIGV4aXRJbmRleCwgIiAoc2VxIyIsIGV4aXQubV9zdHJlYW1JbmRl
eCwKKyAgICAgICAgIiwgYmMjIiwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgIiwg
QCIsIGV4aXQubV9ub2RlSW5kZXgsICIsICIsCisgICAgICAgIGV4aXRLaW5kVG9TdHJpbmcoZXhp
dC5tX2tpbmQpLCAiKSBmb3IgIiwgKmNvZGVCbG9jaywgIi5cbiIpOwogI2VuZGlmCiAKICAgICB7
CkBAIC05NSw5ICs5OSw5IEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICBleGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYoCiAgICAgICAgICAgICBzaG91
bGRTaG93RGlzYXNzZW1ibHkoKSwKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAg
ICAgKCJERkcgT1NSIGV4aXQgIyV1IChiYyMldSwgQCV1LCAlcykgZnJvbSBDb2RlQmxvY2sgJXAi
LAorICAgICAgICAgICAgKCJERkcgT1NSIGV4aXQgIyV1IChiYyMldSwgQCV1LCAlcykgZnJvbSAl
cyIsCiAgICAgICAgICAgICAgZXhpdEluZGV4LCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4LCBleGl0Lm1fbm9kZUluZGV4LAotICAgICAgICAgICAgIGV4aXRLaW5kVG9TdHJpbmcoZXhp
dC5tX2tpbmQpLCBjb2RlQmxvY2spKTsKKyAgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4
aXQubV9raW5kKSwgdG9DU3RyaW5nKCpjb2RlQmxvY2spLmRhdGEoKSkpOwogICAgIH0KICAgICAK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MjIsMjIgKzE1MjIsMjQgQEAgdm9pZCBE
RkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcAogICAgIFNwZWN1bGF0aW9uRmFpbHVy
ZURlYnVnSW5mbyogZGVidWdJbmZvID0gc3RhdGljX2Nhc3Q8U3BlY3VsYXRpb25GYWlsdXJlRGVi
dWdJbmZvKj4oZGVidWdJbmZvUmF3KTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGRlYnVn
SW5mby0+Y29kZUJsb2NrOwogICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBjb2RlQmxvY2st
PmFsdGVybmF0aXZlKCk7Ci0gICAgZGF0YUxvZ0YoIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gJXAg
YXQgQCV1IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlcywgIgotICAgICAgICAgICAgInJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1LCAi
Ci0gICAgICAgICAgICAib3NyRXhpdENvdW50ZXIgPSAldVxuIiwKLSAgICAgICAgICAgIGNvZGVC
bG9jaywKLSAgICAgICAgICAgIGRlYnVnSW5mby0+bm9kZUluZGV4LAotICAgICAgICAgICAgYWx0
ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKS5zdGF0dXMoKSA6IDAs
Ci0gICAgICAgICAgICBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5yZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcigpIDogMCwKLSAgICAgICAgICAgIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUt
Pm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpIDogMCwKLSAgICAgICAgICAgIGNvZGVCbG9jay0+
b3NyRXhpdENvdW50ZXIoKSk7CisgICAgZGF0YUxvZygKKyAgICAgICAgIlNwZWN1bGF0aW9uIGZh
aWx1cmUgaW4gIiwgKmNvZGVCbG9jaywgIiBhdCBAIiwgZGVidWdJbmZvLT5ub2RlSW5kZXgsCisg
ICAgICAgICIgd2l0aCAiKTsKKyAgICBpZiAoYWx0ZXJuYXRpdmUpIHsKKyAgICAgICAgZGF0YUxv
ZygKKyAgICAgICAgICAgICJleGVjdXRlQ291bnRlciA9ICIsIGFsdGVybmF0aXZlLT5qaXRFeGVj
dXRlQ291bnRlcigpLAorICAgICAgICAgICAgIiwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIg
PSAiLCBhbHRlcm5hdGl2ZS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwKKyAgICAgICAg
ICAgICIsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICIsIGFsdGVybmF0aXZlLT5vcHRpbWl6
YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGRhdGFMb2coIm5vIGFs
dGVybmF0aXZlIGNvZGUgYmxvY2sgKGkuZS4gd2UndmUgYmVlbiBqZXR0aXNvbmVkKSIpOworICAg
IGRhdGFMb2coIiwgb3NyRXhpdENvdW50ZXIgPSAiLCBjb2RlQmxvY2stPm9zckV4aXRDb3VudGVy
KCksICJcbiIpOwogfQogI2VuZGlmCiAKIGV4dGVybiAiQyIgdm9pZCBERkdfT1BFUkFUSU9OIHRy
aWdnZXJSZW9wdGltaXphdGlvbk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICNpZiBFTkFC
TEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIGRhdGFMb2dGKCIlcDogRW50ZXJlZCByZW9wdGltaXpl
XG4iLCBjb2RlQmxvY2spOworICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIjogRW50ZXJlZCByZW9w
dGltaXplXG4iKTsKICNlbmRpZgogICAgIC8vIFdlIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIGJh
c2VsaW5lIGNvZGUgYmxvY2suCiAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGNv
ZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgog
I2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0yMzUsOCArMjM2
LDggQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgIAogICAg
IHN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfREZHX1NUVUIoCiAgICAgICAgIHBhdGNo
QnVmZmVyLAotICAgICAgICAoIkRGRyBwcm90b3R5cGUgY2hhaW4gYWNjZXNzIHN0dWIgZm9yIENv
ZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygp
LCBzdWNjZXNzTGFiZWwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAoIkRGRyBwcm90
b3R5cGUgY2hhaW4gYWNjZXNzIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAg
ICAgdG9DU3RyaW5nKCpleGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdWNjZXNzTGFiZWwuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkpOwogfQogCiBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbykKQEAgLTI5Niw4ICsyOTcsOCBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhl
Y1N0YXRlKiBlCiAgICAgICAgIAogICAgICAgICBzdHViSW5mby5zdHViUm91dGluZSA9IEZJTkFM
SVpFX0NPREVfRk9SX0RGR19TVFVCKAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAg
ICAgICAoIkRGRyBHZXRCeUlkIGFycmF5IGxlbmd0aCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJl
dHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgKCJERkcgR2V0
QnlJZCBhcnJheSBsZW5ndGggc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAg
ICAgICAgdG9DU3RyaW5nKCpleGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgKICAgICAgICAgICAgICAgICAgc3R1YkluZm8u
cGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAg
ICAKICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CkBAIC01
MjUsOCArNTI2LDggQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAog
ICAgICAgICAgICAgY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgICAgICAgICAgICAgRklOQUxJ
WkVfREZHX0NPREUoCiAgICAgICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAg
ICAgICAgICAgICAoIkRGRyBHZXRCeUlkIHBvbHltb3JwaGljIGxpc3QgYWNjZXNzIGZvciBDb2Rl
QmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisg
ICAgICAgICAgICAgICAgICAgICgiREZHIEdldEJ5SWQgcG9seW1vcnBoaWMgbGlzdCBhY2Nlc3Mg
Zm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAgICAgICAgdG9DU3RyaW5n
KCpleGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
bGFiZWxBdE9mZnNldCgKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5k
ZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICAgICAg
ICAgKmdsb2JhbERhdGEsCiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwKQEAgLTczNyw4ICs3MzgsOCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIo
CiAgICAgICAgICAgICAKICAgICBzdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX0RGR19T
VFVCKAogICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgKCJERkcgUHV0QnlJZCByZXBsYWNl
IHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgIGV4ZWMt
PmNvZGVCbG9jaygpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgK
KyAgICAgICAgKCJERkcgUHV0QnlJZCByZXBsYWNlIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQg
JXAiLAorICAgICAgICAgdG9DU3RyaW5nKCpleGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgKICAgICAgICAgICAgICBzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiB9
CiAKQEAgLTkzNywxMCArOTM4LDEwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1
YigKICAgICAgICAgY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgICAgICAgICBGSU5BTElaRV9E
RkdfQ09ERSgKICAgICAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAo
IkRGRyBQdXRCeUlkICVzdHJhbnNpdGlvbiBzdHViICglcCAtPiAlcCkgZm9yIENvZGVCbG9jayAl
cCwgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICAoIkRGRyBQdXRCeUlkICVzdHJh
bnNpdGlvbiBzdHViICglcCAtPiAlcCkgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAogICAgICAg
ICAgICAgICAgICBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gb2xkU3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpID8gInJlYWxsb2NhdGluZyAiIDogIiIsCiAgICAgICAgICAg
ICAgICAgIG9sZFN0cnVjdHVyZSwgc3RydWN0dXJlLAotICAgICAgICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisg
ICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRhdGEoKSwgc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCiAgICAgICAgICAgICAgICAg
ICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVz
cygpKSksCiAgICAgICAgICAgICAqZ2xvYmFsRGF0YSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVC
bG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwKQEAgLTEyMzAsOSArMTIzMSw5IEBAIHZvaWQgZGZn
TGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSogZXhlYywKICAgICBSZWZQdHI8Q2xvc3VyZUNhbGxT
dHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBhZG9wdFJlZihuZXcgQ2xvc3VyZUNhbGxTdHViUm91
dGluZSgKICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCiAgICAgICAgICAgICBwYXRjaEJ1ZmZl
ciwKLSAgICAgICAgICAgICgiREZHIGNsb3N1cmUgY2FsbCBzdHViIGZvciBDb2RlQmxvY2sgJXAs
IHJldHVybiBwb2ludCAlcCwgdGFyZ2V0ICVwIChDb2RlQmxvY2sgJXApIiwKLSAgICAgICAgICAg
ICAgICBjYWxsZXJDb2RlQmxvY2ssIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFi
ZWxBdE9mZnNldCgwKS5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICAgICAgICAgIGNvZGVQ
dHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY2FsbGVlQ29kZUJsb2NrKSksCisgICAgICAgICAgICAo
IkRGRyBjbG9zdXJlIGNhbGwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCwgdGFyZ2V0ICVw
ICglcykiLAorICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqY2FsbGVyQ29kZUJsb2NrKS5kYXRh
KCksIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgwKS5leGVj
dXRhYmxlQWRkcmVzcygpLAorICAgICAgICAgICAgICAgIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJl
c3MoKSwgdG9DU3RyaW5nKCpjYWxsZWVDb2RlQmxvY2spLmRhdGEoKSkpLAogICAgICAgICAqZ2xv
YmFsRGF0YSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLCBl
eGVjdXRhYmxlLCBjYWxsTGlua0luZm8uY29kZU9yaWdpbikpOwogICAgIAogICAgIFJlcGF0Y2hC
dWZmZXIgcmVwYXRjaEJ1ZmZlcihjYWxsZXJDb2RlQmxvY2spOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAx
MzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6
ZHVtcENhbGxGcmFtZShDYWxsRnJhbQogCiB2b2lkIEludGVycHJldGVyOjpkdW1wQ2FsbEZyYW1l
KENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmR1
bXAoKTsKKyAgICBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5kdW1wQnl0ZWNvZGUoKTsKICAgICBk
dW1wUmVnaXN0ZXJzKGNhbGxGcmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ29kZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpJVENvZGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgor
CituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IEpTQzo6SklUQ29kZTo6SklUVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2UgSlNDOjpKSVRDb2RlOjpOb25lOgorICAgICAgICBvdXQucHJpbnQoIk5vbmUiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpKSVRDb2RlOjpIb3N0Q2FsbFRodW5rOgorICAg
ICAgICBvdXQucHJpbnQoIkhvc3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICBvdXQucHJpbnQoIkxMSW50Iik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6SklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAg
ICAgIG91dC5wcmludCgiQmFzZWxpbmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlND
OjpKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIG91dC5wcmludCgiREZHIik7CisgICAgICAgIHJl
dHVybjsKKyAgICBkZWZhdWx0OgorICAgICAgICBDUkFTSCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTcsNyArMTU3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gbV9yZWYuZXhlY3V0YWJsZU1lbW9yeSgpOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBKSVRUeXBlIGppdFR5cGUoKQorICAgICAgICBKSVRUeXBl
IGppdFR5cGUoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRUeXBl
OwogICAgICAgICB9CkBAIC0xODcsNiArMTg3LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlm
IC8vIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICB9OwogCi19OworfSAvLyBuYW1l
c3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6SklUQ29kZTo6SklUVHlwZSk7CisKK30g
Ly8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkNvZGVCbG9ja1dp
dGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklULmgiCiAK
QEAgLTQ2LDcgKzQ3LDcgQEAgSklURGlzYXNzZW1ibGVyOjp+SklURGlzYXNzZW1ibGVyKCkKIAog
dm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKIHsKLSAgICBvdXQucHJpbnQoIkJhc2VsaW5lIEpJVCBjb2RlIGZvciBDb2Rl
QmxvY2sgIiwgUmF3UG9pbnRlcihtX2NvZGVCbG9jayksICIsIGluc3RydWN0aW9uIGNvdW50ID0g
IiwgbV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIlxuIik7CisgICAgb3V0LnByaW50
KCJCYXNlbGluZSBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxv
Y2ssIEpJVENvZGU6OkJhc2VsaW5lSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBtX2Nv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiXG4iKTsKICAgICBvdXQucHJpbnQoIiAgIENv
ZGUgYXQgWyIsIFJhd1BvaW50ZXIobGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSksICIsICIsIFJh
d1BvaW50ZXIoc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsg
bGlua0J1ZmZlci5kZWJ1Z1NpemUoKSksICIpOlxuIik7CiAgICAgZHVtcERpc2Fzc2VtYmx5KG91
dCwgbGlua0J1ZmZlciwgbV9zdGFydE9mQ29kZSwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1h
aW5QYXRoWzBdKTsKICAgICAKQEAgLTc4LDcgKzc5LDcgQEAgdm9pZCBKSVREaXNhc3NlbWJsZXI6
OmR1bXBGb3JJbnN0cnVjdGlvbgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgb3V0LnByaW50KHByZWZpeCk7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKGkpOwor
ICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKGkpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIG5leHRJbmRleCA9IGkgKyAxOyA7IG5leHRJbmRleCsrKSB7CiAgICAgICAgICAgICBpZiAo
bmV4dEluZGV4ID49IGxhYmVscy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBkdW1wRGlzYXNz
ZW1ibHkob3V0LCBsaW5rQnVmZmVyLCBsYWJlbHNbaV0sIGVuZExhYmVsKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA0LDggKzcwNCw4IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICBzdHViSW5mby0+c3R1
YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgK
ICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBwdXRfYnlf
aWQgdHJhbnNpdGlvbiBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0g
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHJldHVybkFkZHJlc3MudmFsdWUoKSkpLAorICAgICAg
ICAgICAgKCJCYXNlbGluZSBwdXRfYnlfaWQgdHJhbnNpdGlvbiBzdHViIGZvciAlcywgcmV0dXJu
IHBvaW50ICVwIiwKKyAgICAgICAgICAgICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCks
IHJldHVybkFkZHJlc3MudmFsdWUoKSkpLAogICAgICAgICAqbV9nbG9iYWxEYXRhLAogICAgICAg
ICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgIHdpbGxOZWVkU3RvcmFn
ZVJlYWxsb2MsCkBAIC03NzgsOCArNzc4LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0
Y2hHZXRBcnJheUxlbgogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0
aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4KICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUg
PSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAogICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAg
KCJCYXNlbGluZSBnZXRfYnlfaWQgYXJyYXkgbGVuZ3RoIHN0dWIgZm9yIENvZGVCbG9jayAlcCwg
cmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0
aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIGFycmF5
IGxlbmd0aCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgIHRvQ1N0cmlu
ZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zm
c2V0KAogICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1
bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRo
ZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5z
dGVhZC4KQEAgLTg0OSw4ICs4NDksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG8oU3RyCiAgICAgc3R1YkluZm8tPnN0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRp
bmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAg
ICAgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIHByb3RvIHN0dWIgZm9yIENvZGVCbG9jayAl
cCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRf
YnlfaWQgcHJvdG8gc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICAg
dG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxh
YmVsQXRPZmZzZXQoCiAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51
LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAgKm1fZ2xvYmFs
RGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLApAQCAtOTE1LDgg
KzkxNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCgKICAgICBS
ZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUo
CiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAg
ICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIHNlbGYgbGlzdCBzdHViIGZvciBDb2RlQmxvY2sg
JXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZv
LT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0
X2J5X2lkIHNlbGYgbGlzdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAg
ICAgICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4ubGFiZWxBdE9mZnNldCgKICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2Vs
aW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAgICAgICAqbV9n
bG9iYWxEYXRhLAogICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCkBAIC05
ODgsOCArOTg4LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAog
ICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91
dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAot
ICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgcHJvdG8gbGlzdCBzdHViIGZvciBDb2Rl
QmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHN0
dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICgiQmFzZWxp
bmUgZ2V0X2J5X2lkIHByb3RvIGxpc3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisg
ICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90
UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCiAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRj
aC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAg
ICAgKm1fZ2xvYmFsRGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LApAQCAtMTA2Niw4ICsxMDY2LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENo
YWluTGlzdAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBjcmVhdGVK
SVRTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBhdGNo
QnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgY2hhaW4gbGlzdCBzdHVi
IGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2Rl
QmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAg
ICgiQmFzZWxpbmUgZ2V0X2J5X2lkIGNoYWluIGxpc3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2lu
dCAlcCIsCisgICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCiAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KSwKICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLApAQCAtMTE0MCw4ICsxMTQwLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKFN0cgogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJvdXRpbmUg
PSBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAg
ICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgY2hhaW4g
c3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1f
Y29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisgICAgICAg
ICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBjaGFpbiBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50
ICVwIiwKKyAgICAgICAgICAgICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKICAgICAgICAgICAgICAgICAgc3R1Yklu
Zm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
LAogICAgICAgICAqbV9nbG9iYWxEYXRhLAogICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgog
I2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgogCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC03NDYsOCArNzQ3
LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIHN0dWJJ
bmZvLT5zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTEla
RV9DT0RFKAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5l
IHB1dF9ieV9pZCB0cmFuc2l0aW9uIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIs
Ci0gICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHJldHVybkFkZHJlc3MudmFsdWUoKSkpLAorICAg
ICAgICAgICAgKCJCYXNlbGluZSBwdXRfYnlfaWQgdHJhbnNpdGlvbiBmb3IgJXMsIHJldHVybiBw
b2ludCAlcCIsCisgICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBy
ZXR1cm5BZGRyZXNzLnZhbHVlKCkpKSwKICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAgICAgICAg
bV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICB3aWxsTmVlZFN0b3JhZ2VS
ZWFsbG9jLApAQCAtODE1LDggKzgxNiw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBhdGNo
R2V0QXJyYXlMZW4KICAgICAvLyBUcmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhh
dCBpdCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIuCiAgICAgc3R1YkluZm8tPnN0dWJSb3V0aW5lID0g
RklOQUxJWkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICgi
QmFzbGluZSBKSVQgZ2V0X2J5X2lkIGFycmF5IGxlbmd0aCBzdHViIGZvciBDb2RlQmxvY2sgJXAs
IHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBh
dGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAoIkJhc2xpbmUgSklUIGdldF9ieV9pZCBh
cnJheSBsZW5ndGggc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICB0b0NT
dHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksCisgICAgICAgICBzdHViSW5mby0+aG90UGF0aEJl
Z2luLmxhYmVsQXRPZmZzZXQoCiAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5l
LnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAgLy8gRmluYWxs
eSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVt
cCBoZXJlIGluc3RlYWQuCkBAIC04ODMsOCArODg1LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlJZFByb3RvKFN0cgogICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IGNyZWF0ZUpJ
VFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAgcGF0Y2hC
dWZmZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgcHJvdG8gc3R1YiBm
b3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1fY29kZUJs
b2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAo
IkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgcHJvdG8gc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAl
cCIsCisgICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5m
by0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCiAgICAgICAgICAgICAgICAgIHN0dWJJbmZv
LT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwK
ICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLApAQCAtOTQ4LDggKzk1MCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRTZWxmTGlzdCgKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJDb2RlID0gY3JlYXRl
SklUU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRj
aEJ1ZmZlciwKLSAgICAgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBsaXN0IHN0dWIg
Zm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgICAgICBtX2NvZGVC
bG9jaywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAg
KCJCYXNlbGluZSBKSVQgZ2V0X2J5X2lkIGxpc3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAl
cCIsCisgICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5m
by0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCiAgICAgICAgICAgICAgICAgIHN0dWJJbmZv
LT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwK
ICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLApAQCAtMTAyMiw4ICsxMDI0LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvTGlzdAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YkNvZGUgPSBjcmVh
dGVKSVRTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBh
dGNoQnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBKSVQgZ2V0X2J5X2lkIHByb3RvIGxp
c3Qgc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAg
IG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisgICAg
ICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgcHJvdG8gbGlzdCBzdHViIGZvciAlcywg
cmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5k
YXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKICAgICAgICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpLAogICAgICAgICAqbV9nbG9iYWxEYXRhLAogICAgICAgICBtX2NvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksCkBAIC0xMDk5LDggKzExMDEsOCBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBz
dHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RF
KAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5lIEpJVCBn
ZXRfYnlfaWQgY2hhaW4gbGlzdCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAl
cCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFi
ZWxBdE9mZnNldCgKKyAgICAgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBjaGFpbiBs
aXN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgIHRvQ1N0cmlu
ZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zm
c2V0KAogICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0
UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICptX2dsb2JhbERhdGEsCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKQEAgLTExNzQsOCArMTE3Niw4
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHIKICAgICBSZWZQdHI8
SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAg
ICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgICAg
ICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBjaGFpbiBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJl
dHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQ
YXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9i
eV9pZCBjaGFpbiBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICB0
b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFi
ZWxBdE9mZnNldCgKICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUu
Z2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAgICAgICAqbV9nbG9iYWxE
YXRhLAogICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCkBAIC0xNDI4LDcg
KzE0MzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeVZhbChCeVZhbEluCiAgICAg
CiAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAg
ICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV92YWwgc3R1YiBm
b3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLCBtX2NvZGVCbG9jaywgcmV0dXJuQWRk
cmVzcy52YWx1ZSgpKSk7CisgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X3ZhbCBzdHViIGZvciAl
cywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1
cm5BZGRyZXNzLnZhbHVlKCkpKTsKICAgICAKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZm
ZXIobV9jb2RlQmxvY2spOwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGJ5VmFsSW5mby0+YmFk
VHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUo
KS5jb2RlKCkpKTsKQEAgLTE0OTgsNyArMTUwMCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVB1dEJ5VmFsKEJ5VmFsSW4KICAgICAKICAgICBieVZhbEluZm8tPnN0dWJSb3V0aW5lID0gRklO
QUxJWkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICgiQmFz
ZWxpbmUgcHV0X2J5X3ZhbCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIs
IG1fY29kZUJsb2NrLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpKTsKKyAgICAgICAgKCJCYXNlbGlu
ZSBwdXRfYnlfdmFsIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1f
Y29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudmFsdWUoKSkpOwogICAgIAogICAgIFJl
cGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihtX2NvZGVCbG9jayk7CiAgICAgcmVwYXRjaEJ1ZmZl
ci5yZWxpbmsoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWwoYnlWYWxJ
bmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA4LDEyICsxODA4
LDE2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogICAgIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKIAogI2lmIEVOQUJM
RShKSVRfVkVSQk9TRV9PU1IpCi0gICAgZGF0YUxvZ0YoIiVwOiBFbnRlcmVkIG9wdGltaXplIHdp
dGggYnl0ZWNvZGVJbmRleCA9ICV1LCBleGVjdXRlQ291bnRlciA9ICVzLCByZW9wdGltaXphdGlv
blJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldSwgZXhpdENv
dW50ZXIgPSAiLCBjb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGNvZGVCbG9jay0+aml0RXhlY3V0
ZUNvdW50ZXIoKS5zdGF0dXMoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRl
cigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBkYXRhTG9n
KAorICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVkIG9wdGltaXplIHdpdGggYnl0ZWNvZGVJ
bmRleCA9ICIsIGJ5dGVjb2RlSW5kZXgsCisgICAgICAgICIsIGV4ZWN1dGVDb3VudGVyID0gIiwg
Y29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLAorICAgICAgICAiLCBvcHRpbWl6YXRpb25E
ZWxheUNvdW50ZXIgPSAiLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCks
CisgICAgICAgICIsIGV4aXRDb3VudGVyID0gIik7CiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0
aW1pemVkUmVwbGFjZW1lbnQoKSkKLSAgICAgICAgZGF0YUxvZ0YoIiV1IiwgY29kZUJsb2NrLT5y
ZXBsYWNlbWVudCgpLT5vc3JFeGl0Q291bnRlcigpKTsKKyAgICAgICAgZGF0YUxvZyhjb2RlQmxv
Y2stPnJlcGxhY2VtZW50KCktPm9zckV4aXRDb3VudGVyKCkpOwogICAgIGVsc2UKLSAgICAgICAg
ZGF0YUxvZ0YoIk4vQSIpOwotICAgIGRhdGFMb2dGKCJcbiIpOworICAgICAgICBkYXRhTG9nKCJO
L0EiKTsKKyAgICBkYXRhTG9nKCJcbiIpOwogI2VuZGlmCiAKICAgICBpZiAoIWNvZGVCbG9jay0+
Y2hlY2tJZk9wdGltaXphdGlvblRocmVzaG9sZFJlYWNoZWQoKSkgewpAQCAtMTgyMyw3ICsxODI3
LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAKICAgICBpZiAoY29k
ZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKLSAgICAgICAgZGF0YUxvZ0YoIkNvbnNpZGVyaW5nIE9TUiBpbnRvICVwKCVwKS5c
biIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKKyAgICAgICAgZGF0YUxv
Z0YoIkNvbnNpZGVyaW5nIE9TUiAiLCAqY29kZUJsb2NrLCAiIC0+ICIsICpjb2RlQmxvY2stPnJl
cGxhY2VtZW50KCksICIuXG4iKTsKICNlbmRpZgogICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIG9w
dGltaXplZCByZXBsYWNlbWVudCwgdGhlbiBpdCBtdXN0IGJlIHRoZSBjYXNlIHRoYXQgd2UgZW50
ZXJlZAogICAgICAgICAvLyBjdGlfb3B0aW1pemUgZnJvbSBhIGxvb3AuIFRoYXQncyBiZWNhdXNl
IGlzIHRoZXJlJ3MgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50LApAQCAtMTg0MCw3ICsxODQ0LDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAgICAgICAgIC8vIGFkZGl0
aW9uYWwgY2hlY2tpbmcgYW55d2F5LCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiByZWNvbXBpbGF0
aW9uIHRocmFzaGluZy4KICAgICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c2hv
dWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQotICAgICAgICAgICAgZGF0YUxvZ0YoIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAo
JXApIChpbiBsb29wKS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2dGKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICIsICpj
b2RlQmxvY2ssICIoIiwgKmNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgIikgKGluIGxvb3ApLlxu
Iik7CiAjZW5kaWYKICAgICAgICAgICAgIGNvZGVCbG9jay0+cmVvcHRpbWl6ZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTg0OCw3ICsxODUyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCwgb3B0aW1pemUpCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2stPnNo
b3VsZE9wdGltaXplTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAg
ICAgICAgZGF0YUxvZ0YoIkRlbGF5aW5nIG9wdGltaXphdGlvbiBmb3IgJXAgKGluIGxvb3ApIGJl
Y2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9jayk7CisgICAgICAg
ICAgICBkYXRhTG9nRigiRGVsYXlpbmcgb3B0aW1pemF0aW9uIGZvciAiLCAqY29kZUJsb2NrLCAi
IChpbiBsb29wKSBiZWNhdXNlIG9mIGluc3VmZmljaWVudCBwcm9maWxpbmcuXG4iKTsKICNlbmRp
ZgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xODY0LDcgKzE4NjgsNyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKICAgICAgICAgCiAgICAgICAgIGlm
IChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkgPT0gY29kZUJsb2NrKSB7CiAjaWYgRU5BQkxFKEpJ
VF9WRVJCT1NFX09TUikKLSAgICAgICAgICAgIGRhdGFMb2dGKCJPcHRpbWl6aW5nICVwIGZhaWxl
ZC5cbiIsIGNvZGVCbG9jayk7CisgICAgICAgICAgICBkYXRhTG9nRigiT3B0aW1pemluZyAiLCAq
Y29kZUJsb2NrLCAiIGZhaWxlZC5cbiIpOwogI2VuZGlmCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCk7CkBAIC0xODc4LDEyICsxODgyLDEyIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9w
dGltaXplKQogICAgIAogICAgIGlmICh2b2lkKiBhZGRyZXNzID0gREZHOjpwcmVwYXJlT1NSRW50
cnkoY2FsbEZyYW1lLCBvcHRpbWl6ZWRDb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKSB7CiAgICAg
ICAgIGlmIChPcHRpb25zOjpzaG93REZHRGlzYXNzZW1ibHkoKSkgewotICAgICAgICAgICAgZGF0
YUxvZ0YoCi0gICAgICAgICAgICAgICAgIlBlcmZvcm1pbmcgT1NSIGZyb20gY29kZSBibG9jayAl
cCB0byBjb2RlIGJsb2NrICVwLCBhZGRyZXNzICVwIHRvICVwLlxuIiwKLSAgICAgICAgICAgICAg
ICBjb2RlQmxvY2ssIG9wdGltaXplZENvZGVCbG9jaywgKFNUVUJfUkVUVVJOX0FERFJFU1MpLnZh
bHVlKCksIGFkZHJlc3MpOworICAgICAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICAgICAi
UGVyZm9ybWluZyBPU1IgIiwgKmNvZGVCbG9jaywgIiAtPiAiLCAqb3B0aW1pemVkQ29kZUJsb2Nr
LCAiLCBhZGRyZXNzICIsCisgICAgICAgICAgICAgICAgUmF3UG9pbnRlcigoU1RVQl9SRVRVUk5f
QUREUkVTUykudmFsdWUoKSksICIgLT4gIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIi5cbiIpOwog
ICAgICAgICB9CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgZGF0YUxvZ0Yo
Ik9wdGltaXppbmcgJXAgc3VjY2VlZGVkLCBwZXJmb3JtaW5nIE9TUiBhZnRlciBhIGRlbGF5IG9m
ICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigp
KTsKKyAgICAgICAgZGF0YUxvZ0YoIk9wdGltaXppbmcgIiwgKmNvZGVCbG9jaywgIiBzdWNjZWVk
ZWQsIHBlcmZvcm1pbmcgT1NSIGFmdGVyIGEgZGVsYXkgb2YgIiwgY29kZUJsb2NrLT5vcHRpbWl6
YXRpb25EZWxheUNvdW50ZXIoKSwgIi5cbiIpOwogI2VuZGlmCiAKICAgICAgICAgY29kZUJsb2Nr
LT5vcHRpbWl6ZVNvb24oKTsKQEAgLTE4OTIsNyArMTg5Niw3IEBAIERFRklORV9TVFVCX0ZVTkNU
SU9OKHZvaWQsIG9wdGltaXplKQogICAgIH0KICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0Vf
T1NSKQotICAgIGRhdGFMb2dGKCJPcHRpbWl6aW5nICVwIHN1Y2NlZWRlZCwgT1NSIGZhaWxlZCwg
YWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRp
b25EZWxheUNvdW50ZXIoKSk7CisgICAgZGF0YUxvZ0YoIk9wdGltaXppbmcgIiwgKmNvZGVCbG9j
aywgIiBzdWNjZWVkZWQsIE9TUiBmYWlsZWQsIGFmdGVyIGEgZGVsYXkgb2YgIiwgY29kZUJsb2Nr
LT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSwgIi5cbiIpOwogI2VuZGlmCiAKICAgICAvLyBD
b3VudCB0aGUgT1NSIGZhaWx1cmUgYXMgYSBzcGVjdWxhdGlvbiBmYWlsdXJlLiBJZiB0aGlzIGhh
cHBlbnMgYSBsb3QsIHRoZW4KQEAgLTE5MDAsNyArMTkwNCw3IEBAIERFRklORV9TVFVCX0ZVTkNU
SU9OKHZvaWQsIG9wdGltaXplKQogICAgIG9wdGltaXplZENvZGVCbG9jay0+Y291bnRPU1JFeGl0
KCk7CiAgICAgCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBkYXRhTG9nRigiRW5j
b3VudGVyZWQgT1NSIGZhaWx1cmUgaW50byAlcCglcCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9j
ay0+cmVwbGFjZW1lbnQoKSk7CisgICAgZGF0YUxvZ0YoIkVuY291bnRlcmVkIE9TUiBmYWlsdXJl
ICIsICpjb2RlQmxvY2ssICIgLT4gIiwgKmNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgIi5cbiIp
OwogI2VuZGlmCiAKICAgICAvLyBXZSBhcmUgYSBsb3QgbW9yZSBjb25zZXJ2YXRpdmUgYWJvdXQg
dHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBhZnRlciBPU1IgZmFpbHVyZSB0aGFuCkBAIC0xOTEz
LDcgKzE5MTcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKICAgICAv
LyByZW9wdGltaXphdGlvbiB0cmlnZ2VyLgogICAgIGlmIChvcHRpbWl6ZWRDb2RlQmxvY2stPnNo
b3VsZFJlb3B0aW1pemVOb3coKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAg
ICAgIGRhdGFMb2dGKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVwKSAoYWZ0ZXIg
T1NSIGZhaWwpLlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOworICAg
ICAgICBkYXRhTG9nRigiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAiLCAqY29kZUJsb2Nr
LCAiIC0+ICIsICpjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksICIgKGFmdGVyIE9TUiBmYWlsKS5c
biIpOwogI2VuZGlmCiAgICAgICAgIGNvZGVCbG9jay0+cmVvcHRpbWl6ZSgpOwogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6
YXRpb25LaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkNvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBpZiAoa2luZCA9PSBKU0M6OkNvZGVGb3JDYWxs
KSB7CisgICAgICAgIG91dC5wcmludCgiQ2FsbCIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIEFTU0VSVChraW5kID09IEpTQzo6Q29kZUZvckNvbnN0cnVjdCk7CisgICAgb3V0
LnByaW50KCJDb25zdHJ1Y3QiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDI0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
eyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogCitpbmxpbmUgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBzcGVjaWFsaXphdGlvbkZyb21Jc0NhbGwoYm9vbCBpc0NhbGwpCit7CisgICAg
cmV0dXJuIGlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdDsKK30KKworaW5s
aW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25Gcm9tSXNDb25zdHJ1Y3Qo
Ym9vbCBpc0NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gaXNDb25zdHJ1Y3QgPyBDb2RlRm9yQ29u
c3RydWN0IDogQ29kZUZvckNhbGw7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCituYW1lc3Bh
Y2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgSlNDOjpDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpOworCit9IC8vIG5h
bWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNp
b24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY2NSw0ICs2NjUsMjYgQEAgU3RyaW5nIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6cGFyYW1TdHJpbmcoKQogICAgIHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+
cGFyYW1TdHJpbmcoKTsKIH0KIAorQ29kZUJsb2NrSGFzaCBFeGVjdXRhYmxlQmFzZTo6aGFzaEZv
cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0Cit7CisgICAgaWYgKHRoaXMtPmNs
YXNzSW5mbygpID09ICZOYXRpdmVFeGVjdXRhYmxlOjpzX2luZm8pCisgICAgICAgIHJldHVybiBq
c0Nhc3Q8Y29uc3QgTmF0aXZlRXhlY3V0YWJsZSo+KHRoaXMpLT5oYXNoRm9yKGtpbmQpOworICAg
IAorICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgU2NyaXB0RXhlY3V0YWJsZSo+KHRoaXMpLT5oYXNo
Rm9yKGtpbmQpOworfQorCitDb2RlQmxvY2tIYXNoIE5hdGl2ZUV4ZWN1dGFibGU6Omhhc2hGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAoreworICAgIGlmIChraW5kID09IENv
ZGVGb3JDYWxsKQorICAgICAgICByZXR1cm4gQ29kZUJsb2NrSGFzaChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oYml0d2lzZV9jYXN0PHNpemVfdD4obV9mdW5jdGlvbikpKTsKKyAgICAKKyAgICBBU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICByZXR1cm4gQ29kZUJsb2NrSGFzaChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0d2lzZV9jYXN0PHNpemVfdD4obV9jb25zdHJ1Y3Rvcikp
KTsKK30KKworQ29kZUJsb2NrSGFzaCBTY3JpcHRFeGVjdXRhYmxlOjpoYXNoRm9yKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29kZUJsb2NrSGFzaChz
b3VyY2UoKSwga2luZCk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogI2RlZmluZSBFeGVjdXRhYmxlX2gKIAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCisjaW5jbHVk
ZSAiQ29kZUJsb2NrSGFzaC5oIgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIK
ICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTg2
LDYgKzg3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKICNlbmRpZgorICAgICAgICAKKyAgICAgICAgQ29kZUJsb2NrSGFzaCBoYXNoRm9y
KENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBpc0Z1
bmN0aW9uRXhlY3V0YWJsZSgpCiAgICAgICAgIHsKQEAgLTI5NSw2ICsyOTgsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICNlbmRpZgog
CisgICAgICAgIENvZGVCbG9ja0hhc2ggaGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpIGNvbnN0OworCiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgeyByZXR1cm4g
bV9mdW5jdGlvbjsgfQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcigpIHsgcmV0
dXJuIG1fY29uc3RydWN0b3I7IH0KIApAQCAtMzUyLDggKzM1NywxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogI2VuZGlmCisgICAgICAgIAorICAgICAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdDsKIAotICAgICAgICBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZTsgfQorICAgICAgICBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQogICAgICAgICBpbnRwdHJfdCBz
b3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVySUQoKTsgfQogICAgICAg
ICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3Zp
ZGVyKCktPnVybCgpOyB9CiAgICAgICAgIGludCBsaW5lTm8oKSBjb25zdCB7IHJldHVybiBtX2Zp
cnN0TGluZTsgfQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjExNSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMTEtMjkgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBJdCBzaG91bGQgYmUgZWFzeSB0byBm
aW5kIGNvZGUgYmxvY2tzIGluIGRlYnVnIGR1bXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIFJhd1BvaW50ZXIgdG8gYWNjZXB0IGJvdGgg
Y29uc3Qgdm9pZCogYW5kIHZvaWQqLCBhbmQgdXNlIHRoZSBmb3JtZXIgaW50ZXJuYWxseS4KKyAg
ICAgICAgCisgICAgICAgIENsZWFuZWQgdXAgU0hBMSBzbyB0aGF0IHRoZSBmdW5jdGlvbmFsaXR5
IGFscmVhZHkgdXNlZCBpbnRlcm5hbGx5IGZvciBzZWxmLXRlc3RpbmcgaXMKKyAgICAgICAgYXZh
aWxhYmxlIHZpYSB0aGUgQVBJLiBUaGlzIGluY2x1ZGVzIGFkZEJ5dGVzKENTdHJpbmcpIGFuZCBj
b21wdXRpbmcgaGV4IGRpZ2VzdHMuCisKKyAgICAgICAgKiB3dGYvUmF3UG9pbnRlci5oOgorICAg
ICAgICAoV1RGOjpSYXdQb2ludGVyOjpSYXdQb2ludGVyKToKKyAgICAgICAgKFJhd1BvaW50ZXIp
OgorICAgICAgICAoV1RGOjpSYXdQb2ludGVyOjp2YWx1ZSk6CisgICAgICAgICogd3RmL1NIQTEu
Y3BwOgorICAgICAgICAoV1RGOjpleHBlY3RTSEExKToKKyAgICAgICAgKFdURjo6U0hBMTo6aGV4
RGlnZXN0KToKKyAgICAgICAgKFdURjo6U0hBMTo6Y29tcHV0ZUhleERpZ2VzdCk6CisgICAgICAg
ICogd3RmL1NIQTEuaDoKKyAgICAgICAgKFdURjo6U0hBMTo6YWRkQnl0ZXMpOgorCiAyMDEyLTEx
LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgZHVtcGluZyBzaG91bGQgbm90IHVzZSB0aGUgc3RhdGljIGNoYXIgYnVmZmVyW3RoaW5n
eV0gaWRpb20KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Jhd1BvaW50ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJj
ZS9XVEYvd3RmL1Jhd1BvaW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTAgKzQwLDE1IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHZvaWQqIHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQorICAgIGV4cGxpY2l0IFJhd1BvaW50ZXIoY29uc3Qgdm9pZCogdmFs
dWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGNv
bnN0IHZvaWQqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIAogcHJpdmF0
ZToKLSAgICB2b2lkKiBtX3ZhbHVlOworICAgIGNvbnN0IHZvaWQqIG1fdmFsdWU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NIQTEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NIQTEuY3BwCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9TSEExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTUgKzUyLDggQEAgc3Rh
dGljIHZvaWQgZXhwZWN0U0hBMShDU3RyaW5nIGlucHV0LCBpbgogewogICAgIFNIQTEgc2hhMTsK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdDsgKytpKQotICAgICAgICBzaGExLmFkZEJ5
dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlucHV0LmRhdGEoKSksIGlucHV0
Lmxlbmd0aCgpKTsKLSAgICBWZWN0b3I8dWludDhfdCwgMjA+IGRpZ2VzdDsKLSAgICBzaGExLmNv
bXB1dGVIYXNoKGRpZ2VzdCk7Ci0gICAgY2hhciogYnVmZmVyID0gMDsKLSAgICBDU3RyaW5nIGFj
dHVhbCA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoNDAsIGJ1ZmZlcik7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCAyMDsgKytpKSB7Ci0gICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgMywg
IiUwMlgiLCBkaWdlc3QuYXQoaSkpOwotICAgICAgICBidWZmZXIgKz0gMjsKLSAgICB9CisgICAg
ICAgIHNoYTEuYWRkQnl0ZXMoaW5wdXQpOworICAgIENTdHJpbmcgYWN0dWFsID0gc2hhMS5jb21w
dXRlSGV4RGlnZXN0KCk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShhY3R1YWwgPT0gZXhwZWN0
ZWQsICJpbnB1dDogJXMsIHJlcGVhdDogJWQsIGFjdHVhbDogJXMsIGV4cGVjdGVkOiAlcyIsIGlu
cHV0LmRhdGEoKSwgcmVwZWF0LCBhY3R1YWwuZGF0YSgpLCBleHBlY3RlZC5kYXRhKCkpOwogfQog
CkBAIC0xNDQsNiArMTM3LDI1IEBAIHZvaWQgU0hBMTo6Y29tcHV0ZUhhc2goVmVjdG9yPHVpbnQ4
X3QsIDIKICAgICByZXNldCgpOwogfQogCitDU3RyaW5nIFNIQTE6OmhleERpZ2VzdChjb25zdCBW
ZWN0b3I8dWludDhfdCwgMjA+JiBkaWdlc3QpCit7CisgICAgY2hhciogc3RhcnQgPSAwOworICAg
IENTdHJpbmcgcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZCg0MCwgc3RhcnQpOwor
ICAgIGNoYXIqIGJ1ZmZlciA9IHN0YXJ0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjA7
ICsraSkgeworICAgICAgICBzbnByaW50ZihidWZmZXIsIDMsICIlMDJYIiwgZGlnZXN0LmF0KGkp
KTsKKyAgICAgICAgYnVmZmVyICs9IDI7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K0NTdHJpbmcgU0hBMTo6Y29tcHV0ZUhleERpZ2VzdCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Qs
IDIwPiBkaWdlc3Q7CisgICAgY29tcHV0ZUhhc2goZGlnZXN0KTsKKyAgICByZXR1cm4gaGV4RGln
ZXN0KGRpZ2VzdCk7Cit9CisKIHZvaWQgU0hBMTo6ZmluYWxpemUoKQogewogICAgIEFTU0VSVCht
X2N1cnNvciA8IDY0KTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NIQTEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9TSEExLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9XVEYv
d3RmL1NIQTEuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBXVEZf
U0hBMV9oCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDMsMTEgKzQ0LDI3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIGFkZEJ5dGVzKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpKTsKICAg
ICB9CisgICAgdm9pZCBhZGRCeXRlcyhjb25zdCBDU3RyaW5nJiBpbnB1dCkKKyAgICB7CisgICAg
ICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IGlucHV0LmRhdGEoKTsKKyAgICAgICAgLy8gTWFrZSBz
dXJlIHRoYXQgdGhlIGNyZWF0b3Igb2YgdGhlIENTdHJpbmcgZGlkbid0IG1ha2UgdGhlIG1pc3Rh
a2UKKyAgICAgICAgLy8gb2YgZm9yY2luZyBsZW5ndGgoKSB0byBiZSB0aGUgc2l6ZSBvZiB0aGUg
YnVmZmVyIHVzZWQgdG8gY3JlYXRlIHRoZQorICAgICAgICAvLyBzdHJpbmcsIHByaW9yIHRvIGlu
c2VydGluZyB0aGUgbnVsbCB0ZXJtaW5hdG9yIGVhcmxpZXIgaW4gdGhlCisgICAgICAgIC8vIHNl
cXVlbmNlLgorICAgICAgICBBU1NFUlQoaW5wdXQubGVuZ3RoKCkgPT0gc3RybGVuKHN0cmluZykp
OworICAgICAgICBhZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJp
bmcpLCBpbnB1dC5sZW5ndGgoKSk7CisgICAgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8v
IGNvbXB1dGVIYXNoIGhhcyBhIHNpZGUgZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgc3RhdGUgb2Yg
dGhlIG9iamVjdC4KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb21wdXRlSGFzaChWZWN0
b3I8dWludDhfdCwgMjA+Jik7Ci0KKyAgICAKKyAgICAvLyBHZXQgYSBoZXggaGFzaCBmcm9tIHRo
ZSBkaWdlc3QuIFBhc3MgYSBsaW1pdCBsZXNzIHRoYW4gNDAgaWYgeW91IHdhbnQgYSBzaG9ydGVy
IGRpZ2VzdC4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENTdHJpbmcgaGV4RGlnZXN0
KGNvbnN0IFZlY3Rvcjx1aW50OF90LCAyMD4mKTsKKyAgICAKKyAgICAvLyBDb21wdXRlIHRoZSBo
ZXggZGlnZXN0IGRpcmVjdGx5LiBQYXNzIGEgbGltaXQgbGVzcyB0aGFuIDQwIGlmIHlvdSB3YW50
IGEgc2hvcnRlciBkaWdlc3QuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgY29tcHV0
ZUhleERpZ2VzdCgpOworICAgIAogcHJpdmF0ZToKICAgICB2b2lkIGZpbmFsaXplKCk7CiAgICAg
dm9pZCBwcm9jZXNzQmxvY2soKTsK
</data>
<flag name="commit-queue"
          id="192553"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>176696</attachid>
            <date>2012-11-29 03:17:15 -0800</date>
            <delta_ts>2012-11-29 03:17:15 -0800</delta_ts>
            <desc>sample disassembly</desc>
            <filename>sample.txt</filename>
            <type>text/plain</type>
            <size>39431</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">W3BpemxvQHdhcnRvb3RoIE9wZW5Tb3VyY2VdIERZTERfRlJBTUVXT1JLX1BBVEg9V2ViS2l0QnVp
bGQvRGVidWcvIFdlYktpdEJ1aWxkL0RlYnVnL2pzYyAtLXNob3dEaXNhc3NlbWJseT10cnVlIFBl
cmZvcm1hbmNlVGVzdHMvU3VuU3BpZGVyL3Rlc3RzL3N1bnNwaWRlci0xLjAvYml0b3BzLWJpdHdp
c2UtYW5kLmpzIApHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIEpJVCBDVEkgbWFjaGluZSB0cmFtcG9s
aW5lczoKICAgIENvZGUgYXQgWzB4MzFlYjk1YzAxMDAwLCAweDMxZWI5NWMwMTM4MCk6CiAgICAg
IDB4MzFlYjk1YzAxMDAwOiB0ZXN0ICVyYXgsICVyMTUKICAgICAgMHgzMWViOTVjMDEwMDM6IGpu
eiAweDMxZWI5NWMwMTMzYwogICAgICAweDMxZWI5NWMwMTAwOTogbW92ICQweDExMDJjZmNjMCwg
JXIxMQogICAgICAweDMxZWI5NWMwMTAxMzogY21wICVyMTEsICglcmF4KQogICAgICAweDMxZWI5
NWMwMTAxNjogam56IDB4MzFlYjk1YzAxMzQ5CiAgICAgIDB4MzFlYjk1YzAxMDFjOiBtb3YgMHhj
KCVyYXgpLCAlZWF4CiAgICAgIDB4MzFlYjk1YzAxMDFmOiBjbXAgJDB4MCwgJWVheAogICAgICAw
eDMxZWI5NWMwMTAyMjogamwgMHgzMWViOTVjMDEzNTYKICAgICAgMHgzMWViOTVjMDEwMjg6IG9y
ICVyMTQsICVyYXgKICAgICAgMHgzMWViOTVjMDEwMmI6IHJldCAKICAgICAgMHgzMWViOTVjMDEw
MmM6IGhsdCAKICAgICAgMHgzMWViOTVjMDEwMmQ6IGhsdCAKICAgICAgMHgzMWViOTVjMDEwMmU6
IGhsdCAKICAgICAgMHgzMWViOTVjMDEwMmY6IGhsdCAKICAgICAgMHgzMWViOTVjMDEwMzA6IHRl
c3QgJXJheCwgJXIxNQogICAgICAweDMxZWI5NWMwMTAzMzogam56IDB4MzFlYjk1YzAxMThhCiAg
ICAgIDB4MzFlYjk1YzAxMDM5OiBtb3YgKCVyYXgpLCAlcmR4CiAgICAgIDB4MzFlYjk1YzAxMDNj
OiBjbXAgJDB4MTMsIDB4OCglcmR4KQogICAgICAweDMxZWI5NWMwMTA0MDogam56IDB4MzFlYjk1
YzAxMThhCiAgICAgIDB4MzFlYjk1YzAxMDQ2OiBtb3YgMHgyMCglcmF4KSwgJXJkeAogICAgICAw
eDMxZWI5NWMwMTA0YTogbW92ICVyZHgsIC0weDE4KCVyMTMpCiAgICAgIDB4MzFlYjk1YzAxMDRl
OiBwb3AgJXJieAogICAgICAweDMxZWI5NWMwMTA0ZjogbW92ICVyYngsIC0weDEwKCVyMTMpCiAg
ICAgIDB4MzFlYjk1YzAxMDUzOiBtb3YgJDB4N2Y5ZWNiMDBiNGIwLCAlcjExCiAgICAgIDB4MzFl
Yjk1YzAxMDVkOiBtb3YgJXIxMywgKCVyMTEpCiAgICAgIDB4MzFlYjk1YzAxMDYwOiBtb3YgJXJz
cCwgJXJkaQogICAgICAweDMxZWI5NWMwMTA2MzogbW92ICVyMTMsIDB4NTgoJXJzcCkKICAgICAg
MHgzMWViOTVjMDEwNjg6IG1vdiAkMHgxMGViY2I5MjAsICVyMTEKICAgICAgMHgzMWViOTVjMDEw
NzI6IGNhbGwgJXIxMQogICAgICAweDMxZWI5NWMwMTA3NTogcHVzaCAlcmJ4CiAgICAgIDB4MzFl
Yjk1YzAxMDc2OiBqbXAgJXJheAogICAgICAweDMxZWI5NWMwMTA3ODogaGx0IAogICAgICAweDMx
ZWI5NWMwMTA3OTogaGx0IAogICAgICAweDMxZWI5NWMwMTA3YTogaGx0IAogICAgICAweDMxZWI5
NWMwMTA3YjogaGx0IAogICAgICAweDMxZWI5NWMwMTA3YzogaGx0IAogICAgICAweDMxZWI5NWMw
MTA3ZDogaGx0IAogICAgICAweDMxZWI5NWMwMTA3ZTogaGx0IAogICAgICAweDMxZWI5NWMwMTA3
ZjogaGx0IAogICAgICAweDMxZWI5NWMwMTA4MDogdGVzdCAlcmF4LCAlcjE1CiAgICAgIDB4MzFl
Yjk1YzAxMDgzOiBqbnogMHgzMWViOTVjMDExZDEKICAgICAgMHgzMWViOTVjMDEwODk6IG1vdiAo
JXJheCksICVyZHgKICAgICAgMHgzMWViOTVjMDEwOGM6IGNtcCAkMHgxMywgMHg4KCVyZHgpCiAg
ICAgIDB4MzFlYjk1YzAxMDkwOiBqbnogMHgzMWViOTVjMDExZDEKICAgICAgMHgzMWViOTVjMDEw
OTY6IG1vdiAweDIwKCVyYXgpLCAlcmR4CiAgICAgIDB4MzFlYjk1YzAxMDlhOiBtb3YgJXJkeCwg
LTB4MTgoJXIxMykKICAgICAgMHgzMWViOTVjMDEwOWU6IHBvcCAlcmJ4CiAgICAgIDB4MzFlYjk1
YzAxMDlmOiBtb3YgJXJieCwgLTB4MTAoJXIxMykKICAgICAgMHgzMWViOTVjMDEwYTM6IG1vdiAk
MHg3ZjllY2IwMGI0YjAsICVyMTEKICAgICAgMHgzMWViOTVjMDEwYWQ6IG1vdiAlcjEzLCAoJXIx
MSkKICAgICAgMHgzMWViOTVjMDEwYjA6IG1vdiAlcnNwLCAlcmRpCiAgICAgIDB4MzFlYjk1YzAx
MGIzOiBtb3YgJXIxMywgMHg1OCglcnNwKQogICAgICAweDMxZWI5NWMwMTBiODogbW92ICQweDEw
ZWJjYjljMCwgJXIxMQogICAgICAweDMxZWI5NWMwMTBjMjogY2FsbCAlcjExCiAgICAgIDB4MzFl
Yjk1YzAxMGM1OiBwdXNoICVyYngKICAgICAgMHgzMWViOTVjMDEwYzY6IGptcCAlcmF4CiAgICAg
IDB4MzFlYjk1YzAxMGM4OiBobHQgCiAgICAgIDB4MzFlYjk1YzAxMGM5OiBobHQgCiAgICAgIDB4
MzFlYjk1YzAxMGNhOiBobHQgCiAgICAgIDB4MzFlYjk1YzAxMGNiOiBobHQgCiAgICAgIDB4MzFl
Yjk1YzAxMGNjOiBobHQgCiAgICAgIDB4MzFlYjk1YzAxMGNkOiBobHQgCiAgICAgIDB4MzFlYjk1
YzAxMGNlOiBobHQgCiAgICAgIDB4MzFlYjk1YzAxMGNmOiBobHQgCiAgICAgIDB4MzFlYjk1YzAx
MGQwOiB0ZXN0ICVyYXgsICVyMTUKICAgICAgMHgzMWViOTVjMDEwZDM6IGpueiAweDMxZWI5NWMw
MTE4YQogICAgICAweDMxZWI5NWMwMTBkOTogbW92ICglcmF4KSwgJXJkeAogICAgICAweDMxZWI5
NWMwMTBkYzogY21wICQweDEzLCAweDgoJXJkeCkKICAgICAgMHgzMWViOTVjMDEwZTA6IGpueiAw
eDMxZWI5NWMwMTE4YQogICAgICAweDMxZWI5NWMwMTBlNjogbW92IDB4MjAoJXJheCksICVyZHgK
ICAgICAgMHgzMWViOTVjMDEwZWE6IG1vdiAlcmR4LCAtMHgxOCglcjEzKQogICAgICAweDMxZWI5
NWMwMTBlZTogbW92IDB4MTgoJXJheCksICVyY3gKICAgICAgMHgzMWViOTVjMDEwZjI6IGNtcCAk
MHgwLCAweDgoJXJjeCkKICAgICAgMHgzMWViOTVjMDEwZjY6IGpnZSAweDMxZWI5NWMwMTEyNAog
ICAgICAweDMxZWI5NWMwMTBmYzogcG9wICVyYngKICAgICAgMHgzMWViOTVjMDEwZmQ6IG1vdiAk
MHg3ZjllY2IwMGI0YjAsICVyMTEKICAgICAgMHgzMWViOTVjMDExMDc6IG1vdiAlcjEzLCAoJXIx
MSkKICAgICAgMHgzMWViOTVjMDExMGE6IG1vdiAlcnNwLCAlcmRpCiAgICAgIDB4MzFlYjk1YzAx
MTBkOiBtb3YgJXIxMywgMHg1OCglcnNwKQogICAgICAweDMxZWI5NWMwMTExMjogbW92ICQweDEw
ZWJjYjQyMCwgJXIxMQogICAgICAweDMxZWI5NWMwMTExYzogY2FsbCAlcjExCiAgICAgIDB4MzFl
Yjk1YzAxMTFmOiBwdXNoICVyYngKICAgICAgMHgzMWViOTVjMDExMjA6IG1vdiAweDE4KCVyYXgp
LCAlcmN4CiAgICAgIDB4MzFlYjk1YzAxMTI0OiBtb3YgMHg1MCglcmN4KSwgJXJheAogICAgICAw
eDMxZWI5NWMwMTEyODogam1wICVyYXgKICAgICAgMHgzMWViOTVjMDExMmE6IGhsdCAKICAgICAg
MHgzMWViOTVjMDExMmI6IGhsdCAKICAgICAgMHgzMWViOTVjMDExMmM6IGhsdCAKICAgICAgMHgz
MWViOTVjMDExMmQ6IGhsdCAKICAgICAgMHgzMWViOTVjMDExMmU6IGhsdCAKICAgICAgMHgzMWVi
OTVjMDExMmY6IGhsdCAKICAgICAgMHgzMWViOTVjMDExMzA6IHRlc3QgJXJheCwgJXIxNQogICAg
ICAweDMxZWI5NWMwMTEzMzogam56IDB4MzFlYjk1YzAxMWQxCiAgICAgIDB4MzFlYjk1YzAxMTM5
OiBtb3YgKCVyYXgpLCAlcmR4CiAgICAgIDB4MzFlYjk1YzAxMTNjOiBjbXAgJDB4MTMsIDB4OCgl
cmR4KQogICAgICAweDMxZWI5NWMwMTE0MDogam56IDB4MzFlYjk1YzAxMWQxCiAgICAgIDB4MzFl
Yjk1YzAxMTQ2OiBtb3YgMHgyMCglcmF4KSwgJXJkeAogICAgICAweDMxZWI5NWMwMTE0YTogbW92
ICVyZHgsIC0weDE4KCVyMTMpCiAgICAgIDB4MzFlYjk1YzAxMTRlOiBtb3YgMHgxOCglcmF4KSwg
JXJjeAogICAgICAweDMxZWI5NWMwMTE1MjogY21wICQweDAsIDB4YyglcmN4KQogICAgICAweDMx
ZWI5NWMwMTE1NjogamdlIDB4MzFlYjk1YzAxMTg0CiAgICAgIDB4MzFlYjk1YzAxMTVjOiBwb3Ag
JXJieAogICAgICAweDMxZWI5NWMwMTE1ZDogbW92ICQweDdmOWVjYjAwYjRiMCwgJXIxMQogICAg
ICAweDMxZWI5NWMwMTE2NzogbW92ICVyMTMsICglcjExKQogICAgICAweDMxZWI5NWMwMTE2YTog
bW92ICVyc3AsICVyZGkKICAgICAgMHgzMWViOTVjMDExNmQ6IG1vdiAlcjEzLCAweDU4KCVyc3Ap
CiAgICAgIDB4MzFlYjk1YzAxMTcyOiBtb3YgJDB4MTBlYmNiNjMwLCAlcjExCiAgICAgIDB4MzFl
Yjk1YzAxMTdjOiBjYWxsICVyMTEKICAgICAgMHgzMWViOTVjMDExN2Y6IHB1c2ggJXJieAogICAg
ICAweDMxZWI5NWMwMTE4MDogbW92IDB4MTgoJXJheCksICVyY3gKICAgICAgMHgzMWViOTVjMDEx
ODQ6IG1vdiAweDU4KCVyY3gpLCAlcmF4CiAgICAgIDB4MzFlYjk1YzAxMTg4OiBqbXAgJXJheAog
ICAgICAweDMxZWI5NWMwMTE4YTogbW92IC0weDI4KCVyMTMpLCAlcmN4CiAgICAgIDB4MzFlYjk1
YzAxMThlOiBtb3YgLTB4MTgoJXJjeCksICVyY3gKICAgICAgMHgzMWViOTVjMDExOTI6IG1vdiAl
cmN4LCAtMHgxOCglcjEzKQogICAgICAweDMxZWI5NWMwMTE5NjogcG9wICVyYngKICAgICAgMHgz
MWViOTVjMDExOTc6IG1vdiAlcmJ4LCAtMHgxMCglcjEzKQogICAgICAweDMxZWI5NWMwMTE5Yjog
bW92ICQweDAsICVyMTEKICAgICAgMHgzMWViOTVjMDExYTU6IG1vdiAlcjExLCAtMHg4KCVyMTMp
CiAgICAgIDB4MzFlYjk1YzAxMWE5OiBtb3YgJDB4N2Y5ZWNiMDBiNGIwLCAlcjExCiAgICAgIDB4
MzFlYjk1YzAxMWIzOiBtb3YgJXIxMywgKCVyMTEpCiAgICAgIDB4MzFlYjk1YzAxMWI2OiBtb3Yg
JXJzcCwgJXJkaQogICAgICAweDMxZWI5NWMwMTFiOTogbW92ICVyMTMsIDB4NTgoJXJzcCkKICAg
ICAgMHgzMWViOTVjMDExYmU6IG1vdiAkMHgxMGViY2JiMDAsICVyMTEKICAgICAgMHgzMWViOTVj
MDExYzg6IGNhbGwgJXIxMQogICAgICAweDMxZWI5NWMwMTFjYjogbW92IC0weDI4KCVyMTMpLCAl
cjEzCiAgICAgIDB4MzFlYjk1YzAxMWNmOiBwdXNoICVyYngKICAgICAgMHgzMWViOTVjMDExZDA6
IHJldCAKICAgICAgMHgzMWViOTVjMDExZDE6IG1vdiAtMHgyOCglcjEzKSwgJXJjeAogICAgICAw
eDMxZWI5NWMwMTFkNTogbW92IC0weDE4KCVyY3gpLCAlcmN4CiAgICAgIDB4MzFlYjk1YzAxMWQ5
OiBtb3YgJXJjeCwgLTB4MTgoJXIxMykKICAgICAgMHgzMWViOTVjMDExZGQ6IHBvcCAlcmJ4CiAg
ICAgIDB4MzFlYjk1YzAxMWRlOiBtb3YgJXJieCwgLTB4MTAoJXIxMykKICAgICAgMHgzMWViOTVj
MDExZTI6IG1vdiAkMHgwLCAlcjExCiAgICAgIDB4MzFlYjk1YzAxMWVjOiBtb3YgJXIxMSwgLTB4
OCglcjEzKQogICAgICAweDMxZWI5NWMwMTFmMDogbW92ICQweDdmOWVjYjAwYjRiMCwgJXIxMQog
ICAgICAweDMxZWI5NWMwMTFmYTogbW92ICVyMTMsICglcjExKQogICAgICAweDMxZWI5NWMwMTFm
ZDogbW92ICVyc3AsICVyZGkKICAgICAgMHgzMWViOTVjMDEyMDA6IG1vdiAlcjEzLCAweDU4KCVy
c3ApCiAgICAgIDB4MzFlYjk1YzAxMjA1OiBtb3YgJDB4MTBlYmNjN2EwLCAlcjExCiAgICAgIDB4
MzFlYjk1YzAxMjBmOiBjYWxsICVyMTEKICAgICAgMHgzMWViOTVjMDEyMTI6IG1vdiAtMHgyOCgl
cjEzKSwgJXIxMwogICAgICAweDMxZWI5NWMwMTIxNjogcHVzaCAlcmJ4CiAgICAgIDB4MzFlYjk1
YzAxMjE3OiByZXQgCiAgICAgIDB4MzFlYjk1YzAxMjE4OiBobHQgCiAgICAgIDB4MzFlYjk1YzAx
MjE5OiBobHQgCiAgICAgIDB4MzFlYjk1YzAxMjFhOiBobHQgCiAgICAgIDB4MzFlYjk1YzAxMjFi
OiBobHQgCiAgICAgIDB4MzFlYjk1YzAxMjFjOiBobHQgCiAgICAgIDB4MzFlYjk1YzAxMjFkOiBo
bHQgCiAgICAgIDB4MzFlYjk1YzAxMjFlOiBobHQgCiAgICAgIDB4MzFlYjk1YzAxMjFmOiBobHQg
CiAgICAgIDB4MzFlYjk1YzAxMjIwOiBtb3YgJDB4MCwgJXIxMQogICAgICAweDMxZWI5NWMwMTIy
YTogbW92ICVyMTEsIC0weDgoJXIxMykKICAgICAgMHgzMWViOTVjMDEyMmU6IG1vdiAkMHg3Zjll
Y2IwMGI0YjAsICVyMTEKICAgICAgMHgzMWViOTVjMDEyMzg6IG1vdiAlcjEzLCAoJXIxMSkKICAg
ICAgMHgzMWViOTVjMDEyM2I6IG1vdiAtMHgyOCglcjEzKSwgJXJheAogICAgICAweDMxZWI5NWMw
MTIzZjogbW92IC0weDE4KCVyYXgpLCAlcmR4CiAgICAgIDB4MzFlYjk1YzAxMjQzOiBtb3YgJXJk
eCwgLTB4MTgoJXIxMykKICAgICAgMHgzMWViOTVjMDEyNDc6IG1vdiAoJXJzcCksICVyZHgKICAg
ICAgMHgzMWViOTVjMDEyNGI6IG1vdiAlcmR4LCAtMHgxMCglcjEzKQogICAgICAweDMxZWI5NWMw
MTI0ZjogbW92ICVyMTMsICVyZGkKICAgICAgMHgzMWViOTVjMDEyNTI6IHN1YiAkMHg4LCAlcnNw
CiAgICAgIDB4MzFlYjk1YzAxMjU2OiBtb3YgLTB4MjAoJXIxMyksICVyc2kKICAgICAgMHgzMWVi
OTVjMDEyNWE6IG1vdiAweDE4KCVyc2kpLCAlcjkKICAgICAgMHgzMWViOTVjMDEyNWU6IG1vdiAl
cmF4LCAlcjEzCiAgICAgIDB4MzFlYjk1YzAxMjYxOiBjYWxsIDB4NjAoJXI5KQogICAgICAweDMx
ZWI5NWMwMTI2NTogYWRkICQweDgsICVyc3AKICAgICAgMHgzMWViOTVjMDEyNjk6IG1vdiAkMHg3
ZjllY2IwMGNkZjAsICVyY3gKICAgICAgMHgzMWViOTVjMDEyNzM6IG1vdiAoJXJjeCksICVyY3gK
ICAgICAgMHgzMWViOTVjMDEyNzY6IHRlc3QgJXJjeCwgJXJjeAogICAgICAweDMxZWI5NWMwMTI3
OTogam56IDB4MzFlYjk1YzAxMjgwCiAgICAgIDB4MzFlYjk1YzAxMjdmOiByZXQgCiAgICAgIDB4
MzFlYjk1YzAxMjgwOiBwb3AgJXJkeAogICAgICAweDMxZWI5NWMwMTI4MTogbW92ICQweDdmOWVj
YjAwY2UwOCwgJXJjeAogICAgICAweDMxZWI5NWMwMTI4YjogbW92ICVyZHgsICglcmN4KQogICAg
ICAweDMxZWI5NWMwMTI4ZTogbW92ICVyMTMsIDB4NTgoJXJzcCkKICAgICAgMHgzMWViOTVjMDEy
OTM6IG1vdiAkMHg3ZjllY2IwMGI0YjAsICVyMTEKICAgICAgMHgzMWViOTVjMDEyOWQ6IG1vdiAl
cjEzLCAoJXIxMSkKICAgICAgMHgzMWViOTVjMDEyYTA6IG1vdiAkMHgxMGViYzYxZTgsICVyZHgK
ICAgICAgMHgzMWViOTVjMDEyYWE6IHB1c2ggJXJkeAogICAgICAweDMxZWI5NWMwMTJhYjogcmV0
IAogICAgICAweDMxZWI5NWMwMTJhYzogaGx0IAogICAgICAweDMxZWI5NWMwMTJhZDogaGx0IAog
ICAgICAweDMxZWI5NWMwMTJhZTogaGx0IAogICAgICAweDMxZWI5NWMwMTJhZjogaGx0IAogICAg
ICAweDMxZWI5NWMwMTJiMDogbW92ICQweDAsICVyMTEKICAgICAgMHgzMWViOTVjMDEyYmE6IG1v
diAlcjExLCAtMHg4KCVyMTMpCiAgICAgIDB4MzFlYjk1YzAxMmJlOiBtb3YgJDB4N2Y5ZWNiMDBi
NGIwLCAlcjExCiAgICAgIDB4MzFlYjk1YzAxMmM4OiBtb3YgJXIxMywgKCVyMTEpCiAgICAgIDB4
MzFlYjk1YzAxMmNiOiBtb3YgLTB4MjgoJXIxMyksICVyYXgKICAgICAgMHgzMWViOTVjMDEyY2Y6
IG1vdiAtMHgxOCglcmF4KSwgJXJkeAogICAgICAweDMxZWI5NWMwMTJkMzogbW92ICVyZHgsIC0w
eDE4KCVyMTMpCiAgICAgIDB4MzFlYjk1YzAxMmQ3OiBtb3YgKCVyc3ApLCAlcmR4CiAgICAgIDB4
MzFlYjk1YzAxMmRiOiBtb3YgJXJkeCwgLTB4MTAoJXIxMykKICAgICAgMHgzMWViOTVjMDEyZGY6
IG1vdiAlcjEzLCAlcmRpCiAgICAgIDB4MzFlYjk1YzAxMmUyOiBzdWIgJDB4OCwgJXJzcAogICAg
ICAweDMxZWI5NWMwMTJlNjogbW92IC0weDIwKCVyMTMpLCAlcnNpCiAgICAgIDB4MzFlYjk1YzAx
MmVhOiBtb3YgMHgxOCglcnNpKSwgJXI5CiAgICAgIDB4MzFlYjk1YzAxMmVlOiBtb3YgJXJheCwg
JXIxMwogICAgICAweDMxZWI5NWMwMTJmMTogY2FsbCAweDY4KCVyOSkKICAgICAgMHgzMWViOTVj
MDEyZjU6IGFkZCAkMHg4LCAlcnNwCiAgICAgIDB4MzFlYjk1YzAxMmY5OiBtb3YgJDB4N2Y5ZWNi
MDBjZGYwLCAlcmN4CiAgICAgIDB4MzFlYjk1YzAxMzAzOiBtb3YgKCVyY3gpLCAlcmN4CiAgICAg
IDB4MzFlYjk1YzAxMzA2OiB0ZXN0ICVyY3gsICVyY3gKICAgICAgMHgzMWViOTVjMDEzMDk6IGpu
eiAweDMxZWI5NWMwMTMxMAogICAgICAweDMxZWI5NWMwMTMwZjogcmV0IAogICAgICAweDMxZWI5
NWMwMTMxMDogcG9wICVyZHgKICAgICAgMHgzMWViOTVjMDEzMTE6IG1vdiAkMHg3ZjllY2IwMGNl
MDgsICVyY3gKICAgICAgMHgzMWViOTVjMDEzMWI6IG1vdiAlcmR4LCAoJXJjeCkKICAgICAgMHgz
MWViOTVjMDEzMWU6IG1vdiAlcjEzLCAweDU4KCVyc3ApCiAgICAgIDB4MzFlYjk1YzAxMzIzOiBt
b3YgJDB4N2Y5ZWNiMDBiNGIwLCAlcjExCiAgICAgIDB4MzFlYjk1YzAxMzJkOiBtb3YgJXIxMywg
KCVyMTEpCiAgICAgIDB4MzFlYjk1YzAxMzMwOiBtb3YgJDB4MTBlYmM2MWU4LCAlcmR4CiAgICAg
IDB4MzFlYjk1YzAxMzNhOiBwdXNoICVyZHgKICAgICAgMHgzMWViOTVjMDEzM2I6IHJldCAKICAg
ICAgMHgzMWViOTVjMDEzM2M6IG1vdiAkMHgxMGViY2E2YjAsICVyMTEKICAgICAgMHgzMWViOTVj
MDEzNDY6IGptcCAlcjExCiAgICAgIDB4MzFlYjk1YzAxMzQ5OiBtb3YgJDB4MTBlYmNhNmIwLCAl
cjExCiAgICAgIDB4MzFlYjk1YzAxMzUzOiBqbXAgJXIxMQogICAgICAweDMxZWI5NWMwMTM1Njog
bW92ICQweDEwZWJjYTZiMCwgJXIxMQogICAgICAweDMxZWI5NWMwMTM2MDogam1wICVyMTEKR2Vu
ZXJhdGVkIEpJVCBjb2RlIGZvciBMTEludCBwcm9ncmFtIHByb2xvZ3VlIHRodW5rOgogICAgQ29k
ZSBhdCBbMHgzMWViOTVjMDEzODAsIDB4MzFlYjk1YzAxM2EwKToKICAgICAgMHgzMWViOTVjMDEz
ODA6IG1vdiAkMHgxMGVkOTYyM2MsICVyYXgKICAgICAgMHgzMWViOTVjMDEzOGE6IGptcCAlcmF4
CkJhc2VsaW5lIEpJVCBjb2RlIGZvciBEaUJTdnk6WzB4N2Y5ZWNjMDBkYzAwLCBCYXNlbGluZUds
b2JhbF0sIGluc3RydWN0aW9uIGNvdW50ID0gMTEwCiAgIENvZGUgYXQgWzB4MzFlYjk1YzAxM2Ew
LCAweDMxZWI5NWMwMWI0NCk6CiAgICAgICAgICAweDMxZWI5NWMwMTNhMDogbm9wIAogICAgICAg
ICAgMHgzMWViOTVjMDEzYTE6IHBvcCAlcmN4CiAgICAgICAgICAweDMxZWI5NWMwMTNhMjogbW92
ICVyY3gsIC0weDEwKCVyMTMpCiAgICAgICAgICAweDMxZWI5NWMwMTNhNjogbW92ICQweDdmOWVj
YzAwZGMwMCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDEzYjA6IG1vdiAlcjExLCAtMHg4KCVy
MTMpCiAgICAgICAgICAweDMxZWI5NWMwMTNiNDogbW92ICQweDdmOWVjYzAwZTdiOCwgJXIxMQog
ICAgICAgICAgMHgzMWViOTVjMDEzYmU6IGFkZCAkMHgxLCAoJXIxMSkKICAgIFsgICAwXSBlbnRl
cgogICAgICAgICAgMHgzMWViOTVjMDEzYzI6IG1vdiAkMHg3ZjllY2MwMGU4MzQsICVyMTEKICAg
ICAgICAgIDB4MzFlYjk1YzAxM2NjOiBhZGQgJDB4ZiwgKCVyMTEpCiAgICAgICAgICAweDMxZWI5
NWMwMTNkMDoganMgMHgzMWViOTVjMDE0MDAKICAgICAgICAgIDB4MzFlYjk1YzAxM2Q2OiBtb3Yg
JDB4MCwgMHg4KCVyc3ApCiAgICAgICAgICAweDMxZWI5NWMwMTNkZTogbW92ICVyc3AsICVyZGkK
ICAgICAgICAgIDB4MzFlYjk1YzAxM2UxOiBtb3YgJXIxMywgMHg1OCglcnNwKQogICAgICAgICAg
MHgzMWViOTVjMDEzZTY6IG1vdiAkMHg3ZjllY2IwMGI0YjAsICVyMTEKICAgICAgICAgIDB4MzFl
Yjk1YzAxM2YwOiBtb3YgJXIxMywgKCVyMTEpCiAgICAgICAgICAweDMxZWI5NWMwMTNmMzogbW92
ICQweDEwZWJjYWE2MCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDEzZmQ6IGNhbGwgJXIxMQog
ICAgWyAgIDFdIG1vdgkJIHIwLCBVbmRlZmluZWQoQGswKQogICAgICAgICAgMHgzMWViOTVjMDE0
MDA6IG1vdiAkMHhhLCAlcmF4CiAgICAgICAgICAweDMxZWI5NWMwMTQwYTogbW92ICVyYXgsIDB4
MCglcjEzKQogICAgWyAgIDRdIHJlc29sdmVfYmFzZQkgcjEsIGJpdHdpc2VBbmRWYWx1ZShAaWQw
KSwgMCwgMQogICAgICAgICAgMHgzMWViOTVjMDE0MGU6IG1vdiAtMHgxOCglcjEzKSwgJXJjeAog
ICAgICAgICAgMHgzMWViOTVjMDE0MTI6IG1vdiAkMHgxMTAyZGYxODAsICVyYXgKICAgICAgICAg
IDB4MzFlYjk1YzAxNDFjOiBtb3YgJXJheCwgMHg3ZjllY2MwMGUwMTgKICAgICAgICAgIDB4MzFl
Yjk1YzAxNDI2OiBtb3YgJXJheCwgMHg4KCVyMTMpCiAgICBbICAxMV0gbW92CQkgcjAsIERvdWJs
ZTogNDc1MTI5NzYwNjg3NTg3MzI4MCwgNDI5NDk2NzI5Ni4wMDAwMDAoQGsxKQogICAgICAgICAg
MHgzMWViOTVjMDE0MmE6IG1vdiAkMHhlMjAwMDAwMDAwMDAwMDgzLCAlcmF4CiAgICAgICAgICAw
eDMxZWI5NWMwMTQzNDogcm9yICQweDksICVyYXgKICAgICAgICAgIDB4MzFlYjk1YzAxNDM4OiBt
b3YgJXJheCwgMHgwKCVyMTMpCiAgICBbICAxNF0gcHV0X3RvX2Jhc2UJIHIxLCBiaXR3aXNlQW5k
VmFsdWUoQGlkMCksIHIwLCAxCiAgICAgICAgICAweDMxZWI5NWMwMTQzYzogbW92ICVyYXgsICVy
ZHgKICAgICAgICAgIDB4MzFlYjk1YzAxNDNmOiBtb3YgMHg4KCVyMTMpLCAlcmF4CiAgICAgICAg
ICAweDMxZWI5NWMwMTQ0MzogbW92ICQweDdmOWVjZWMwMDc5MCwgJXJjeAogICAgICAgICAgMHgz
MWViOTVjMDE0NGQ6IG1vdiAoJXJjeCksICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAxNDUwOiBj
bXAgJXJjeCwgKCVyYXgpCiAgICAgICAgICAweDMxZWI5NWMwMTQ1Mzogam56IDB4MzFlYjk1YzAx
NzczCiAgICAgICAgICAweDMxZWI5NWMwMTQ1OTogbW92IDB4OCglcmF4KSwgJXJjeAogICAgICAg
ICAgMHgzMWViOTVjMDE0NWQ6IG1vdiAkMHg3ZjllY2VjMDA3OWMsICVyYngKICAgICAgICAgIDB4
MzFlYjk1YzAxNDY3OiBtb3YgKCVyYngpLCAlZWJ4CiAgICAgICAgICAweDMxZWI5NWMwMTQ2OTog
bW92c3hkICVlYngsICVyYngKICAgICAgICAgIDB4MzFlYjk1YzAxNDZjOiBtb3YgJXJkeCwgKCVy
Y3gsJXJieCw4KQogICAgWyAgMTldIHJlc29sdmVfYmFzZQkgcjEsIGkoQGlkMSksIDEsIDIKICAg
ICAgICAgIDB4MzFlYjk1YzAxNDcwOiBtb3YgLTB4MTgoJXIxMyksICVyY3gKICAgICAgICAgIDB4
MzFlYjk1YzAxNDc0OiBtb3YgJDB4MTEwMmRmMTgwLCAlcmF4CiAgICAgICAgICAweDMxZWI5NWMw
MTQ3ZTogbW92ICVyYXgsIDB4N2Y5ZWNjMDBlMDQwCiAgICAgICAgICAweDMxZWI5NWMwMTQ4ODog
bW92ICVyYXgsIDB4OCglcjEzKQogICAgWyAgMjZdIHB1dF90b19iYXNlCSByMSwgaShAaWQxKSwg
SW50MzI6IDAoQGsyKSwgMgogICAgICAgICAgMHgzMWViOTVjMDE0OGM6IG1vdiAkMHgzZmZmYzAw
MDAwMDAsICVyYXgKICAgICAgICAgIDB4MzFlYjk1YzAxNDk2OiByb3IgJDB4MmUsICVyYXgKICAg
ICAgICAgIDB4MzFlYjk1YzAxNDlhOiBtb3YgJXJheCwgMHgxMTAyZGYxZDgKICAgIFsgIDMxXSBy
ZXNvbHZlCQkgcjEsIGkoQGlkMSksIDIKICAgICAgICAgIDB4MzFlYjk1YzAxNGE0OiBtb3YgLTB4
MTgoJXIxMyksICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAxNGE4OiBtb3YgMHgxMTAyZGYxZDgs
ICVyYXgKICAgICAgICAgIDB4MzFlYjk1YzAxNGIyOiBtb3YgJXJheCwgMHg4KCVyMTMpCiAgICAg
ICAgICAweDMxZWI5NWMwMTRiNjogbW92ICVyYXgsIDB4N2Y5ZWNjMDBlMDY4CiAgICBbICAzNl0g
am5sZXNzCQkgcjEsIEludDMyOiA2MDAwMDAoQGszKSwgNTUoLT45MSkKICAgICAgICAgIDB4MzFl
Yjk1YzAxNGMwOiBjbXAgJXIxNCwgJXJheAogICAgICAgICAgMHgzMWViOTVjMDE0YzM6IGpiIDB4
MzFlYjk1YzAxN2RlCiAgICAgICAgICAweDMxZWI5NWMwMTRjOTogbW92ICQweDNkZmE5NywgJXIx
MWQKICAgICAgICAgIDB4MzFlYjk1YzAxNGNmOiB4b3IgJDB4MzRkZDU3LCAlcjExZAogICAgICAg
ICAgMHgzMWViOTVjMDE0ZDY6IGNtcCAlcjExZCwgJWVheAogICAgICAgICAgMHgzMWViOTVjMDE0
ZDk6IGpnZSAweDMxZWI5NWMwMTZiYwogICAgWyAgNDBdIGxvb3BfaGludAogICAgICAgICAgMHgz
MWViOTVjMDE0ZGY6IG1vdiAkMHg3ZjllY2MwMGU4MzQsICVyMTEKICAgICAgICAgIDB4MzFlYjk1
YzAxNGU5OiBhZGQgJDB4MSwgKCVyMTEpCiAgICAgICAgICAweDMxZWI5NWMwMTRlZDoganMgMHgz
MWViOTVjMDE1MjUKICAgICAgICAgIDB4MzFlYjk1YzAxNGYzOiBtb3YgJDB4MjgsIDB4OCglcnNw
KQogICAgICAgICAgMHgzMWViOTVjMDE0ZmI6IG1vdiAlcnNwLCAlcmRpCiAgICAgICAgICAweDMx
ZWI5NWMwMTRmZTogbW92ICVyMTMsIDB4NTgoJXJzcCkKICAgICAgICAgIDB4MzFlYjk1YzAxNTAz
OiBtb3YgJDB4MjksIC0weDJjKCVyMTMpCiAgICAgICAgICAweDMxZWI5NWMwMTUwYjogbW92ICQw
eDdmOWVjYjAwYjRiMCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE1MTU6IG1vdiAlcjEzLCAo
JXIxMSkKICAgICAgICAgIDB4MzFlYjk1YzAxNTE4OiBtb3YgJDB4MTBlYmNhYTYwLCAlcjExCiAg
ICAgICAgICAweDMxZWI5NWMwMTUyMjogY2FsbCAlcjExCiAgICBbICA0MV0gcmVzb2x2ZV9iYXNl
CSByMSwgYml0d2lzZUFuZFZhbHVlKEBpZDApLCAwLCAxCiAgICAgICAgICAweDMxZWI5NWMwMTUy
NTogbW92IC0weDE4KCVyMTMpLCAlcmN4CiAgICAgICAgICAweDMxZWI5NWMwMTUyOTogbW92ICQw
eDExMDJkZjE4MCwgJXJheAogICAgICAgICAgMHgzMWViOTVjMDE1MzM6IG1vdiAlcmF4LCAweDdm
OWVjYzAwZTA5MAogICAgICAgICAgMHgzMWViOTVjMDE1M2Q6IG1vdiAlcmF4LCAweDgoJXIxMykK
ICAgIFsgIDQ4XSByZXNvbHZlCQkgcjIsIGJpdHdpc2VBbmRWYWx1ZShAaWQwKSwgMwogICAgICAg
ICAgMHgzMWViOTVjMDE1NDE6IG1vdiAtMHgxOCglcjEzKSwgJXJjeAogICAgICAgICAgMHgzMWVi
OTVjMDE1NDU6IG1vdiAkMHgxMTAyZGYxODAsICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAxNTRm
OiBtb3YgJDB4N2Y5ZWNlYzAwYWUwLCAlcmJ4CiAgICAgICAgICAweDMxZWI5NWMwMTU1OTogbW92
IDB4OCglcmJ4KSwgJXJkeAogICAgICAgICAgMHgzMWViOTVjMDE1NWQ6IGNtcCAoJXJjeCksICVy
ZHgKICAgICAgICAgIDB4MzFlYjk1YzAxNTYwOiBqbnogMHgzMWViOTVjMDE4NmEKICAgICAgICAg
IDB4MzFlYjk1YzAxNTY2OiBtb3YgMHgxMCglcmJ4KSwgJWVieAogICAgICAgICAgMHgzMWViOTVj
MDE1Njk6IGNtcCAkMHg2NCwgJWVieAogICAgICAgICAgMHgzMWViOTVjMDE1NmM6IGpnZSAweDMx
ZWI5NWMwMTU3MwogICAgICAgICAgMHgzMWViOTVjMDE1NzI6IGludDMgCiAgICAgICAgICAweDMx
ZWI5NWMwMTU3MzogbW92IDB4OCglcmN4KSwgJXJkeAogICAgICAgICAgMHgzMWViOTVjMDE1Nzc6
IG5lZyAlZWJ4CiAgICAgICAgICAweDMxZWI5NWMwMTU3OTogbW92c3hkICVlYngsICVyYngKICAg
ICAgICAgIDB4MzFlYjk1YzAxNTdjOiBtb3YgMHgzMTAoJXJkeCwlcmJ4LDgpLCAlcmF4CiAgICAg
ICAgICAweDMxZWI5NWMwMTU4NDogbW92ICVyYXgsIDB4MTAoJXIxMykKICAgICAgICAgIDB4MzFl
Yjk1YzAxNTg4OiBtb3YgJXJheCwgMHg3ZjllY2MwMGUwYjgKICAgIFsgIDUzXSByZXNvbHZlCQkg
cjMsIGkoQGlkMSksIDIKICAgICAgICAgIDB4MzFlYjk1YzAxNTkyOiBtb3YgLTB4MTgoJXIxMyks
ICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAxNTk2OiBtb3YgMHgxMTAyZGYxZDgsICVyYXgKICAg
ICAgICAgIDB4MzFlYjk1YzAxNWEwOiBtb3YgJXJheCwgMHgxOCglcjEzKQogICAgICAgICAgMHgz
MWViOTVjMDE1YTQ6IG1vdiAlcmF4LCAweDdmOWVjYzAwZTBlMAogICAgWyAgNThdIGJpdGFuZAkJ
IHIwLCByMiwgcjMKICAgICAgICAgIDB4MzFlYjk1YzAxNWFlOiBtb3YgJXJheCwgJXJkeAogICAg
ICAgICAgMHgzMWViOTVjMDE1YjE6IG1vdiAweDEwKCVyMTMpLCAlcmF4CiAgICAgICAgICAweDMx
ZWI5NWMwMTViNTogYW5kICVyZHgsICVyYXgKICAgICAgICAgIDB4MzFlYjk1YzAxNWI4OiBjbXAg
JXIxNCwgJXJheAogICAgICAgICAgMHgzMWViOTVjMDE1YmI6IGpiIDB4MzFlYjk1YzAxOGQzCiAg
ICAgICAgICAweDMxZWI5NWMwMTVjMTogbW92ICVyYXgsIDB4MCglcjEzKQogICAgWyAgNjNdIHB1
dF90b19iYXNlCSByMSwgYml0d2lzZUFuZFZhbHVlKEBpZDApLCByMCwgMQogICAgICAgICAgMHgz
MWViOTVjMDE1YzU6IG1vdiAlcmF4LCAlcmR4CiAgICAgICAgICAweDMxZWI5NWMwMTVjODogbW92
IDB4OCglcjEzKSwgJXJheAogICAgICAgICAgMHgzMWViOTVjMDE1Y2M6IG1vdiAkMHg3ZjllY2Vj
MDA3OTAsICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAxNWQ2OiBtb3YgKCVyY3gpLCAlcmN4CiAg
ICAgICAgICAweDMxZWI5NWMwMTVkOTogY21wICVyY3gsICglcmF4KQogICAgICAgICAgMHgzMWVi
OTVjMDE1ZGM6IGpueiAweDMxZWI5NWMwMTkyMgogICAgICAgICAgMHgzMWViOTVjMDE1ZTI6IG1v
diAweDgoJXJheCksICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAxNWU2OiBtb3YgJDB4N2Y5ZWNl
YzAwNzljLCAlcmJ4CiAgICAgICAgICAweDMxZWI5NWMwMTVmMDogbW92ICglcmJ4KSwgJWVieAog
ICAgICAgICAgMHgzMWViOTVjMDE1ZjI6IG1vdnN4ZCAlZWJ4LCAlcmJ4CiAgICAgICAgICAweDMx
ZWI5NWMwMTVmNTogbW92ICVyZHgsICglcmN4LCVyYngsOCkKICAgIFsgIDY4XSByZXNvbHZlX3dp
dGhfYmFzZSByMiwgcjEsIGkoQGlkMSksIDQsIDIKICAgICAgICAgIDB4MzFlYjk1YzAxNWY5OiBt
b3YgLTB4MTgoJXIxMyksICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAxNWZkOiBtb3YgJDB4MTEw
MmRmMTgwLCAlcmJ4CiAgICAgICAgICAweDMxZWI5NWMwMTYwNzogbW92ICVyYngsIDB4MTAoJXIx
MykKICAgICAgICAgIDB4MzFlYjk1YzAxNjBiOiBtb3YgMHgxMTAyZGYxZDgsICVyYXgKICAgICAg
ICAgIDB4MzFlYjk1YzAxNjE1OiBtb3YgJXJheCwgMHg4KCVyMTMpCiAgICAgICAgICAweDMxZWI5
NWMwMTYxOTogbW92ICVyYXgsIDB4N2Y5ZWNjMDBlMTA4CiAgICBbICA3NV0gcHJlX2luYwkJIHIx
CiAgICAgICAgICAweDMxZWI5NWMwMTYyMzogY21wICVyMTQsICVyYXgKICAgICAgICAgIDB4MzFl
Yjk1YzAxNjI2OiBqYiAweDMxZWI5NWMwMTk5MQogICAgICAgICAgMHgzMWViOTVjMDE2MmM6IGFk
ZCAkMHgxLCAlZWF4CiAgICAgICAgICAweDMxZWI5NWMwMTYyZjogam8gMHgzMWViOTVjMDE5OGQK
ICAgICAgICAgIDB4MzFlYjk1YzAxNjM1OiBvciAlcjE0LCAlcmF4CiAgICAgICAgICAweDMxZWI5
NWMwMTYzODogbW92ICVyYXgsIDB4OCglcjEzKQogICAgWyAgNzddIHB1dF90b19iYXNlCSByMiwg
aShAaWQxKSwgcjEsIDIKICAgICAgICAgIDB4MzFlYjk1YzAxNjNjOiBtb3YgJXJheCwgMHgxMTAy
ZGYxZDgKICAgIFsgIDgyXSByZXNvbHZlCQkgcjEsIGkoQGlkMSksIDIKICAgICAgICAgIDB4MzFl
Yjk1YzAxNjQ2OiBtb3YgLTB4MTgoJXIxMyksICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAxNjRh
OiBtb3YgMHgxMTAyZGYxZDgsICVyYXgKICAgICAgICAgIDB4MzFlYjk1YzAxNjU0OiBtb3YgJXJh
eCwgMHg4KCVyMTMpCiAgICAgICAgICAweDMxZWI5NWMwMTY1ODogbW92ICVyYXgsIDB4N2Y5ZWNj
MDBlMTMwCiAgICBbICA4N10gbG9vcF9pZl9sZXNzCSByMSwgSW50MzI6IDYwMDAwMChAazMpLCAt
NDcoLT40MCkKICAgICAgICAgIDB4MzFlYjk1YzAxNjYyOiBzdWIgJDB4MSwgJXIxMmQKICAgICAg
ICAgIDB4MzFlYjk1YzAxNjY2OiBqbnogMHgzMWViOTVjMDE2OTkKICAgICAgICAgIDB4MzFlYjk1
YzAxNjZjOiBtb3YgJXJzcCwgJXJkaQogICAgICAgICAgMHgzMWViOTVjMDE2NmY6IG1vdiAlcjEz
LCAweDU4KCVyc3ApCiAgICAgICAgICAweDMxZWI5NWMwMTY3NDogbW92ICQweDU4LCAtMHgyYygl
cjEzKQogICAgICAgICAgMHgzMWViOTVjMDE2N2M6IG1vdiAkMHg3ZjllY2IwMGI0YjAsICVyMTEK
ICAgICAgICAgIDB4MzFlYjk1YzAxNjg2OiBtb3YgJXIxMywgKCVyMTEpCiAgICAgICAgICAweDMx
ZWI5NWMwMTY4OTogbW92ICQweDEwZWJjODQ1MCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE2
OTM6IGNhbGwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE2OTY6IG1vdiAlcmF4LCAlcjEyCiAg
ICAgICAgICAweDMxZWI5NWMwMTY5OTogbW92IDB4OCglcjEzKSwgJXJheAogICAgICAgICAgMHgz
MWViOTVjMDE2OWQ6IGNtcCAlcjE0LCAlcmF4CiAgICAgICAgICAweDMxZWI5NWMwMTZhMDogamIg
MHgzMWViOTVjMDE5ZDcKICAgICAgICAgIDB4MzFlYjk1YzAxNmE2OiBtb3YgJDB4MWI2ZTNiLCAl
cjExZAogICAgICAgICAgMHgzMWViOTVjMDE2YWM6IHhvciAkMHgxMjQ5ZmIsICVyMTFkCiAgICAg
ICAgICAweDMxZWI5NWMwMTZiMzogY21wICVyMTFkLCAlZWF4CiAgICAgICAgICAweDMxZWI5NWMw
MTZiNjogamwgMHgzMWViOTVjMDE0ZGYKICAgIFsgIDkxXSByZXNvbHZlX2Jhc2UJIHIxLCByZXN1
bHQoQGlkMiksIDUsIDMKICAgICAgICAgIDB4MzFlYjk1YzAxNmJjOiBqbXAgMHgzMWViOTVjMDFh
NjMKICAgIFsgIDk4XSByZXNvbHZlCQkgcjIsIGJpdHdpc2VBbmRWYWx1ZShAaWQwKSwgMwogICAg
ICAgICAgMHgzMWViOTVjMDE2YzE6IG1vdiAtMHgxOCglcjEzKSwgJXJjeAogICAgICAgICAgMHgz
MWViOTVjMDE2YzU6IG1vdiAkMHgxMTAyZGYxODAsICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAx
NmNmOiBtb3YgJDB4N2Y5ZWNlYzAwYWUwLCAlcmJ4CiAgICAgICAgICAweDMxZWI5NWMwMTZkOTog
bW92IDB4OCglcmJ4KSwgJXJkeAogICAgICAgICAgMHgzMWViOTVjMDE2ZGQ6IGNtcCAoJXJjeCks
ICVyZHgKICAgICAgICAgIDB4MzFlYjk1YzAxNmUwOiBqbnogMHgzMWViOTVjMDFhZGIKICAgICAg
ICAgIDB4MzFlYjk1YzAxNmU2OiBtb3YgMHgxMCglcmJ4KSwgJWVieAogICAgICAgICAgMHgzMWVi
OTVjMDE2ZTk6IGNtcCAkMHg2NCwgJWVieAogICAgICAgICAgMHgzMWViOTVjMDE2ZWM6IGpnZSAw
eDMxZWI5NWMwMTZmMwogICAgICAgICAgMHgzMWViOTVjMDE2ZjI6IGludDMgCiAgICAgICAgICAw
eDMxZWI5NWMwMTZmMzogbW92IDB4OCglcmN4KSwgJXJkeAogICAgICAgICAgMHgzMWViOTVjMDE2
Zjc6IG5lZyAlZWJ4CiAgICAgICAgICAweDMxZWI5NWMwMTZmOTogbW92c3hkICVlYngsICVyYngK
ICAgICAgICAgIDB4MzFlYjk1YzAxNmZjOiBtb3YgMHgzMTAoJXJkeCwlcmJ4LDgpLCAlcmF4CiAg
ICAgICAgICAweDMxZWI5NWMwMTcwNDogbW92ICVyYXgsIDB4MTAoJXIxMykKICAgICAgICAgIDB4
MzFlYjk1YzAxNzA4OiBtb3YgJXJheCwgMHg3ZjllY2VjMDA0ZDgKICAgIFsgMTAzXSBwdXRfdG9f
YmFzZQkgcjEsIHJlc3VsdChAaWQyKSwgcjIsIDMKICAgICAgICAgIDB4MzFlYjk1YzAxNzEyOiBt
b3YgJDB4MSwgMHg4KCVyc3ApCiAgICAgICAgICAweDMxZWI5NWMwMTcxYTogbW92ICQweDdmOWVj
ZWMwMDM5MCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE3MjQ6IG1vdiAlcjExLCAweDEwKCVy
c3ApCiAgICAgICAgICAweDMxZWI5NWMwMTcyOTogbW92ICQweDIsIDB4MTgoJXJzcCkKICAgICAg
ICAgIDB4MzFlYjk1YzAxNzMxOiBtb3YgJDB4N2Y5ZWNlYzAwN2MwLCAlcjExCiAgICAgICAgICAw
eDMxZWI5NWMwMTczYjogbW92ICVyMTEsIDB4MjAoJXJzcCkKICAgICAgICAgIDB4MzFlYjk1YzAx
NzQwOiBtb3YgJXJzcCwgJXJkaQogICAgICAgICAgMHgzMWViOTVjMDE3NDM6IG1vdiAlcjEzLCAw
eDU4KCVyc3ApCiAgICAgICAgICAweDMxZWI5NWMwMTc0ODogbW92ICQweDY4LCAtMHgyYyglcjEz
KQogICAgICAgICAgMHgzMWViOTVjMDE3NTA6IG1vdiAkMHg3ZjllY2IwMGI0YjAsICVyMTEKICAg
ICAgICAgIDB4MzFlYjk1YzAxNzVhOiBtb3YgJXIxMywgKCVyMTEpCiAgICAgICAgICAweDMxZWI5
NWMwMTc1ZDogbW92ICQweDEwZWJjYzY0MCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE3Njc6
IGNhbGwgJXIxMQogICAgWyAxMDhdIGVuZAkJIHIwCiAgICAgICAgICAweDMxZWI5NWMwMTc2YTog
bW92IDB4MCglcjEzKSwgJXJheAogICAgICAgICAgMHgzMWViOTVjMDE3NmU6IHB1c2ggLTB4MTAo
JXIxMykKICAgICAgICAgIDB4MzFlYjk1YzAxNzcyOiByZXQgCiAgICAoRW5kIE9mIE1haW4gUGF0
aCkKICAgIChTKSBbICAxNF0gcHV0X3RvX2Jhc2UJIHIxLCBiaXR3aXNlQW5kVmFsdWUoQGlkMCks
IHIwLCAxCiAgICAgICAgICAweDMxZWI5NWMwMTc3MzogbW92ICQweDEsIDB4OCglcnNwKQogICAg
ICAgICAgMHgzMWViOTVjMDE3N2I6IG1vdiAkMHg3ZjllY2VjMDAzODAsICVyMTEKICAgICAgICAg
IDB4MzFlYjk1YzAxNzg1OiBtb3YgJXIxMSwgMHgxMCglcnNwKQogICAgICAgICAgMHgzMWViOTVj
MDE3OGE6IG1vdiAkMHgwLCAweDE4KCVyc3ApCiAgICAgICAgICAweDMxZWI5NWMwMTc5MjogbW92
ICQweDdmOWVjZWMwMDc4MCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE3OWM6IG1vdiAlcjEx
LCAweDIwKCVyc3ApCiAgICAgICAgICAweDMxZWI5NWMwMTdhMTogbW92ICVyc3AsICVyZGkKICAg
ICAgICAgIDB4MzFlYjk1YzAxN2E0OiBtb3YgJXIxMywgMHg1OCglcnNwKQogICAgICAgICAgMHgz
MWViOTVjMDE3YTk6IG1vdiAkMHhmLCAtMHgyYyglcjEzKQogICAgICAgICAgMHgzMWViOTVjMDE3
YjE6IG1vdiAkMHg3ZjllY2IwMGI0YjAsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxN2JiOiBt
b3YgJXIxMywgKCVyMTEpCiAgICAgICAgICAweDMxZWI5NWMwMTdiZTogbW92ICQweDEwZWJjYzY0
MCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE3Yzg6IGNhbGwgJXIxMQogICAgICAgICAgMHgz
MWViOTVjMDE3Y2I6IG1vdiAkMHg3ZjllY2MwMGUyN2MsICVyMTEKICAgICAgICAgIDB4MzFlYjk1
YzAxN2Q1OiBhZGQgJDB4MSwgKCVyMTEpCiAgICAgICAgICAweDMxZWI5NWMwMTdkOTogam1wIDB4
MzFlYjk1YzAxNDcwCiAgICAoUykgWyAgMzZdIGpubGVzcwkJIHIxLCBJbnQzMjogNjAwMDAwKEBr
MyksIDU1KC0+OTEpCiAgICAgICAgICAweDMxZWI5NWMwMTdkZTogdGVzdCAlcmF4LCAlcjE0CiAg
ICAgICAgICAweDMxZWI5NWMwMTdlMToganogMHgzMWViOTVjMDE4MGQKICAgICAgICAgIDB4MzFl
Yjk1YzAxN2U3OiBhZGQgJXIxNCwgJXJheAogICAgICAgICAgMHgzMWViOTVjMDE3ZWE6IG1vdmQg
JXJheCwgJXhtbTAKICAgICAgICAgIDB4MzFlYjk1YzAxN2VmOiBtb3YgJDB4YzFmYjE0LCAlZWR4
CiAgICAgICAgICAweDMxZWI5NWMwMTdmNDogeG9yICQweGM4ZGNkNCwgJWVkeAogICAgICAgICAg
MHgzMWViOTVjMDE3ZmE6IGN2dHNpMnNkICVlZHgsICV4bW0xCiAgICAgICAgICAweDMxZWI5NWMw
MTdmZTogdWNvbWlzZCAleG1tMCwgJXhtbTEKICAgICAgICAgIDB4MzFlYjk1YzAxODAyOiBqYmUg
MHgzMWViOTVjMDE2YmMKICAgICAgICAgIDB4MzFlYjk1YzAxODA4OiBqbXAgMHgzMWViOTVjMDE0
ZGYKICAgICAgICAgIDB4MzFlYjk1YzAxODBkOiBtb3YgJXJheCwgMHg4KCVyc3ApCiAgICAgICAg
ICAweDMxZWI5NWMwMTgxMjogbW92ICQweDI0OWYwM2ZmZmMwMDAsICVyMTEKICAgICAgICAgIDB4
MzFlYjk1YzAxODFjOiByb3IgJDB4MWUsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxODIwOiBt
b3YgJXIxMSwgMHgxMCglcnNwKQogICAgICAgICAgMHgzMWViOTVjMDE4MjU6IG1vdiAlcnNwLCAl
cmRpCiAgICAgICAgICAweDMxZWI5NWMwMTgyODogbW92ICVyMTMsIDB4NTgoJXJzcCkKICAgICAg
ICAgIDB4MzFlYjk1YzAxODJkOiBtb3YgJDB4MjUsIC0weDJjKCVyMTMpCiAgICAgICAgICAweDMx
ZWI5NWMwMTgzNTogbW92ICQweDdmOWVjYjAwYjRiMCwgJXIxMQogICAgICAgICAgMHgzMWViOTVj
MDE4M2Y6IG1vdiAlcjEzLCAoJXIxMSkKICAgICAgICAgIDB4MzFlYjk1YzAxODQyOiBtb3YgJDB4
MTBlYmNlYmEwLCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMTg0YzogY2FsbCAlcjExCiAgICAg
ICAgICAweDMxZWI5NWMwMTg0ZjogdGVzdCAlZWF4LCAlZWF4CiAgICAgICAgICAweDMxZWI5NWMw
MTg1MToganogMHgzMWViOTVjMDE2YmMKICAgICAgICAgIDB4MzFlYjk1YzAxODU3OiBtb3YgJDB4
N2Y5ZWNjMDBlMjg0LCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMTg2MTogYWRkICQweDEsICgl
cjExKQogICAgICAgICAgMHgzMWViOTVjMDE4NjU6IGptcCAweDMxZWI5NWMwMTRkZgogICAgKFMp
IFsgIDQ4XSByZXNvbHZlCQkgcjIsIGJpdHdpc2VBbmRWYWx1ZShAaWQwKSwgMwogICAgICAgICAg
MHgzMWViOTVjMDE4NmE6IG1vdiAkMHg3ZjllY2VjMDAzODAsICVyMTEKICAgICAgICAgIDB4MzFl
Yjk1YzAxODc0OiBtb3YgJXIxMSwgMHg4KCVyc3ApCiAgICAgICAgICAweDMxZWI5NWMwMTg3OTog
bW92ICQweDdmOWVjZWMwMDYyOCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE4ODM6IG1vdiAl
cjExLCAweDEwKCVyc3ApCiAgICAgICAgICAweDMxZWI5NWMwMTg4ODogbW92ICVyc3AsICVyZGkK
ICAgICAgICAgIDB4MzFlYjk1YzAxODhiOiBtb3YgJXIxMywgMHg1OCglcnNwKQogICAgICAgICAg
MHgzMWViOTVjMDE4OTA6IG1vdiAkMHgzMSwgLTB4MmMoJXIxMykKICAgICAgICAgIDB4MzFlYjk1
YzAxODk4OiBtb3YgJDB4N2Y5ZWNiMDBiNGIwLCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMThh
MjogbW92ICVyMTMsICglcjExKQogICAgICAgICAgMHgzMWViOTVjMDE4YTU6IG1vdiAkMHgxMGVi
Y2M1NDAsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxOGFmOiBjYWxsICVyMTEKICAgICAgICAg
IDB4MzFlYjk1YzAxOGIyOiBtb3YgJXJheCwgMHg3ZjllY2MwMGUwYjgKICAgICAgICAgIDB4MzFl
Yjk1YzAxOGJjOiBtb3YgJXJheCwgMHgxMCglcjEzKQogICAgICAgICAgMHgzMWViOTVjMDE4YzA6
IG1vdiAkMHg3ZjllY2MwMGUyOGMsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxOGNhOiBhZGQg
JDB4MSwgKCVyMTEpCiAgICAgICAgICAweDMxZWI5NWMwMThjZTogam1wIDB4MzFlYjk1YzAxNTky
CiAgICAoUykgWyAgNThdIGJpdGFuZAkJIHIwLCByMiwgcjMKICAgICAgICAgIDB4MzFlYjk1YzAx
OGQzOiBtb3YgMHgxMCglcjEzKSwgJXJjeAogICAgICAgICAgMHgzMWViOTVjMDE4ZDc6IG1vdiAl
cmN4LCAweDgoJXJzcCkKICAgICAgICAgIDB4MzFlYjk1YzAxOGRjOiBtb3YgJXJkeCwgMHgxMCgl
cnNwKQogICAgICAgICAgMHgzMWViOTVjMDE4ZTE6IG1vdiAlcnNwLCAlcmRpCiAgICAgICAgICAw
eDMxZWI5NWMwMThlNDogbW92ICVyMTMsIDB4NTgoJXJzcCkKICAgICAgICAgIDB4MzFlYjk1YzAx
OGU5OiBtb3YgJDB4M2IsIC0weDJjKCVyMTMpCiAgICAgICAgICAweDMxZWI5NWMwMThmMTogbW92
ICQweDdmOWVjYjAwYjRiMCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE4ZmI6IG1vdiAlcjEz
LCAoJXIxMSkKICAgICAgICAgIDB4MzFlYjk1YzAxOGZlOiBtb3YgJDB4MTBlYmNmNTIwLCAlcjEx
CiAgICAgICAgICAweDMxZWI5NWMwMTkwODogY2FsbCAlcjExCiAgICAgICAgICAweDMxZWI5NWMw
MTkwYjogbW92ICVyYXgsIDB4MCglcjEzKQogICAgICAgICAgMHgzMWViOTVjMDE5MGY6IG1vdiAk
MHg3ZjllY2MwMGUyOTQsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxOTE5OiBhZGQgJDB4MSwg
KCVyMTEpCiAgICAgICAgICAweDMxZWI5NWMwMTkxZDogam1wIDB4MzFlYjk1YzAxNWM1CiAgICAo
UykgWyAgNjNdIHB1dF90b19iYXNlCSByMSwgYml0d2lzZUFuZFZhbHVlKEBpZDApLCByMCwgMQog
ICAgICAgICAgMHgzMWViOTVjMDE5MjI6IG1vdiAkMHgxLCAweDgoJXJzcCkKICAgICAgICAgIDB4
MzFlYjk1YzAxOTJhOiBtb3YgJDB4N2Y5ZWNlYzAwMzgwLCAlcjExCiAgICAgICAgICAweDMxZWI5
NWMwMTkzNDogbW92ICVyMTEsIDB4MTAoJXJzcCkKICAgICAgICAgIDB4MzFlYjk1YzAxOTM5OiBt
b3YgJDB4MCwgMHgxOCglcnNwKQogICAgICAgICAgMHgzMWViOTVjMDE5NDE6IG1vdiAkMHg3Zjll
Y2VjMDA3ODAsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxOTRiOiBtb3YgJXIxMSwgMHgyMCgl
cnNwKQogICAgICAgICAgMHgzMWViOTVjMDE5NTA6IG1vdiAlcnNwLCAlcmRpCiAgICAgICAgICAw
eDMxZWI5NWMwMTk1MzogbW92ICVyMTMsIDB4NTgoJXJzcCkKICAgICAgICAgIDB4MzFlYjk1YzAx
OTU4OiBtb3YgJDB4NDAsIC0weDJjKCVyMTMpCiAgICAgICAgICAweDMxZWI5NWMwMTk2MDogbW92
ICQweDdmOWVjYjAwYjRiMCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE5NmE6IG1vdiAlcjEz
LCAoJXIxMSkKICAgICAgICAgIDB4MzFlYjk1YzAxOTZkOiBtb3YgJDB4MTBlYmNjNjQwLCAlcjEx
CiAgICAgICAgICAweDMxZWI5NWMwMTk3NzogY2FsbCAlcjExCiAgICAgICAgICAweDMxZWI5NWMw
MTk3YTogbW92ICQweDdmOWVjYzAwZTI5YywgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE5ODQ6
IGFkZCAkMHgxLCAoJXIxMSkKICAgICAgICAgIDB4MzFlYjk1YzAxOTg4OiBqbXAgMHgzMWViOTVj
MDE1ZjkKICAgIChTKSBbICA3NV0gcHJlX2luYwkJIHIxCiAgICAgICAgICAweDMxZWI5NWMwMTk4
ZDogbW92IDB4OCglcjEzKSwgJXJheAogICAgICAgICAgMHgzMWViOTVjMDE5OTE6IG1vdiAlcmF4
LCAweDgoJXJzcCkKICAgICAgICAgIDB4MzFlYjk1YzAxOTk2OiBtb3YgJXJzcCwgJXJkaQogICAg
ICAgICAgMHgzMWViOTVjMDE5OTk6IG1vdiAlcjEzLCAweDU4KCVyc3ApCiAgICAgICAgICAweDMx
ZWI5NWMwMTk5ZTogbW92ICQweDRjLCAtMHgyYyglcjEzKQogICAgICAgICAgMHgzMWViOTVjMDE5
YTY6IG1vdiAkMHg3ZjllY2IwMGI0YjAsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxOWIwOiBt
b3YgJXIxMywgKCVyMTEpCiAgICAgICAgICAweDMxZWI5NWMwMTliMzogbW92ICQweDEwZWJjODM2
MCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDE5YmQ6IGNhbGwgJXIxMQogICAgICAgICAgMHgz
MWViOTVjMDE5YzA6IG1vdiAlcmF4LCAweDgoJXIxMykKICAgICAgICAgIDB4MzFlYjk1YzAxOWM0
OiBtb3YgJDB4N2Y5ZWNjMDBlMmE0LCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMTljZTogYWRk
ICQweDEsICglcjExKQogICAgICAgICAgMHgzMWViOTVjMDE5ZDI6IGptcCAweDMxZWI5NWMwMTYz
YwogICAgKFMpIFsgIDg3XSBsb29wX2lmX2xlc3MJIHIxLCBJbnQzMjogNjAwMDAwKEBrMyksIC00
NygtPjQwKQogICAgICAgICAgMHgzMWViOTVjMDE5ZDc6IHRlc3QgJXJheCwgJXIxNAogICAgICAg
ICAgMHgzMWViOTVjMDE5ZGE6IGp6IDB4MzFlYjk1YzAxYTA2CiAgICAgICAgICAweDMxZWI5NWMw
MTllMDogYWRkICVyMTQsICVyYXgKICAgICAgICAgIDB4MzFlYjk1YzAxOWUzOiBtb3ZkICVyYXgs
ICV4bW0wCiAgICAgICAgICAweDMxZWI5NWMwMTllODogbW92ICQweDU2MTc5ZSwgJWVkeAogICAg
ICAgICAgMHgzMWViOTVjMDE5ZWQ6IHhvciAkMHg1ZjMwNWUsICVlZHgKICAgICAgICAgIDB4MzFl
Yjk1YzAxOWYzOiBjdnRzaTJzZCAlZWR4LCAleG1tMQogICAgICAgICAgMHgzMWViOTVjMDE5Zjc6
IHVjb21pc2QgJXhtbTAsICV4bW0xCiAgICAgICAgICAweDMxZWI5NWMwMTlmYjogamEgMHgzMWVi
OTVjMDE0ZGYKICAgICAgICAgIDB4MzFlYjk1YzAxYTAxOiBqbXAgMHgzMWViOTVjMDE2YmMKICAg
ICAgICAgIDB4MzFlYjk1YzAxYTA2OiBtb3YgJXJheCwgMHg4KCVyc3ApCiAgICAgICAgICAweDMx
ZWI5NWMwMWEwYjogbW92ICQweDRmODFmZmZlMDAwMDAwMTIsICVyMTEKICAgICAgICAgIDB4MzFl
Yjk1YzAxYTE1OiByb3IgJDB4MzEsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxYTE5OiBtb3Yg
JXIxMSwgMHgxMCglcnNwKQogICAgICAgICAgMHgzMWViOTVjMDFhMWU6IG1vdiAlcnNwLCAlcmRp
CiAgICAgICAgICAweDMxZWI5NWMwMWEyMTogbW92ICVyMTMsIDB4NTgoJXJzcCkKICAgICAgICAg
IDB4MzFlYjk1YzAxYTI2OiBtb3YgJDB4NTgsIC0weDJjKCVyMTMpCiAgICAgICAgICAweDMxZWI5
NWMwMWEyZTogbW92ICQweDdmOWVjYjAwYjRiMCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDFh
Mzg6IG1vdiAlcjEzLCAoJXIxMSkKICAgICAgICAgIDB4MzFlYjk1YzAxYTNiOiBtb3YgJDB4MTBl
YmNlYmEwLCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMWE0NTogY2FsbCAlcjExCiAgICAgICAg
ICAweDMxZWI5NWMwMWE0ODogdGVzdCAlZWF4LCAlZWF4CiAgICAgICAgICAweDMxZWI5NWMwMWE0
YTogam56IDB4MzFlYjk1YzAxNGRmCiAgICAgICAgICAweDMxZWI5NWMwMWE1MDogbW92ICQweDdm
OWVjYzAwZTJhYywgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDFhNWE6IGFkZCAkMHgxLCAoJXIx
MSkKICAgICAgICAgIDB4MzFlYjk1YzAxYTVlOiBqbXAgMHgzMWViOTVjMDE2YmMKICAgIChTKSBb
ICA5MV0gcmVzb2x2ZV9iYXNlCSByMSwgcmVzdWx0KEBpZDIpLCA1LCAzCiAgICAgICAgICAweDMx
ZWI5NWMwMWE2MzogbW92ICQweDdmOWVjZWMwMDM5MCwgJXIxMQogICAgICAgICAgMHgzMWViOTVj
MDFhNmQ6IG1vdiAlcjExLCAweDgoJXJzcCkKICAgICAgICAgIDB4MzFlYjk1YzAxYTcyOiBtb3Yg
JDB4N2Y5ZWNlYzAwNjU4LCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMWE3YzogbW92ICVyMTEs
IDB4MTAoJXJzcCkKICAgICAgICAgIDB4MzFlYjk1YzAxYTgxOiBtb3YgJDB4N2Y5ZWNlYzAwN2Mw
LCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMWE4YjogbW92ICVyMTEsIDB4MTgoJXJzcCkKICAg
ICAgICAgIDB4MzFlYjk1YzAxYTkwOiBtb3YgJXJzcCwgJXJkaQogICAgICAgICAgMHgzMWViOTVj
MDFhOTM6IG1vdiAlcjEzLCAweDU4KCVyc3ApCiAgICAgICAgICAweDMxZWI5NWMwMWE5ODogbW92
ICQweDVjLCAtMHgyYyglcjEzKQogICAgICAgICAgMHgzMWViOTVjMDFhYTA6IG1vdiAkMHg3Zjll
Y2IwMGI0YjAsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxYWFhOiBtb3YgJXIxMywgKCVyMTEp
CiAgICAgICAgICAweDMxZWI5NWMwMWFhZDogbW92ICQweDEwZWJjZTRkMCwgJXIxMQogICAgICAg
ICAgMHgzMWViOTVjMDFhYjc6IGNhbGwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDFhYmE6IG1v
diAlcmF4LCAweDdmOWVjZWMwMDRiMAogICAgICAgICAgMHgzMWViOTVjMDFhYzQ6IG1vdiAlcmF4
LCAweDgoJXIxMykKICAgICAgICAgIDB4MzFlYjk1YzAxYWM4OiBtb3YgJDB4N2Y5ZWNjMDBlMmI0
LCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMWFkMjogYWRkICQweDEsICglcjExKQogICAgICAg
ICAgMHgzMWViOTVjMDFhZDY6IGptcCAweDMxZWI5NWMwMTZjMQogICAgKFMpIFsgIDk4XSByZXNv
bHZlCQkgcjIsIGJpdHdpc2VBbmRWYWx1ZShAaWQwKSwgMwogICAgICAgICAgMHgzMWViOTVjMDFh
ZGI6IG1vdiAkMHg3ZjllY2VjMDAzODAsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxYWU1OiBt
b3YgJXIxMSwgMHg4KCVyc3ApCiAgICAgICAgICAweDMxZWI5NWMwMWFlYTogbW92ICQweDdmOWVj
ZWMwMDYyOCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDFhZjQ6IG1vdiAlcjExLCAweDEwKCVy
c3ApCiAgICAgICAgICAweDMxZWI5NWMwMWFmOTogbW92ICVyc3AsICVyZGkKICAgICAgICAgIDB4
MzFlYjk1YzAxYWZjOiBtb3YgJXIxMywgMHg1OCglcnNwKQogICAgICAgICAgMHgzMWViOTVjMDFi
MDE6IG1vdiAkMHg2MywgLTB4MmMoJXIxMykKICAgICAgICAgIDB4MzFlYjk1YzAxYjA5OiBtb3Yg
JDB4N2Y5ZWNiMDBiNGIwLCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMWIxMzogbW92ICVyMTMs
ICglcjExKQogICAgICAgICAgMHgzMWViOTVjMDFiMTY6IG1vdiAkMHgxMGViY2M1NDAsICVyMTEK
ICAgICAgICAgIDB4MzFlYjk1YzAxYjIwOiBjYWxsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAx
YjIzOiBtb3YgJXJheCwgMHg3ZjllY2VjMDA0ZDgKICAgICAgICAgIDB4MzFlYjk1YzAxYjJkOiBt
b3YgJXJheCwgMHgxMCglcjEzKQogICAgICAgICAgMHgzMWViOTVjMDFiMzE6IG1vdiAkMHg3Zjll
Y2VjMDBhMGMsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxYjNiOiBhZGQgJDB4MSwgKCVyMTEp
CiAgICAgICAgICAweDMxZWI5NWMwMWIzZjogam1wIDB4MzFlYjk1YzAxNzEyCiAgICAoRW5kIE9m
IFNsb3cgUGF0aCkKR2VuZXJhdGVkIEpJVCBjb2RlIGZvciBERkcgT1NSIGV4aXQgZ2VuZXJhdGlv
biB0aHVuazoKICAgIENvZGUgYXQgWzB4MzFlYjk1YzAxZDgwLCAweDMxZWI5NWMwMWY2MCk6CiAg
ICAgIDB4MzFlYjk1YzAxZDgwOiBtb3YgJXJheCwgMHg3ZjllY2FlMDI2NzgKICAgICAgMHgzMWVi
OTVjMDFkOGE6IG1vdiAkMHg3ZjllY2FlMDI2ODAsICVyMTEKICAgICAgMHgzMWViOTVjMDFkOTQ6
IG1vdiAlcmR4LCAoJXIxMSkKICAgICAgMHgzMWViOTVjMDFkOTc6IG1vdiAkMHg3ZjllY2FlMDI2
ODgsICVyMTEKICAgICAgMHgzMWViOTVjMDFkYTE6IG1vdiAlcmN4LCAoJXIxMSkKICAgICAgMHgz
MWViOTVjMDFkYTQ6IG1vdiAkMHg3ZjllY2FlMDI2OTAsICVyMTEKICAgICAgMHgzMWViOTVjMDFk
YWU6IG1vdiAlcmJ4LCAoJXIxMSkKICAgICAgMHgzMWViOTVjMDFkYjE6IG1vdiAkMHg3ZjllY2Fl
MDI2OTgsICVyMTEKICAgICAgMHgzMWViOTVjMDFkYmI6IG1vdiAlcmRpLCAoJXIxMSkKICAgICAg
MHgzMWViOTVjMDFkYmU6IG1vdiAkMHg3ZjllY2FlMDI2YTAsICVyMTEKICAgICAgMHgzMWViOTVj
MDFkYzg6IG1vdiAlcnNpLCAoJXIxMSkKICAgICAgMHgzMWViOTVjMDFkY2I6IG1vdiAkMHg3Zjll
Y2FlMDI2YTgsICVyMTEKICAgICAgMHgzMWViOTVjMDFkZDU6IG1vdiAlcjgsICglcjExKQogICAg
ICAweDMxZWI5NWMwMWRkODogbW92ICQweDdmOWVjYWUwMjZiMCwgJXIxMQogICAgICAweDMxZWI5
NWMwMWRlMjogbW92ICVyOSwgKCVyMTEpCiAgICAgIDB4MzFlYjk1YzAxZGU1OiBtb3YgJDB4N2Y5
ZWNhZTAyNmI4LCAlcjExCiAgICAgIDB4MzFlYjk1YzAxZGVmOiBtb3YgJXIxMCwgKCVyMTEpCiAg
ICAgIDB4MzFlYjk1YzAxZGYyOiBtb3YgJDB4N2Y5ZWNhZTAyNmMwLCAlcmF4CiAgICAgIDB4MzFl
Yjk1YzAxZGZjOiBtb3ZzZCAleG1tMCwgKCVyYXgpCiAgICAgIDB4MzFlYjk1YzAxZTAwOiBtb3Yg
JDB4N2Y5ZWNhZTAyNmM4LCAlcmF4CiAgICAgIDB4MzFlYjk1YzAxZTBhOiBtb3ZzZCAleG1tMSwg
KCVyYXgpCiAgICAgIDB4MzFlYjk1YzAxZTBlOiBtb3YgJDB4N2Y5ZWNhZTAyNmQwLCAlcmF4CiAg
ICAgIDB4MzFlYjk1YzAxZTE4OiBtb3ZzZCAleG1tMiwgKCVyYXgpCiAgICAgIDB4MzFlYjk1YzAx
ZTFjOiBtb3YgJDB4N2Y5ZWNhZTAyNmQ4LCAlcmF4CiAgICAgIDB4MzFlYjk1YzAxZTI2OiBtb3Zz
ZCAleG1tMywgKCVyYXgpCiAgICAgIDB4MzFlYjk1YzAxZTJhOiBtb3YgJDB4N2Y5ZWNhZTAyNmUw
LCAlcmF4CiAgICAgIDB4MzFlYjk1YzAxZTM0OiBtb3ZzZCAleG1tNCwgKCVyYXgpCiAgICAgIDB4
MzFlYjk1YzAxZTM4OiBtb3YgJDB4N2Y5ZWNhZTAyNmU4LCAlcmF4CiAgICAgIDB4MzFlYjk1YzAx
ZTQyOiBtb3ZzZCAleG1tNSwgKCVyYXgpCiAgICAgIDB4MzFlYjk1YzAxZTQ2OiBtb3YgJDB4N2Y5
ZWNhZTAyNjcwLCAlcmF4CiAgICAgIDB4MzFlYjk1YzAxZTUwOiBtb3YgJDB4NzgsICVyMTEKICAg
ICAgMHgzMWViOTVjMDFlNWE6IG1vdiAlcjExLCAoJXJheCkKICAgICAgMHgzMWViOTVjMDFlNWQ6
IG1vdiAlcjEzLCAlcmRpCiAgICAgIDB4MzFlYjk1YzAxZTYwOiBtb3YgJDB4MTBlYWViYzgwLCAl
cjExCiAgICAgIDB4MzFlYjk1YzAxZTZhOiBjYWxsICVyMTEKICAgICAgMHgzMWViOTVjMDFlNmQ6
IG1vdiAkMHg3ZjllY2FlMDI2NzAsICVyYXgKICAgICAgMHgzMWViOTVjMDFlNzc6IG1vdiAkMHgw
LCAlcjExCiAgICAgIDB4MzFlYjk1YzAxZTgxOiBtb3YgJXIxMSwgKCVyYXgpCiAgICAgIDB4MzFl
Yjk1YzAxZTg0OiBtb3YgJDB4N2Y5ZWNhZTAyNmMwLCAlcmF4CiAgICAgIDB4MzFlYjk1YzAxZThl
OiBtb3ZzZCAoJXJheCksICV4bW0wCiAgICAgIDB4MzFlYjk1YzAxZTkyOiBtb3YgJDB4N2Y5ZWNh
ZTAyNmM4LCAlcmF4CiAgICAgIDB4MzFlYjk1YzAxZTljOiBtb3ZzZCAoJXJheCksICV4bW0xCiAg
ICAgIDB4MzFlYjk1YzAxZWEwOiBtb3YgJDB4N2Y5ZWNhZTAyNmQwLCAlcmF4CiAgICAgIDB4MzFl
Yjk1YzAxZWFhOiBtb3ZzZCAoJXJheCksICV4bW0yCiAgICAgIDB4MzFlYjk1YzAxZWFlOiBtb3Yg
JDB4N2Y5ZWNhZTAyNmQ4LCAlcmF4CiAgICAgIDB4MzFlYjk1YzAxZWI4OiBtb3ZzZCAoJXJheCks
ICV4bW0zCiAgICAgIDB4MzFlYjk1YzAxZWJjOiBtb3YgJDB4N2Y5ZWNhZTAyNmUwLCAlcmF4CiAg
ICAgIDB4MzFlYjk1YzAxZWM2OiBtb3ZzZCAoJXJheCksICV4bW00CiAgICAgIDB4MzFlYjk1YzAx
ZWNhOiBtb3YgJDB4N2Y5ZWNhZTAyNmU4LCAlcmF4CiAgICAgIDB4MzFlYjk1YzAxZWQ0OiBtb3Zz
ZCAoJXJheCksICV4bW01CiAgICAgIDB4MzFlYjk1YzAxZWQ4OiBtb3YgMHg3ZjllY2FlMDI2Nzgs
ICVyYXgKICAgICAgMHgzMWViOTVjMDFlZTI6IG1vdiAkMHg3ZjllY2FlMDI2ODAsICVyZHgKICAg
ICAgMHgzMWViOTVjMDFlZWM6IG1vdiAoJXJkeCksICVyZHgKICAgICAgMHgzMWViOTVjMDFlZWY6
IG1vdiAkMHg3ZjllY2FlMDI2ODgsICVyY3gKICAgICAgMHgzMWViOTVjMDFlZjk6IG1vdiAoJXJj
eCksICVyY3gKICAgICAgMHgzMWViOTVjMDFlZmM6IG1vdiAkMHg3ZjllY2FlMDI2OTAsICVyYngK
ICAgICAgMHgzMWViOTVjMDFmMDY6IG1vdiAoJXJieCksICVyYngKICAgICAgMHgzMWViOTVjMDFm
MDk6IG1vdiAkMHg3ZjllY2FlMDI2OTgsICVyZGkKICAgICAgMHgzMWViOTVjMDFmMTM6IG1vdiAo
JXJkaSksICVyZGkKICAgICAgMHgzMWViOTVjMDFmMTY6IG1vdiAkMHg3ZjllY2FlMDI2YTAsICVy
c2kKICAgICAgMHgzMWViOTVjMDFmMjA6IG1vdiAoJXJzaSksICVyc2kKICAgICAgMHgzMWViOTVj
MDFmMjM6IG1vdiAkMHg3ZjllY2FlMDI2YTgsICVyOAogICAgICAweDMxZWI5NWMwMWYyZDogbW92
ICglcjgpLCAlcjgKICAgICAgMHgzMWViOTVjMDFmMzA6IG1vdiAkMHg3ZjllY2FlMDI2YjAsICVy
OQogICAgICAweDMxZWI5NWMwMWYzYTogbW92ICglcjkpLCAlcjkKICAgICAgMHgzMWViOTVjMDFm
M2Q6IG1vdiAkMHg3ZjllY2FlMDI2YjgsICVyMTAKICAgICAgMHgzMWViOTVjMDFmNDc6IG1vdiAo
JXIxMCksICVyMTAKICAgICAgMHgzMWViOTVjMDFmNGE6IG1vdiAkMHg3ZjllY2IwMGNlMzgsICVy
MTEKICAgICAgMHgzMWViOTVjMDFmNTQ6IGptcCAoJXIxMSkKR2VuZXJhdGVkIEpJVCBjb2RlIGZv
ciBEaUJTdnk6WzB4N2Y5ZWNmMDA0MjAwLCBERkdHbG9iYWxdLCBpbnN0cnVjdGlvbiBjb3VudCA9
IDExMDoKICAgIENvZGUgYXQgWzB4MzFlYjk1YzAxYjYwLCAweDMxZWI5NWMwMWQ2MSk6CiAgICAg
ICAgICAweDMxZWI5NWMwMWI2MDogcG9wICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAxYjYxOiBt
b3YgJXJjeCwgLTB4MTAoJXIxMykKICAgICAgICAgIDB4MzFlYjk1YzAxYjY1OiBtb3YgJDB4N2Y5
ZWNmMDA0MjAwLCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMWI2ZjogbW92ICVyMTEsIC0weDgo
JXIxMykKICAgIEJsb2NrICMwIChiYyMwKTogIChPU1IgdGFyZ2V0KQogICAgICBQcmVkZWNlc3Nv
cnM6CiAgICAgIERvbWluYXRlZCBieTogIzAKICAgICAgRG9taW5hdGVzOiAjMCAjMSAjMwogICAg
ICBQaGkgTm9kZXM6CiAgICAgICAgICAweDMxZWI5NWMwMWI3MzogdGVzdCAkMHg3LCAlcjEzYgog
ICAgICAgICAgMHgzMWViOTVjMDFiNzc6IGp6IDB4MzFlYjk1YzAxYjdlCiAgICAgICAgICAweDMx
ZWI5NWMwMWI3ZDogaW50MyAKICAgICAgIDI6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDEs
IDxlbXB0eT4sIHIwKEIpLCBiYyMxKQogICAgICAgMzogICAgICAgICAgIDwgMzoxPglXZWFrSlND
b25zdGFudChKU3xVc2VBc090aGVyLCAweDExMDJkZjE4MCwgYmMjNCkKICAgICAgIDQ6ICBza2lw
cGVkICA8IDA6LT4JU2V0TG9jYWwoQDM8T2JqZWN0PiwgPGVtcHR5PiwgcjEoQyksIGJjIzQpCiAg
ICAgICA1OiAgICAgICAgICAgPCAyOjI+CUpTQ29uc3RhbnQoSlN8VXNlQXNPdGhlciwgJDEgPSBE
b3VibGU6IDQ3NTEyOTc2MDY4NzU4NzMyODAsIDQyOTQ5NjcyOTYuMDAwMDAwLCBiYyMxMSkKICAg
ICAgIDY6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDU8RG91YmxlPiwgPGVtcHR5PiwgcjAo
UzxOdW1iZXI+KSwgYmMjMTEpCiAgICAgICA3OiAgICAgICAgICAgPCEwOi0+CVN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50KEAzPE9iamVjdD4sIE11c3RHZW58Q2FuRXhpdCwgc3RydWN0KDB4
MTEwMmNhZDYwOiBOb25BcnJheSksIGJjIzE0KQogICAgICAgICAgMHgzMWViOTVjMDFiN2U6IG1v
diAkMHgxMTAyZGYxODAsICVyYXgKICAgICAgICAgIDB4MzFlYjk1YzAxYjg4OiBtb3YgJDB4MTEw
MmNhZDYwLCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMWI5MjogY21wICVyMTEsICglcmF4KQog
ICAgICAgICAgMHgzMWViOTVjMDFiOTU6IGp6IDB4MzFlYjk1YzAxYjljCiAgICAgICAgICAweDMx
ZWI5NWMwMWI5YjogaW50MyAKICAgICAgIDg6ICAgICAgICAgICA8IDE6Mz4JR2V0QnV0dGVyZmx5
KEAzPE9iamVjdD4sIFN0b3JhZ2V8VXNlQXNPdGhlciwgYmMjMTQpCiAgICAgICAgICAweDMxZWI5
NWMwMWI5YzogbW92IDB4OCglcmF4KSwgJXJkeAogICAgICAgOTogICAgICAgICAgIDwhMDotPglQ
dXRCeU9mZnNldChAODxPdGhlcj4sIEAzPE9iamVjdD4sIEA1PERvdWJsZT4sIE11c3RHZW4sIGlk
MHtiaXR3aXNlQW5kVmFsdWV9LCAtNDUsIGJjIzE0KQogICAgICAgICAgMHgzMWViOTVjMDFiYTA6
IG1vdiAkMHgxMDdjNDAwMDAwMDAwLCAlcmN4CiAgICAgICAgICAweDMxZWI5NWMwMWJhYTogcm9y
ICQweDMyLCAlcmN4CiAgICAgICAgICAweDMxZWI5NWMwMWJhZTogbW92ICVyY3gsIDB4ZmZmZmZl
OTgoJXJkeCkKICAgICAgMTA6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDM8T2JqZWN0Piwg
PGVtcHR5PiwgcjEoRSksIGJjIzE5KQogICAgICAxMTogICAgICAgICAgIDwgMzoxPglKU0NvbnN0
YW50KEpTfFVzZUFzT3RoZXIsICQyID0gSW50MzI6IDAsIGJjIzI2KQogICAgICAxMjogICAgICAg
ICAgIDwhMDotPglQdXRHbG9iYWxWYXIoQDExPEludDMyPiwgTXVzdEdlbiwgZ2xvYmFsMygweDEx
MDJkZjFkOCksIGJjIzI2KQogICAgICAgICAgMHgzMWViOTVjMDFiYjU6IG1vdiAkMHgxZmZmZTAw
MDAwMDAwMDAsICVyYXgKICAgICAgICAgIDB4MzFlYjk1YzAxYmJmOiByb3IgJDB4MzksICVyYXgK
ICAgICAgICAgIDB4MzFlYjk1YzAxYmMzOiBtb3YgJXJheCwgMHgxMTAyZGYxZDgKICAgICAgMTQ6
ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDExPEludDMyPiwgPGVtcHR5PiwgcjEoRiksIGJj
IzMxKQogICAgICAxNTogICAgICAgICAgIDwgMTozPglKU0NvbnN0YW50KEpTfFVzZUFzT3RoZXIs
ICQzID0gSW50MzI6IDYwMDAwMCwgYmMjMzYpCiAgICAgIDE2OiAgICAgICAgICAgPCAxOjM+CUpT
Q29uc3RhbnQoQm9vbGVhbnxVc2VBc090aGVyLCAkNSA9IFRydWUsIGJjIzM2KQogICAgICA2OTog
ICAgICAgICAgIDwhMDotPglKdW1wKE11c3RHZW4sIFQ6IzEsIGJjIzM2KQogICAgQmxvY2sgIzEg
KGJjIzQwKTogIChPU1IgdGFyZ2V0KQogICAgICBQcmVkZWNlc3NvcnM6ICMwICMxCiAgICAgIERv
bWluYXRlZCBieTogIzAgIzEKICAgICAgRG9taW5hdGVzOiAjMSAjMwogICAgICBQaGkgTm9kZXM6
CiAgICAgICAgICAweDMxZWI5NWMwMWJjZDogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgMHgz
MWViOTVjMDFiZDE6IGp6IDB4MzFlYjk1YzAxYmQ4CiAgICAgICAgICAweDMxZWI5NWMwMWJkNzog
aW50MyAKICAgICAgMTk6ICAgICAgICAgICA8IDU6MT4JV2Vha0pTQ29uc3RhbnQoSlN8VXNlQXNP
dGhlciwgMHgxMTAyZGYxODAsIGJjIzQxKQogICAgICAyMDogIHNraXBwZWQgIDwgMDotPglTZXRM
b2NhbChAMTk8T2JqZWN0PiwgPGVtcHR5PiwgcjEoRyksIGJjIzQxKQogICAgICAyMTogICAgICAg
ICAgIDwhMDotPglTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludChAMTk8T2JqZWN0PiwgTXVz
dEdlbnxDYW5FeGl0LCBzdHJ1Y3QoMHgxMTAyY2FkNjA6IE5vbkFycmF5KSwgYmMjNDgpCiAgICAg
ICAgICAweDMxZWI5NWMwMWJkODogbW92ICQweDExMDJkZjE4MCwgJXJheAogICAgICAgICAgMHgz
MWViOTVjMDFiZTI6IG1vdiAkMHgxMTAyY2FkNjAsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAx
YmVjOiBjbXAgJXIxMSwgKCVyYXgpCiAgICAgICAgICAweDMxZWI5NWMwMWJlZjoganogMHgzMWVi
OTVjMDFiZjYKICAgICAgICAgIDB4MzFlYjk1YzAxYmY1OiBpbnQzIAogICAgICAyMjogICAgICAg
ICAgIDwgMjoyPglHZXRCdXR0ZXJmbHkoQDE5PE9iamVjdD4sIFN0b3JhZ2V8VXNlQXNPdGhlciwg
YmMjNDgpCiAgICAgICAgICAweDMxZWI5NWMwMWJmNjogbW92IDB4OCglcmF4KSwgJXJkeAogICAg
ICAyMzogICAgICAgICAgIDwgMTozPglHZXRCeU9mZnNldChAMjI8T3RoZXI+LCBKU3xQdXJlSW50
fFVzZUFzSW50fENhbkV4aXQsIGlkMHtiaXR3aXNlQW5kVmFsdWV9LCAtNDUsIGJjIzQ4KSAgcHJl
ZGljdGluZyBJbnQKICAgICAgICAgIDB4MzFlYjk1YzAxYmZhOiBtb3YgMHhmZmZmZmU5OCglcmR4
KSwgJXJjeAogICAgICAyNDogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChAMjM8SW50MzI+LCA8
ZW1wdHk+LCByMihIKSwgYmMjNDgpCiAgICAgIDI1OiAgICAgICAgICAgPCAyOjQ+CUdldEdsb2Jh
bFZhcihKU3xQdXJlSW50fFVzZUFzSW50LCBnbG9iYWwzKDB4MTEwMmRmMWQ4KSwgYmMjNTMpICBw
cmVkaWN0aW5nIEludAogICAgICAgICAgMHgzMWViOTVjMDFjMDE6IG1vdiAkMHgxMTAyZGYxZDgs
ICVyYngKICAgICAgICAgIDB4MzFlYjk1YzAxYzBiOiBtb3YgKCVyYngpLCAlcmJ4CiAgICAgIDI2
OiAgc2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEAyNTxJbnQzMj4sIDxlbXB0eT4sIHIzKEkpLCBi
YyM1MykKICAgICAgMjc6ICBza2lwcGVkICA8IDA6LT4JVmFsdWVUb0ludDMyKEAyMzxJbnQzMj4s
IEludDMyfFB1cmVJbnR8VXNlQXNJbnR8Q2FuRXhpdCwgYmMjNTgpCiAgICAgIDI4OiAgc2tpcHBl
ZCAgPCAwOi0+CVZhbHVlVG9JbnQzMihAMjU8SW50MzI+LCBJbnQzMnxQdXJlSW50fFVzZUFzSW50
fENhbkV4aXQsIGJjIzU4KQogICAgICAyOTogICAgICAgICAgIDwgMjozPglCaXRBbmQoQDIzPElu
dDMyPiwgQDI1PEludDMyPiwgSW50MzJ8VXNlQXNPdGhlcnxDYW5FeGl0LCBiYyM1OCkKICAgICAg
ICAgIDB4MzFlYjk1YzAxYzBlOiBjbXAgJXIxNCwgJXJjeAogICAgICAgICAgMHgzMWViOTVjMDFj
MTE6IGpiIDB4MzFlYjk1YzAxY2RkCiAgICAgICAgICAweDMxZWI5NWMwMWMxNzogY21wICVyMTQs
ICVyYngKICAgICAgICAgIDB4MzFlYjk1YzAxYzFhOiBqYiAweDMxZWI5NWMwMWNmZQogICAgICAg
ICAgMHgzMWViOTVjMDFjMjA6IGFuZCAlZWJ4LCAlZWN4CiAgICAgICAgICAweDMxZWI5NWMwMWMy
MjogbW92ICQweGZmZmZmZmZmLCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMWMyYzogY21wICVy
MTEsICVyY3gKICAgICAgICAgIDB4MzFlYjk1YzAxYzJmOiBqYmUgMHgzMWViOTVjMDFjMzYKICAg
ICAgICAgIDB4MzFlYjk1YzAxYzM1OiBpbnQzIAogICAgICAzMDogICAgICAgICAgIDwgMTotPglT
ZXRMb2NhbChAMjk8SW50MzI+LCByMChTPE51bWJlcj4pLCBiYyM1OCkgIHByZWRpY3RpbmcgSW50
RG91YmxlcmVhbAogICAgICAgICAgMHgzMWViOTVjMDFjMzY6IG9yICVyMTQsICVyY3gKICAgICAg
ICAgIDB4MzFlYjk1YzAxYzM5OiBtb3YgJXJjeCwgMHgwKCVyMTMpCiAgICAgIDMzOiAgICAgICAg
ICAgPCEwOi0+CVB1dEJ5T2Zmc2V0KEAyMjxPdGhlcj4sIEAxOTxPYmplY3Q+LCBAMjk8SW50MzI+
LCBNdXN0R2VuLCBpZDB7Yml0d2lzZUFuZFZhbHVlfSwgLTQ1LCBiYyM2MykKICAgICAgICAgIDB4
MzFlYjk1YzAxYzNkOiBtb3YgJXJjeCwgMHhmZmZmZmU5OCglcmR4KQogICAgICAzNzogIHNraXBw
ZWQgIDwgMDotPglTZXRMb2NhbChAMzUsIDxlbXB0eT4sIHIyKEspLCBiYyM2OCkKICAgICAgMzg6
ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDI1PEludDMyPiwgPGVtcHR5PiwgcjEoTCksIGJj
IzY4KQogICAgICAzOTogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChAMzUsIDxlbXB0eT4sIHIy
KE0pLCBiYyM2OCkKICAgICAgNDA6ICBza2lwcGVkICA8IDA6LT4JU2V0TG9jYWwoQDI1PEludDMy
PiwgPGVtcHR5PiwgcjEoTiksIGJjIzY4KQogICAgICA0MTogICAgICAgICAgIDwgMTozPglKU0Nv
bnN0YW50KEpTLCAkNCA9IEludDMyOiAxLCBiYyM3NSkKICAgICAgNDI6ICAgICAgICAgICA8ITI6
Mz4JQXJpdGhBZGQoQDI1PEludDMyPiwgQDQxPEludDMyPiwgTnVtYmVyfE11c3RHZW58VXNlQXNP
dGhlcnxDYW5FeGl0LCBiYyM3NSkKICAgICAgICAgIDB4MzFlYjk1YzAxYzQ0OiBtb3YgJDB4M2Ys
ICVlYXgKICAgICAgICAgIDB4MzFlYjk1YzAxYzQ5OiB4b3IgJDB4M2UsICVlYXgKICAgICAgICAg
IDB4MzFlYjk1YzAxYzRjOiBhZGQgJWVieCwgJWVheAogICAgICAgICAgMHgzMWViOTVjMDFjNGU6
IGpvIDB4MzFlYjk1YzAxZDFmCiAgICAgICAgICAweDMxZWI5NWMwMWM1NDogbW92ICQweGZmZmZm
ZmZmLCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMWM1ZTogY21wICVyMTEsICVyYXgKICAgICAg
ICAgIDB4MzFlYjk1YzAxYzYxOiBqYmUgMHgzMWViOTVjMDFjNjgKICAgICAgICAgIDB4MzFlYjk1
YzAxYzY3OiBpbnQzIAogICAgICA0MzogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChANDI8SW50
MzI+LCA8ZW1wdHk+LCByMShPKSwgYmMjNzUpCiAgICAgIDQ0OiAgICAgICAgICAgPCEwOi0+CVB1
dEdsb2JhbFZhcihANDI8SW50MzI+LCBNdXN0R2VuLCBnbG9iYWwzKDB4MTEwMmRmMWQ4KSwgYmMj
NzcpCiAgICAgICAgICAweDMxZWI5NWMwMWM2ODogb3IgJXIxNCwgJXJheAogICAgICAgICAgMHgz
MWViOTVjMDFjNmI6IG1vdiAlcmF4LCAweDExMDJkZjFkOAogICAgICA0NjogIHNraXBwZWQgIDwg
MDotPglTZXRMb2NhbChANDI8SW50MzI+LCA8ZW1wdHk+LCByMShQKSwgYmMjODIpCiAgICAgIDQ3
OiAgICAgICAgICAgPCAxOjQ+CUpTQ29uc3RhbnQoSlN8VXNlQXNPdGhlciwgJDMgPSBJbnQzMjog
NjAwMDAwLCBiYyM4NykKICAgICAgNDg6ICAgICAgICAgICA8ITE6ND4JQ29tcGFyZUxlc3MoQDQy
PEludDMyPiwgQDQ3PEludDMyPiwgQm9vbGVhbnxNdXN0R2VufE1pZ2h0Q2xvYmJlcnxVc2VBc090
aGVyLCBiYyM4NykKICAgICAgICAgIDB4MzFlYjk1YzAxYzc1OiBtb3YgJDB4Y2UxZGUwLCAlcjEx
ZAogICAgICAgICAgMHgzMWViOTVjMDFjN2I6IHhvciAkMHhjNzNhMjAsICVyMTFkCiAgICAgICAg
ICAweDMxZWI5NWMwMWM4MjogY21wICVyMTFkLCAlZWF4CiAgICAgICAgICAweDMxZWI5NWMwMWM4
NTogamwgMHgzMWViOTVjMDFiY2QKICAgICAgNDk6ICAgICAgICAgICA8ITA6LT4JQnJhbmNoKEA0
ODxCb29sZWFuPiwgTXVzdEdlbnxDYW5FeGl0LCBUOiMxLCBGOiMzLCBiYyM4NykKICAgIEJsb2Nr
ICMzIChiYyM5MSk6IAogICAgICBQcmVkZWNlc3NvcnM6ICMxCiAgICAgIERvbWluYXRlZCBieTog
IzAgIzEgIzMKICAgICAgRG9taW5hdGVzOiAjMwogICAgICBQaGkgTm9kZXM6IEA2Mi0+KEAzMCkK
ICAgICAgICAgIDB4MzFlYjk1YzAxYzhiOiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAweDMx
ZWI5NWMwMWM4ZjoganogMHgzMWViOTVjMDFjOTYKICAgICAgICAgIDB4MzFlYjk1YzAxYzk1OiBp
bnQzIAogICAgICA1MDogICAgICAgICAgIDwhMDotPglGb3JjZU9TUkV4aXQoTXVzdEdlbnxDYW5F
eGl0LCBiYyM5MSkKICAgICAgICAgIDB4MzFlYjk1YzAxYzk2OiBqbXAgMHgzMWViOTVjMDFkNDAK
ICAgICAgNTE6ICAgICAgICAgICA8ITA6LT4JRm9yY2VPU1JFeGl0KE11c3RHZW58Q2FuRXhpdCwg
YmMjOTEpCiAgICAgIDUyOiAgICAgICAgICAgPCExOjQ+CVJlc29sdmVCYXNlKEpTfE11c3RHZW58
Q2xvYmJlcnN8UHVyZUludHxDYW5FeGl0LCBiYyM5MSkgIHByZWRpY3RpbmcgTm9uZQogICAgICA1
MzogIHNraXBwZWQgIDwgMDotPglTZXRMb2NhbChANTIsIDxlbXB0eT4sIHIxKFEpLCBiYyM5MSkK
ICAgICAgNTQ6ICAgICAgICAgICA8ITA6LT4JRm9yY2VPU1JFeGl0KE11c3RHZW58Q2FuRXhpdCwg
YmMjOTgpCiAgICAgIDU1OiAgICAgICAgICAgPCAxOjM+CVdlYWtKU0NvbnN0YW50KEpTfFVzZUFz
T3RoZXJ8Q2FuRXhpdCwgMHgxMTAyZGYxODAsIGJjIzk4KQogICAgICA1NjogICAgICAgICAgIDwh
MDotPglTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludChANTU8T2JqZWN0PiwgTXVzdEdlbnxD
YW5FeGl0LCBzdHJ1Y3QoMHgxMTAyY2FkNjA6IE5vbkFycmF5KSwgYmMjOTgpCiAgICAgIDU5OiAg
c2tpcHBlZCAgPCAwOi0+CVNldExvY2FsKEA1OCwgPGVtcHR5PiwgcjIoUiksIGJjIzk4KQogICAg
ICA2MTogICAgICAgICAgIDwhMDotPglGb3JjZU9TUkV4aXQoTXVzdEdlbnxDYW5FeGl0LCBiYyMx
MDMpCiAgICAgIDYzOiAgICAgICAgICAgPCAxOjQ+CUdldExvY2FsKEA2MiwgSlN8VXNlQXNPdGhl
cnxDYW5FeGl0LCByMChTPE51bWJlcj4pLCBiYyMxMDgpICBwcmVkaWN0aW5nIEludERvdWJsZXJl
YWwKICAgICAgNjQ6ICAgICAgICAgICA8ITA6LT4JUmV0dXJuKEA2MzxOdW1iZXI+LCBNdXN0R2Vu
fENhbkV4aXQsIGJjIzEwOCkKICAgIChFbmQgT2YgTWFpbiBQYXRoKQogICAgICAgICAgMHgzMWVi
OTVjMDFjOWI6IHRlc3QgJDB4NywgJXIxM2IKICAgICAgICAgIDB4MzFlYjk1YzAxYzlmOiBqeiAw
eDMxZWI5NWMwMWNhNgogICAgICAgICAgMHgzMWViOTVjMDFjYTU6IGludDMgCiAgICAgICAgICAw
eDMxZWI5NWMwMWNhNjogbW92ICQweDdmOWVjYjAwY2UzMCwgJXIxMQogICAgICAgICAgMHgzMWVi
OTVjMDFjYjA6IG1vdiAkMHgwLCAoJXIxMSkKICAgICAgICAgIDB4MzFlYjk1YzAxY2I3OiBqbXAg
MHgzMWViOTVjMDFkODAKICAgICAgICAgIDB4MzFlYjk1YzAxY2JjOiB0ZXN0ICQweDcsICVyMTNi
CiAgICAgICAgICAweDMxZWI5NWMwMWNjMDoganogMHgzMWViOTVjMDFjYzcKICAgICAgICAgIDB4
MzFlYjk1YzAxY2M2OiBpbnQzIAogICAgICAgICAgMHgzMWViOTVjMDFjYzc6IG1vdiAkMHg3Zjll
Y2IwMGNlMzAsICVyMTEKICAgICAgICAgIDB4MzFlYjk1YzAxY2QxOiBtb3YgJDB4MSwgKCVyMTEp
CiAgICAgICAgICAweDMxZWI5NWMwMWNkODogam1wIDB4MzFlYjk1YzAxZDgwCiAgICAgICAgICAw
eDMxZWI5NWMwMWNkZDogdGVzdCAkMHg3LCAlcjEzYgogICAgICAgICAgMHgzMWViOTVjMDFjZTE6
IGp6IDB4MzFlYjk1YzAxY2U4CiAgICAgICAgICAweDMxZWI5NWMwMWNlNzogaW50MyAKICAgICAg
ICAgIDB4MzFlYjk1YzAxY2U4OiBtb3YgJDB4N2Y5ZWNiMDBjZTMwLCAlcjExCiAgICAgICAgICAw
eDMxZWI5NWMwMWNmMjogbW92ICQweDIsICglcjExKQogICAgICAgICAgMHgzMWViOTVjMDFjZjk6
IGptcCAweDMxZWI5NWMwMWQ4MAogICAgICAgICAgMHgzMWViOTVjMDFjZmU6IHRlc3QgJDB4Nywg
JXIxM2IKICAgICAgICAgIDB4MzFlYjk1YzAxZDAyOiBqeiAweDMxZWI5NWMwMWQwOQogICAgICAg
ICAgMHgzMWViOTVjMDFkMDg6IGludDMgCiAgICAgICAgICAweDMxZWI5NWMwMWQwOTogbW92ICQw
eDdmOWVjYjAwY2UzMCwgJXIxMQogICAgICAgICAgMHgzMWViOTVjMDFkMTM6IG1vdiAkMHgzLCAo
JXIxMSkKICAgICAgICAgIDB4MzFlYjk1YzAxZDFhOiBqbXAgMHgzMWViOTVjMDFkODAKICAgICAg
ICAgIDB4MzFlYjk1YzAxZDFmOiB0ZXN0ICQweDcsICVyMTNiCiAgICAgICAgICAweDMxZWI5NWMw
MWQyMzoganogMHgzMWViOTVjMDFkMmEKICAgICAgICAgIDB4MzFlYjk1YzAxZDI5OiBpbnQzIAog
ICAgICAgICAgMHgzMWViOTVjMDFkMmE6IG1vdiAkMHg3ZjllY2IwMGNlMzAsICVyMTEKICAgICAg
ICAgIDB4MzFlYjk1YzAxZDM0OiBtb3YgJDB4NCwgKCVyMTEpCiAgICAgICAgICAweDMxZWI5NWMw
MWQzYjogam1wIDB4MzFlYjk1YzAxZDgwCiAgICAgICAgICAweDMxZWI5NWMwMWQ0MDogdGVzdCAk
MHg3LCAlcjEzYgogICAgICAgICAgMHgzMWViOTVjMDFkNDQ6IGp6IDB4MzFlYjk1YzAxZDRiCiAg
ICAgICAgICAweDMxZWI5NWMwMWQ0YTogaW50MyAKICAgICAgICAgIDB4MzFlYjk1YzAxZDRiOiBt
b3YgJDB4N2Y5ZWNiMDBjZTMwLCAlcjExCiAgICAgICAgICAweDMxZWI5NWMwMWQ1NTogbW92ICQw
eDUsICglcjExKQogICAgICAgICAgMHgzMWViOTVjMDFkNWM6IGptcCAweDMxZWI5NWMwMWQ4MApH
ZW5lcmF0ZWQgSklUIGNvZGUgZm9yIERGRyBPU1IgZXhpdCAjNSAoYmMjOTEsIEA1MCwgSW5hZGVx
dWF0ZUNvdmVyYWdlKSBmcm9tIERpQlN2eTpbMHg3ZjllY2YwMDQyMDAsIERGR0dsb2JhbF06CiAg
ICBDb2RlIGF0IFsweDMxZWJkNWMwMGY0MCwgMHgzMWViZDVjMDEwMDApOgogICAgICAweDMxZWJk
NWMwMGY0MDogdGVzdCAkMHg3LCAlcjEzYgogICAgICAweDMxZWJkNWMwMGY0NDoganogMHgzMWVi
ZDVjMDBmNGIKICAgICAgMHgzMWViZDVjMDBmNGE6IGludDMgCiAgICAgIDB4MzFlYmQ1YzAwZjRi
OiBtb3YgJDB4YSwgJXJheAogICAgICAweDMxZWJkNWMwMGY1NTogbW92ICVyYXgsIDB4OCglcjEz
KQogICAgICAweDMxZWJkNWMwMGY1OTogbW92ICVyYXgsIDB4MTAoJXIxMykKICAgICAgMHgzMWVi
ZDVjMDBmNWQ6IG1vdiAlcmF4LCAweDE4KCVyMTMpCiAgICAgIDB4MzFlYmQ1YzAwZjYxOiBtb3Yg
JDB4N2Y5ZWNlMDAyNTI0LCAlcjExCiAgICAgIDB4MzFlYmQ1YzAwZjZiOiBhZGQgJDB4MSwgKCVy
MTEpCiAgICAgIDB4MzFlYmQ1YzAwZjZmOiBtb3YgJDB4N2Y5ZWNmMDA0MjAwLCAlcmF4CiAgICAg
IDB4MzFlYmQ1YzAwZjc5OiBtb3YgMHhjNDQoJXJheCksICVlY3gKICAgICAgMHgzMWViZDVjMDBm
N2Y6IGFkZCAkMHgxLCAlZWN4CiAgICAgIDB4MzFlYmQ1YzAwZjgyOiBtb3YgJWVjeCwgMHhjNDQo
JXJheCkKICAgICAgMHgzMWViZDVjMDBmODg6IG1vdiAkMHg3ZjllY2MwMGRjMDAsICVyYXgKICAg
ICAgMHgzMWViZDVjMDBmOTI6IGNtcCAkMHg2NCwgJWVjeAogICAgICAweDMxZWJkNWMwMGY5NTog
amJlIDB4MzFlYmQ1YzAwZmFmCiAgICAgIDB4MzFlYmQ1YzAwZjliOiBtb3YgJXJheCwgJXJkaQog
ICAgICAweDMxZWJkNWMwMGY5ZTogbW92ICQweDEwZWFlMzczMCwgJXJkeAogICAgICAweDMxZWJk
NWMwMGZhODogY2FsbCAlcmR4CiAgICAgIDB4MzFlYmQ1YzAwZmFhOiBqbXAgMHgzMWViZDVjMDBm
Y2QKICAgICAgMHgzMWViZDVjMDBmYWY6IG1vdiAkMHhmZmZmZWM3OCwgMHhjMzQoJXJheCkKICAg
ICAgMHgzMWViZDVjMDBmYjk6IG1vdiAkMHgzZTgsIDB4YzNjKCVyYXgpCiAgICAgIDB4MzFlYmQ1
YzAwZmMzOiBtb3YgJDB4NDQ3YTAwMDAsIDB4YzM4KCVyYXgpCiAgICAgIDB4MzFlYmQ1YzAwZmNk
OiBtb3YgJDB4N2Y5ZWNjMDBkYzAwLCAlcjExCiAgICAgIDB4MzFlYmQ1YzAwZmQ3OiBtb3YgJXIx
MSwgLTB4OCglcjEzKQogICAgICAweDMxZWJkNWMwMGZkYjogbW92ICQweDMxZWI5NWMwMTZiYywg
JXJkeAogICAgICAweDMxZWJkNWMwMGZlNTogam1wICVyZHgKRmlyaW5nIGp1bXAgcmVwbGFjZW1l
bnQgd2F0Y2hwb2ludCBmcm9tIDB4MzFlYjk1YzAxYmQ4LCB0byAweDMxZWI5NWMwMWNiYy4KRmly
aW5nIGp1bXAgcmVwbGFjZW1lbnQgd2F0Y2hwb2ludCBmcm9tIDB4MzFlYjk1YzAxYjdlLCB0byAw
eDMxZWI5NWMwMWM5Yi4KW3BpemxvQHdhcnRvb3RoIE9wZW5Tb3VyY2VdIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176821</attachid>
            <date>2012-11-29 14:44:50 -0800</date>
            <delta_ts>2012-11-29 15:14:55 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>codeblockhash.patch</filename>
            <type>text/plain</type>
            <size>104126</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBA
QAorMjAxMi0xMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEl0IHNob3VsZCBiZSBlYXN5IHRvIGZpbmQgY29kZSBibG9ja3MgaW4gZGVidWcgZHVtcHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzYyMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZ2l2ZXMg
Q29kZUJsb2NrIGEgcmVsYXRpdmVseSBzdHJvbmcsIGJ1dCBhbHNvIHJlbGF0aXZlbHkgY29tcGFj
dCwgaGFzaC4gV2UgY29tcHV0ZQorICAgICAgICBpdCBsYXppbHkgc28gdGhhdCBpdCBvbmx5IGlt
cGFjdHMgcnVuLXRpbWUgd2hlbiBkZWJ1ZyBzdXBwb3J0IGlzIGVuYWJsZWQuIFdlIHN0cmluZ2lm
eQorICAgICAgICBpdCBzbWFydGx5IHNvIHRoYXQgaXQncyBzaG9ydCBhbmQgZWFzeSB0byB0eXBl
LiBXZSBiYXNlIGl0IG9uIHRoZSBzb3VyY2UgY29kZSBzbyB0aGF0CisgICAgICAgIHRoZSBvcHRp
bWl6YXRpb24gbGV2ZWwgaXMgaXJyZWxldmFudC4gQW5kLCB3ZSB1c2UgU0hBMSBzaW5jZSBpdCdz
IGFscmVhZHkgaW4gb3VyIGNvZGUKKyAgICAgICAgYmFzZS4gTm93LCB3aGVuIGEgcGllY2Ugb2Yg
Y29kZSB3YW50cyB0byBwcmludCBzb21lIGRlYnVnZ2luZyB0byBzYXkgdGhhdCBpdCdzIG9wZXJh
dGluZworICAgICAgICBvbiBzb21lIGNvZGUgYmxvY2ssIGl0IGNhbiB1c2UgdGhpcyBDb2RlQmxv
Y2tIYXNoIGluc3RlYWQgb2YgbWVtb3J5IGFkZHJlc3Nlcy4KKworICAgICAgICBUaGlzIGFsc28g
dGFrZXMgQ29kZUJsb2NrIGRlYnVnZ2luZyB0byB1c2UgdGhlIG5ldyB3b3JsZCBvZiBwcmludCgp
IGFuZCBkYXRhTG9nKCkuIEluCisgICAgICAgIHBhcnRpY3VsYXIsIENvZGVCbG9jazo6ZHVtcCgp
IGNvcnJlc3BvbmRzIHRvIHRoZSB0aGluZyB5b3Ugd2FudCBwcmludGVkIGlmIHlvdSBkbzoKKwor
ICAgICAgICBkYXRhTG9nKCJJIGhlYXJ0ICIsICpteUNvZGVCbG9jayk7CisKKyAgICAgICAgUHJv
YmFibHksIHlvdSB3YW50IHRvIGp1c3QgcHJpbnQgc29tZSBpZGVudGlmeWluZyBpbmZvcm1hdGlv
biBhdCB0aGlzIHBvaW50IHJhdGhlciB0aGFuCisgICAgICAgIHRoZSBmdWxsIGJ5dGVjb2RlIGR1
bXAuIFNvLCB0aGUgZXhpc3RpbmcgQ29kZUJsb2NrOjpkdW1wKCkgaGFzIGJlZW4gcmVuYW1lZCB0
bworICAgICAgICBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpLCBhbmQgQ29kZUJsb2NrOjpkdW1w
KCkgbm93IHByaW50cyB0aGUgQ29kZUJsb2NrSGFzaCBwbHVzIGp1c3QKKyAgICAgICAgYSBmZXcg
bGl0dGxlIHRpZGJpdHMuCisgICAgICAgIAorICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBD
b2RlQmxvY2s6OmR1bXAoKSBvdXRwdXQ6CisgICAgICAgIAorICAgICAgICBFa0lMenI6WzB4MTAz
ODgzYTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbF0KKyAgICAgICAgCisgICAgICAgIEVrSUx6ciBp
cyB0aGUgQ29kZUJsb2NrSGFzaC4gMHgxMDM4ODNhMDAgaXMgdGhlIENvZGVCbG9jaydzIGFkZHJl
c3MgaW4gbWVtb3J5LiBUaGUgb3RoZXIKKyAgICAgICAgcGFydCBpcyBzZWxmLWV4cGxhbmF0b3J5
LgorCisgICAgICAgIEZpbmFsbHksIHRoaXMgbmV3IG5vdGlvbiBvZiBDb2RlQmxvY2tIYXNoIGlz
IGF2YWlsYWJsZSBmb3Igb3RoZXIgcHVycG9zZXMgbGlrZSBiaXNlY3RpbmcKKyAgICAgICAgYnJl
YWthZ2UuIEFzIHN1Y2ggQ29kZUJsb2NrSGFzaCBoYXMgYWxsIG9mIHRoZSBjb21wYXJpc29uIG9w
ZXJhdG9yIG92ZXJsb2Fkcy4gV2hlbgorICAgICAgICBiaXNlY3RpbmcgaW4gREZHRHJpdmVyLmNw
cCwgeW91IGNhbiBub3cgc2F5IHRoaW5ncyBsaWtlOgorICAgICAgICAKKyAgICAgICAgaWYgKGNv
ZGVCbG9jay0+aGFzaCgpIDwgQ29kZUJsb2NrSGFzaCgiQ0FBQUFBIikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBBbmQgeWVzLCBDQUFBQUEgaXMgbmVhciB0
aGUgbWVkaWFuIGhhc2gsIGFuZCB0aGUgbGFyZ2VzdCBvbmUgaXMgc21hbGxlciB0aGFuIEU5OTk5
OS4gU3VjaAorICAgICAgICBpcyBsaWZlIHdoZW4geW91IHVzZSBiYXNlIDYyIHRvIGVuY29kZSBh
IDMyLWJpdCBudW1iZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoQ2FsbExpbmtJbmZvKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzcGVjaWFsaXphdGlvbktpbmQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFz
aCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBBc3N1bWlu
Z0pJVFR5cGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVzZXRTdHViSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnJlb3B0aW1pemUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZHVtcFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnNwZWNpYWxpemF0aW9uS2luZCk6CisgICAgICAgIChDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldEpJVFR5cGUpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6OkNvZGVCbG9ja0hhc2gpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2tIYXNoOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmg6
IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKENvZGVCbG9ja0hhc2gpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2tIYXNoOjpDb2RlQmxvY2tIYXNoKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrSGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tIYXNoOjpvcGVyYXRvciE9KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrSGFzaDo6b3BlcmF0b3I8KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
SGFzaDo6b3BlcmF0b3I+KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrSGFzaDo6b3BlcmF0b3I8
PSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6Om9wZXJhdG9yPj0pOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9ja1dpdGhKSVRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKENvZGVCbG9ja1dpdGhKSVRUeXBlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
V2l0aEpJVFR5cGU6OkNvZGVCbG9ja1dpdGhKSVRUeXBlKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrV2l0aEpJVFR5cGU6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmlubGlu
ZURlcHRoRm9yQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6aW5saW5lRGVw
dGgpOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjppbmxpbmVTdGFjayk6CisgICAgICAgIChK
U0M6OklubGluZUNhbGxGcmFtZTo6aGFzaCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oOgorICAgICAgICAoSW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW5saW5lQ2Fs
bEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlVHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdU
Rjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZVR5cGUuaDoKKyAgICAg
ICAgKFdURik6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHA6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGlvbkNvdW50ZXI6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGlvbkNvdW50ZXIuaDoKKyAgICAgICAgKEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXBDb2RlT3JpZ2lu
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlND
OjpERkc6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRC
eUlETGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFB1dFJlcGxhY2VTdHViKToKKyAgICAg
ICAgKEpTQzo6REZHOjplbWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjpERkc6
OmRmZ0xpbmtDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZHVtcENhbGxGcmFtZSk6CisgICAgICAg
ICogaml0L0pJVENvZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6
OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6
OkpJVENvZGU6OmppdFR5cGUpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiBqaXQvSklURGlz
YXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpkdW1wKToKKyAg
ICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb25zKToKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5
SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcDogQWRkZWQuCisgICAgICAg
IChXVEYpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1l
L0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDoKKyAgICAgICAgKEpTQzo6c3BlY2lhbGl6YXRpb25G
cm9tSXNDYWxsKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnNwZWNpYWxpemF0aW9u
RnJvbUlzQ29uc3RydWN0KToKKyAgICAgICAgKFdURik6CisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6Omhhc2hGb3IpOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6aGFzaEZvcik6Cisg
ICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omhhc2hGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoRXhlY3V0YWJsZUJhc2UpOgorICAgICAgICAoTmF0
aXZlRXhlY3V0YWJsZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRhYmxlKToKKyAgICAgICAgKEpT
Qzo6U2NyaXB0RXhlY3V0YWJsZTo6c291cmNlKToKKwogMjAxMi0xMS0yOSAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZSBXaW5kb3dzIGJ1
aWxkIGZpeCBhZnRlciByMTM2MDg2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTM2MDk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIFNFVChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHAKKyAgICBieXRlY29k
ZS9Db2RlQmxvY2tIYXNoLmNwcAorICAgIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCisgICAgYnl0
ZWNvZGUvQ29kZVR5cGUuY3BwCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCiAgICAg
Ynl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKICAgICBieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcApAQCAtMTUwLDYgKzE1Myw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
aml0L0pJVEFyaXRobWV0aWMuY3BwCiAgICAgaml0L0pJVENhbGwzMl82NC5jcHAKICAgICBqaXQv
SklUQ2FsbC5jcHAKKyAgICBqaXQvSklUQ29kZS5jcHAKICAgICBqaXQvSklULmNwcAogICAgIGpp
dC9KSVREaXNhc3NlbWJsZXIuY3BwCiAgICAgaml0L0pJVEV4Y2VwdGlvbnMuY3BwCkBAIC0xODIs
NiArMTg2LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9DYWxsRGF0YS5jcHAKICAgICBydW50aW1lL0Nv
ZGVDYWNoZS5jcHAKKyAgICBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwCiAgICAg
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKICAgICBydW50aW1lL0NvbXBsZXRpb24uY3Bw
CiAgICAgcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNjA5NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC05NCw5ICs5
NCwxNCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlVHlwZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db21tZW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
YXRhRm9ybWF0LmggXApAQCAtMzk5LDYgKzQwNCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29tcGlsYXRpb25FZmZvcnQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwIFwKQEAgLTQ5OSw2ICs1MDUs
NyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25L
aW5kLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTM2MDk2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYg
KzU1LDkgQEAgU09VUkNFUyArPSBcCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBcCiAg
ICAgYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKICAgICBieXRlY29kZS9Db2RlQmxvY2su
Y3BwIFwKKyAgICBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcCBcCisgICAgYnl0ZWNvZGUvQ29k
ZU9yaWdpbi5jcHAgXAorICAgIGJ5dGVjb2RlL0NvZGVUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcCBc
CiAgICAgYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgXApAQCAtMTU1LDYgKzE1OCw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklU
Q2FsbC5jcHAgXAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwIFwKKyAgICBqaXQvSklUQ29kZS5j
cHAgXAogICAgIGppdC9KSVQuY3BwIFwKICAgICBqaXQvSklURGlzYXNzZW1ibGVyLmNwcCBcCiAg
ICAgaml0L0pJVEV4Y2VwdGlvbnMuY3BwIFwKQEAgLTE5MSw2ICsxOTUsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL0NhbGxE
YXRhLmNwcCBcCiAgICAgcnVudGltZS9Db2RlQ2FjaGUuY3BwIFwKKyAgICBydW50aW1lL0NvZGVT
cGVjaWFsaXphdGlvbktpbmQuY3BwIFwKICAgICBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cCBcCiAgICAgcnVudGltZS9Db21wbGV0aW9uLmNwcCBcCiAgICAgcnVudGltZS9Db25zdHJ1Y3RE
YXRhLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTY0Niw2ICs2NDYsMTQgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRp
bWVcQ29tbW9uSWRlbnRpZmllcnMuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2MzAsNiAr
MTYzOCwyMiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxieXRlY29kZVxDb2RlQmxvY2tIYXNoLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ29kZUJsb2NrSGFzaC5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxi
eXRlY29kZVxDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxDb2RlT3JpZ2luLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNv
ZGVcQ29kZU9yaWdpbi5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2MzgsNiArMTY2MiwxMCBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxi
eXRlY29kZVxDb2RlVHlwZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXENvbW1lbnQuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+
CkBAIC0xOTgyLDYgKzIwMTAsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEpJVENvZGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklUQ29kZS5oIgogCQkJCT4K
IAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
MzYwOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCwxMiBAQAogCQkw
RjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMz
NUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBE
RkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjhG
OTQzQzE2Njc2MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQzQTE2Njc2MzEx
MDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgKi87IH07CisJCTBGOEY5NDQw
MTY2NzYzMzAwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNEMTY2NzYzMkQwMEQ2MTk3MSAvKiBD
b2RlQmxvY2tIYXNoLmNwcCAqLzsgfTsKKwkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENv
ZGVCbG9ja0hhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY4Rjk0NDIxNjY3NjMz
NTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNGMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAg
Ki87IH07CisJCTBGOEY5NDQ0MTY2NzYzNTQwMEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDQzMTY2NzYzNTIw
MEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCAqLzsgfTsKKwkJMEY4Rjk0NDYxNjY3NjRGMTAwRDYxOTcx
IC8qIENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY4Rjk0NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICovOyB9
OwogCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwOTE1
N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTBGOTE5
RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRF
N0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0LmNwcCAqLzsgfTsKQEAgLTE4NSw2ICsxOTEsNyBAQAogCQkwRjkzMzJBNDE0Q0E3
REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRT
dGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjkzMzJBNTE0Q0E3REREMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5QjE0Q0E3REMxMDA4NUYz
QzYgLyogU3RydWN0dXJlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMzYx
M0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBD
b2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5NkVCQjExNjY3NkVGNDAwOEJBREUzIC8qIENvZGVCbG9ja1dpdGhKSVRU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY5RDMzNzAxNjVEQkI5MDAwNUFEMzg3IC8qIERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM2RTE2NURCQjhEMDA1QUQz
ODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJMEY5RkM4QzMxNEUxQjVGRTAwRDUyQUUw
IC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3Jw
aGljUHV0QnlJZExpc3QuY3BwICovOyB9OwogCQkwRjlGQzhDNDE0RTFCNjAwMDBENTJBRTAgLyog
UG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY5RkM4QzAxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0
QnlJZExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtOTY4LDYgKzk3NSwxMiBAQAogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMy
OUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0JyYW5jaERpcmVjdGlvbi5oOyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEg
LyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY4Rjk0M0QxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29kZUJsb2NrSGFzaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAv
KiBDb2RlQmxvY2tIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVC
bG9ja0hhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0M0YxNjY3NjMy
RDAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvZGVUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0
NDMxNjY3NjM1MjAwRDYxOTcxIC8qIEpJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklUQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGOEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEExNTdF
RTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4
Myw2ICs5OTYsNyBAQAogCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeUlkU3RhdHVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjlCMTRDQTdEQzEwMDg1RjNDNiAvKiBT
dHJ1Y3R1cmVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJl
U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2MTNGQzZGREUwMDAy
RDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTZFQkIxMTY2
NzZFRjQwMDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2RlQmxvY2tXaXRoSklUVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjlEMzM2RTE2NURCQjhEMDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpc2Fzc2VtYmxlci5jcHA7
IHBhdGggPSBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJ
ZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9seW1vcnBo
aWNQdXRCeUlkTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZDOEMw
MTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MzgsNiArMTg1Miw3IEBACiAJCQkJQTc1NzA2REQxMThB
MkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi8sCiAJCQkJODZDQzg1QTIw
RUU3OUI3NDAwMjg4NjgyIC8qIEpJVENhbGwuY3BwICovLAogCQkJCTE0NkZFNTExMTFBNzEwNDMw
MDg3QUU2NiAvKiBKSVRDYWxsMzJfNjQuY3BwICovLAorCQkJCTBGOEY5NDQzMTY2NzYzNTIwMEQ2
MTk3MSAvKiBKSVRDb2RlLmNwcCAqLywKIAkJCQk4NkNDRUZERDBGNDEzRjg5MDBGRDdGOUUgLyog
SklUQ29kZS5oICovLAogCQkJCTBGMDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxh
dGlvbkVmZm9ydC5oICovLAogCQkJCTBGQUY3RUZBMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNh
c3NlbWJsZXIuY3BwICovLApAQCAtMjEzNiw2ICsyMTUxLDcgQEAKIAkJCQlCQ0E2MkRGRTBFMjgy
NjIzMDAwNEYzMEQgLyogQ2FsbERhdGEuY3BwICovLAogCQkJCTE0NUM1MDdGMEQ5REY2M0IwMDg4
RjZCOSAvKiBDYWxsRGF0YS5oICovLAogCQkJCUJDNkFBQUU0MEUxRjQyNjUwMEFEODdEOCAvKiBD
bGFzc0luZm8uaCAqLywKKwkJCQkwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEgLyogQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5jcHAgKi8sCiAJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKIAkJCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAg
LyogQ29tbW9uSWRlbnRpZmllcnMuY3BwICovLAogCQkJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2
MCAvKiBDb21tb25JZGVudGlmaWVycy5oICovLApAQCAtMjU2MCw5ICsyNTc2LDE0IEBACiAJCQkJ
MEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkw
RjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjBC
ODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aCAqLywKKwkJCQkwRjhGOTQzRDE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAg
Ki8sCisJCQkJMEY4Rjk0M0UxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCAqLywK
KwkJCQkwRjk2RUJCMTE2Njc2RUY0MDA4QkFERTMgLyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCAq
LywKIAkJCQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLywKIAkJ
CQk5NjlBMDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCisJCQkJMEY4Rjk0
NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICovLAogCQkJCTBGQkQ3RTY3MTQ0
Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi8sCisJCQkJMEY4Rjk0M0YxNjY3NjMyRDAw
RDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLywKIAkJCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYg
LyogQ29kZVR5cGUuaCAqLywKIAkJCQlGRUI2M0FBMjE1OUI5REEzMDA4OTMyQTYgLyogQ29tbWVu
dC5oICovLAogCQkJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi8s
CkBAIC0zMDU0LDYgKzMwNzUsOCBAQAogCQkJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBK
SVREaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzNEN0FGMTY1QTE0MzAwMEFD
QUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRE
QkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2gu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2RlQmxv
Y2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNjM3LDYgKzM2NjAsMTEgQEAKIAkJ
CQkwRjczRDdBRTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM3MDE2NURCQjkwMDA1QUQzODcgLyogRGlzYXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRERCRkI1MTY2NkVFRDgwMEM1NUZFRiAvKiBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOEY5NDND
MTY2NzYzMTMwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGOEY5NDQwMTY2NzYzMzAwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEgLyogSklUQ29k
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjhGOTQ0NjE2Njc2NEYxMDBENjE5NzEgLyogQ29k
ZU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIgogI2lu
Y2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCIKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiT3Bjb2RlLmgiCkBAIC02NSw2ICs2NiwxMSBAQCBzdHJ1Y3QgQ2FsbExpbmtJ
bmZvIDogcHVibGljIEJhc2ljUmF3U2VuCiAgICAgICAgIGlmIChpc09uTGlzdCgpKQogICAgICAg
ICAgICAgcmVtb3ZlKCk7CiAgICAgfQorICAgIAorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
c3BlY2lhbGl6YXRpb25LaW5kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzcGVjaWFs
aXphdGlvbkZyb21Jc0NvbnN0cnVjdChjYWxsVHlwZSA9PSBDb25zdHJ1Y3QpOworICAgIH0KIAog
ICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICBDb2RlTG9j
YXRpb25EYXRhTGFiZWxQdHIgaG90UGF0aEJlZ2luOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw2ICs2MiwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAj
ZW5kaWYKIAorQ29kZUJsb2NrSGFzaCBDb2RlQmxvY2s6Omhhc2goKSBjb25zdAoreworICAgIHJl
dHVybiBDb2RlQmxvY2tIYXNoKG93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3BlY2lhbGl6
YXRpb25LaW5kKCkpOworfQorCit2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlwZShQ
cmludFN0cmVhbSYgb3V0LCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpIGNvbnN0Cit7CisgICAg
b3V0LnByaW50KGhhc2goKSwgIjpbIiwgUmF3UG9pbnRlcih0aGlzKSwgIiwgIiwgaml0VHlwZSwg
Y29kZVR5cGUoKSk7CisgICAgaWYgKGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQorICAgICAg
ICBvdXQucHJpbnQoc3BlY2lhbGl6YXRpb25LaW5kKCkpOworICAgIG91dC5wcmludCgiXSIpOwor
fQorCit2b2lkIENvZGVCbG9jazo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAg
IGR1bXBBc3N1bWluZ0pJVFR5cGUob3V0LCBnZXRKSVRUeXBlKCkpOworfQorCiBzdGF0aWMgU3Ry
aW5nIGVzY2FwZVF1b3Rlcyhjb25zdCBTdHJpbmcmIHN0cikKIHsKICAgICBTdHJpbmcgcmVzdWx0
ID0gc3RyOwpAQCAtNDgwLDcgKzQ5OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludFN0cnVjdHVy
ZXMoY29uc3QgSW4KICAgICBBU1NFUlQodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5n
ZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9nZW5lcmljKSB8fCB2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9jYWxsKSB8fCB2UENbMF0udS5vcGNvZGUg
PT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9jYWxsX2V2YWwpIHx8IHZQQ1swXS51Lm9wY29k
ZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2NvbnN0cnVjdCkpOwogfQogCi12b2lkIENv
ZGVCbG9jazo6ZHVtcCgpCit2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIHsKICAgICAv
LyBXZSBvbmx5IHVzZSB0aGUgRXhlY1N0YXRlKiBmb3IgdGhpbmdzIHRoYXQgZG9uJ3QgYWN0dWFs
bHkgbGVhZCB0byBKUyBleGVjdXRpb24sCiAgICAgLy8gbGlrZSBjb252ZXJ0aW5nIGEgSlNTdHJp
bmcgdG8gYSBTdHJpbmcuIEhlbmNlIHRoZSBnbG9iYWxFeGVjIGlzIGFwcHJvcHJpYXRlLgpAQCAt
NDkxLDEyICs1MDksMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoKQogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhl
Yy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUp
XSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCisgICAgZGF0YUxvZygqdGhpcyk7CiAg
ICAgZGF0YUxvZ0YoCi0gICAgICAgICIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAl
cCAoJXMpOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFi
bGUocykiLAorICAgICAgICAiOiAlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlczsgJWQgcGFy
YW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpIiwKICAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSwKICAg
ICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICog
c2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIHRoaXMsIGNvZGVUeXBlVG9TdHJpbmcoY29k
ZVR5cGUoKSksIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsCi0gICAgICAg
IG1fbnVtVmFycyk7CisgICAgICAgIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3Rl
cnMsIG1fbnVtVmFycyk7CiAgICAgaWYgKHN5bWJvbFRhYmxlKCkgJiYgc3ltYm9sVGFibGUoKS0+
Y2FwdHVyZUNvdW50KCkpCiAgICAgICAgIGRhdGFMb2dGKCI7ICVkIGNhcHR1cmVkIHZhcihzKSIs
IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVDb3VudCgpKTsKICAgICBpZiAodXNlc0FyZ3VtZW50cygp
KSB7CkBAIC01MTIsNyArNTMwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoKQogICAgIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwogICAgIGZvciAoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZHVtcChl
eGVjLCBiZWdpbiwgaXQpOworICAgICAgICBkdW1wQnl0ZWNvZGUoZXhlYywgYmVnaW4sIGl0KTsK
IAogICAgIGlmICghbV9pZGVudGlmaWVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgZGF0YUxvZ0Yo
IlxuSWRlbnRpZmllcnM6XG4iKTsKQEAgLTYwNyw3ICs2MjUsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcCgpCiAgICAgZGF0YUxvZ0YoIlxuIik7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0KQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCkKIHsKICAgICBp
bnQgbG9jYXRpb24gPSBpdCAtIGJlZ2luOwogICAgIHN3aXRjaCAoZXhlYy0+aW50ZXJwcmV0ZXIo
KS0+Z2V0T3Bjb2RlSUQoaXQtPnUub3Bjb2RlKSkgewpAQCAtMTQ1OCwxMSArMTQ3NiwxMSBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgfQogfQogCi12b2lk
IENvZGVCbG9jazo6ZHVtcCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3ZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgRXhlY1N0YXRl
KiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBjb25zdCBJbnN0cnVj
dGlvbiogaXQgPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVPZmZzZXQ7Ci0gICAg
ZHVtcChleGVjLCBpbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBpdCk7CisgICAgZHVtcEJ5dGVjb2Rl
KGV4ZWMsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0KTsKIH0KIAogI2lmIERVTVBfQ09ERV9C
TE9DS19TVEFUSVNUSUNTCkBAIC0xODkyLDcgKzE5MTAsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEY6OlJlZkNvdW50
ZWRBcnJheTxJbnN0cnVjdGlvbj4oaW5zdHJ1Y3Rpb25zKTsKIAogICAgIGlmIChPcHRpb25zOjpk
dW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkpCi0gICAgICAgIGR1bXAoKTsKKyAgICAgICAgZHVtcEJ5
dGVjb2RlKCk7CiAgICAgbV9nbG9iYWxEYXRhLT5maW5pc2hlZENvbXBpbGluZyh0aGlzKTsKIH0K
IApAQCAtMjE4Niw3ICsyMjA0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRp
b25hbGx5KAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5r
SW5mb3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZv
c1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tp
XS5jYWxsZWUuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcp
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20g
JXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgTExJ
bnQgY2FsbCBmcm9tICIsICp0aGlzLCAiXG4iKTsKICAgICAgICAgICAgICAgICBtX2xsaW50Q2Fs
bExpbmtJbmZvc1tpXS51bmxpbmsoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgh
IW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01hcmtl
ZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCkBAIC0yMTk5
LDE0ICsyMjE3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgK
ICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29u
LgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkg
fHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CiAgICAgICAgIGlmICh2ZXJi
b3NlVW5saW5raW5nKQotICAgICAgICAgICAgZGF0YUxvZ0YoIkNvZGUgYmxvY2sgJXAgKGV4ZWN1
dGFibGUgJXApIGhhcyBkZWFkIHdlYWsgcmVmZXJlbmNlcywgamV0dGlzb25pbmcgZHVyaW5nIEdD
LlxuIiwgdGhpcywgb3duZXJFeGVjdXRhYmxlKCkpOworICAgICAgICAgICAgZGF0YUxvZygqdGhp
cywgIiBoYXMgZGVhZCB3ZWFrIHJlZmVyZW5jZXMsIGpldHRpc29uaW5nIGR1cmluZyBHQy5cbiIp
OwogCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBiYXNlbGluZSBKSVQga25vd3MgdGhh
dCBpdCBzaG91bGQgcmUtd2FybS11cCBiZWZvcmUKICAgICAgICAgLy8gb3B0aW1pemluZy4KICAg
ICAgICAgYWx0ZXJuYXRpdmUoKS0+b3B0aW1pemVBZnRlcldhcm1VcCgpOwogICAgICAgICAKICAg
ICAgICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpIHsKLSAgICAgICAgICAgIGRh
dGFMb2dGKCJERkcgQ29kZUJsb2NrICVwIHdpbGwgYmUgamV0dGlzb25lZCBiZWNhdXNlIG9mIHRo
ZSBmb2xsb3dpbmcgZGVhZCByZWZlcmVuY2VzOlxuIiwgdGhpcyk7CisgICAgICAgICAgICBkYXRh
TG9nKCp0aGlzLCAid2lsbCBiZSBqZXR0aXNvbmVkIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBk
ZWFkIHJlZmVyZW5jZXM6XG4iKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2RmZ0RhdGEtPnRyYW5zaXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAg
V2Vha1JlZmVyZW5jZVRyYW5zaXRpb24mIHRyYW5zaXRpb24gPSBtX2RmZ0RhdGEtPnRyYW5zaXRp
b25zW2ldOwogICAgICAgICAgICAgICAgIEpTQ2VsbCogb3JpZ2luID0gdHJhbnNpdGlvbi5tX2Nv
ZGVPcmlnaW4uZ2V0KCk7CkBAIC0yMjM0LDcgKzIyNTIsNyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHV0VG9CYXNl
T3BlcmF0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICht
X3B1dFRvQmFzZU9wZXJhdGlvbnNbaV0ubV9zdHJ1Y3R1cmUgJiYgIUhlYXA6OmlzTWFya2VkKG1f
cHV0VG9CYXNlT3BlcmF0aW9uc1tpXS5tX3N0cnVjdHVyZS5nZXQoKSkpIHsKICAgICAgICAgICAg
IGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmlu
ZyBwdXRUb0Jhc2UgaW5mbyBpbiAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgIGRhdGFM
b2coIkNsZWFyaW5nIHB1dFRvQmFzZSBpbmZvIGluICIsICp0aGlzLCAiXG4iKTsKICAgICAgICAg
ICAgIG1fcHV0VG9CYXNlT3BlcmF0aW9uc1tpXS5tX3N0cnVjdHVyZS5jbGVhcigpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMjI0OCw3ICsyMjY2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KAogICAgICAgICBtX3Jlc29sdmVPcGVyYXRpb25zW2ldLmxhc3QoKS5t
X3N0cnVjdHVyZS5jbGVhcigpOwogICAgICAgICBpZiAobV9yZXNvbHZlT3BlcmF0aW9uc1tpXS5s
YXN0KCkubV9zdHJ1Y3R1cmUgJiYgIUhlYXA6OmlzTWFya2VkKG1fcmVzb2x2ZU9wZXJhdGlvbnNb
aV0ubGFzdCgpLm1fc3RydWN0dXJlLmdldCgpKSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2VV
bmxpbmtpbmcpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIHJlc29sdmUgaW5m
byBpbiAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIHJl
c29sdmUgaW5mbyBpbiAiLCAqdGhpcywgIlxuIik7CiAgICAgICAgICAgICBtX3Jlc29sdmVPcGVy
YXRpb25zW2ldLmxhc3QoKS5tX3N0cnVjdHVyZS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQpA
QCAtMjI2MiwxMyArMjI4MCwyMyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkoCiAgICAgICAgICAgICAgICAgaWYgKENsb3N1cmVDYWxsU3R1YlJvdXRpbmUqIHN0dWIg
PSBjYWxsTGlua0luZm8oaSkuc3R1Yi5nZXQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
IUhlYXA6OmlzTWFya2VkKHN0dWItPnN0cnVjdHVyZSgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgIUhlYXA6OmlzTWFya2VkKHN0dWItPmV4ZWN1dGFibGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBjbG9zdXJlIGNhbGwgZnJvbSAlcCB0byAlcCwgc3R1
YiByb3V0aW5lICVwLlxuIiwgdGhpcywgc3R1Yi0+ZXhlY3V0YWJsZSgpLCBzdHViKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkNsZWFyaW5nIGNsb3N1cmUgY2FsbCBmcm9tICIsICp0aGlzLCAiIHRvICIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0dWItPmV4ZWN1dGFibGUoKS0+aGFzaEZvcihjYWxsTGlu
a0luZm8oaSkuc3BlY2lhbGl6YXRpb25LaW5kKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLCBzdHViIHJvdXRpbmUgIiwgUmF3UG9pbnRlcihzdHViKSwgIi5cbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvKGkpLnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUhlYXA6OmlzTWFya2VkKGNh
bGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFy
aW5nIGNhbGwgZnJvbSAlcCB0byAlcC5cbiIsIHRoaXMsIGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUu
Z2V0KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQ2xlYXJpbmcgY2FsbCBmcm9tICIsICp0aGlzLCAiIHRvICIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmF3UG9pbnRlcihjYWxsTGlua0luZm8oaSkuY2FsbGVlLmdldCgpKSwgIiAo
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8oaSkuY2FsbGVlLmdl
dCgpLT5leGVjdXRhYmxlKCktPmhhc2hGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mbyhpKS5zcGVjaWFsaXphdGlvbktpbmQoKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIikuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8oaSkudW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hC
dWZmZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIzMDMsNyArMjMz
MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpyZXNldFN0dWJJbnRlcm5hbChSZXBhdGMKICAgICBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nl
c3NUeXBlKTsKICAgICAKICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAgICAgICAgZGF0YUxv
Z0YoIkNsZWFyaW5nIHN0cnVjdHVyZSBjYWNoZSAoa2luZCAlZCkgaW4gJXAuXG4iLCBzdHViSW5m
by5hY2Nlc3NUeXBlLCB0aGlzKTsKKyAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgc3RydWN0dXJl
IGNhY2hlIChraW5kICIsIHN0YXRpY19jYXN0PGludD4oc3R1YkluZm8uYWNjZXNzVHlwZSksICIp
IGluICIsICp0aGlzLCAiLlxuIik7CiAgICAgCiAgICAgaWYgKGlzR2V0QnlJZEFjY2VzcyhhY2Nl
c3NUeXBlKSkgewogICAgICAgICBpZiAoZ2V0SklUQ29kZSgpLmppdFR5cGUoKSA9PSBKSVRDb2Rl
OjpERkdKSVQpCkBAIC0yNzY5LDcgKzI3OTcsNyBAQCB2b2lkIENvZGVCbG9jazo6cmVvcHRpbWl6
ZSgpCiAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmFsdGVybmF0aXZlKCkgPT0gdGhpcyk7CiAg
ICAgcmVwbGFjZW1lbnQoKS0+dGFsbHlGcmVxdWVudEV4aXRTaXRlcygpOwogICAgIGlmIChERkc6
OnNob3VsZFNob3dEaXNhc3NlbWJseSgpKQotICAgICAgICBkYXRhTG9nRigiREZHIENvZGVCbG9j
ayAlcCB3aWxsIGJlIGpldHRpc29uZWQgZHVlIHRvIHJlb3B0aW1pemF0aW9uIG9mICVwLlxuIiwg
cmVwbGFjZW1lbnQoKSwgdGhpcyk7CisgICAgICAgIGRhdGFMb2coKnJlcGxhY2VtZW50KCksICIg
d2lsbCBiZSBqZXR0aXNvbmVkIGR1ZSB0byByZW9wdGltaXphdGlvbiBvZiAiLCAqdGhpcywgIi5c
biIpOwogICAgIHJlcGxhY2VtZW50KCktPmpldHRpc29uKCk7CiAgICAgY291bnRSZW9wdGltaXph
dGlvbigpOwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKQEAgLTI4MzYsNyArMjg2NCw3IEBA
IHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24oKQogICAgIEFTU0VSVChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFj
ZW1lbnQoKSk7CiAgICAgaWYgKERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAg
IGRhdGFMb2dGKCJKZXR0aXNvbmluZyBERkcgQ29kZUJsb2NrICVwLlxuIiwgdGhpcyk7CisgICAg
ICAgIGRhdGFMb2coIkpldHRpc29uaW5nICIsICp0aGlzLCAiLlxuIik7CiAgICAgc3RhdGljX2Nh
c3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1p
emVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIApAQCAtMjg0NSw3ICsyODczLDcgQEAgdm9pZCBF
dmFsQ29kZUJsb2NrOjpqZXR0aXNvbigpCiAgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemlu
Z0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsK
ICAgICBpZiAoREZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkKLSAgICAgICAgZGF0YUxvZ0Yo
IkpldHRpc29uaW5nIERGRyBDb2RlQmxvY2sgJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgZGF0YUxv
ZygiSmV0dGlzb25pbmcgIiwgKnRoaXMsICIuXG4iKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhl
Y3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9i
YWxEYXRhKCkpOwogfQogCkBAIC0yODU0LDcgKzI4ODIsNyBAQCB2b2lkIEZ1bmN0aW9uQ29kZUJs
b2NrOjpqZXR0aXNvbigpCiAgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRK
SVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBpZiAo
REZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkKLSAgICAgICAgZGF0YUxvZ0YoIkpldHRpc29u
aW5nIERGRyBDb2RlQmxvY2sgJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgZGF0YUxvZygiSmV0dGlz
b25pbmcgIiwgKnRoaXMsICIuXG4iKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFs
RGF0YSgpLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwp
OwogfQogCkBAIC0yOTQ4LDcgKzI5NzYsNyBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJl
ZGljdGlvbnMoT3BlCiBib29sIENvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3coKQogewogI2lm
IEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgZGF0YUxvZ0YoIkNvbnNpZGVyaW5nIG9wdGlt
aXppbmcgJXAuLi5cbiIsIHRoaXMpOworICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIG9wdGltaXpp
bmcgIiwgKnRoaXMsICIuLi5cbiIpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxV
RV9QUk9GSUxFKQpAQCAtMjk5Niw3ICszMDI0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnRhbGx5RnJl
cXVlbnRFeGl0U2l0ZXMoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogI2lmIERG
R19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZ0YoIk9TUiBleGl0ICMldSAo
YmMjJXUsIEAldSwgJXMpIGZvciBjb2RlIGJsb2NrICVwIG9jY3VycmVkIGZyZXF1ZW50bHk7IGNv
dW50aW5nIGFzIGZyZXF1ZW50IGV4aXQgc2l0ZS5cbiIsIGksIGV4aXQubV9jb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgsIGV4aXQubV9ub2RlSW5kZXgsIERGRzo6ZXhpdEtpbmRUb1N0cmluZyhleGl0
Lm1fa2luZCksIHRoaXMpOworICAgICAgICBkYXRhTG9nKCJPU1IgZXhpdCAjIiwgaSwgIiAoYmMj
IiwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgIiwgQCIsIGV4aXQubV9ub2RlSW5k
ZXgsICIsICIsIERGRzo6ZXhpdEtpbmRUb1N0cmluZyhleGl0Lm1fa2luZCksICIpIGZvciAiLCAq
dGhpcywgIiBvY2N1cnJlZCBmcmVxdWVudGx5OiBjb3VudGluZyBhcyBmcmVxdWVudCBleGl0IHNp
dGUuXG4iKTsKICNlbmRpZgogICAgIH0KIH0KQEAgLTMwMDUsNyArMzAzMyw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjp0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxV
RV9QUk9GSUxFKQogdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIHsKLSAgICBk
YXRhTG9nRigiVmFsdWVQcm9maWxlIGZvciAlcDpcbiIsIHRoaXMpOworICAgIGRhdGFMb2coIlZh
bHVlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6XG4iKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZSA9IGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICBp
ZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8IDApIHsKQEAgLTMwMjAsMTIgKzMwNDgsMTIg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKICAgICAgICAgcHJvZmlsZS0+
ZHVtcChXVEY6OmRhdGFGaWxlKCkpOwogICAgICAgICBkYXRhTG9nRigiXG4iKTsKICAgICB9Ci0g
ICAgZGF0YUxvZ0YoIlJhcmVDYXNlUHJvZmlsZSBmb3IgJXA6XG4iLCB0aGlzKTsKKyAgICBkYXRh
TG9nKCJSYXJlQ2FzZVByb2ZpbGUgZm9yICIsICp0aGlzLCAiOlxuIik7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpOyArK2kpIHsKICAgICAg
ICAgUmFyZUNhc2VQcm9maWxlKiBwcm9maWxlID0gcmFyZUNhc2VQcm9maWxlKGkpOwogICAgICAg
ICBkYXRhTG9nRigiICAgYmMgPSAlZDogJXVcbiIsIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQs
IHByb2ZpbGUtPm1fY291bnRlcik7CiAgICAgfQotICAgIGRhdGFMb2dGKCJTcGVjaWFsRmFzdENh
c2VQcm9maWxlIGZvciAlcDpcbiIsIHRoaXMpOworICAgIGRhdGFMb2coIlNwZWNpYWxGYXN0Q2Fz
ZVByb2ZpbGUgZm9yICIsICp0aGlzLCAiOlxuIik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bWJlck9mU3BlY2lhbEZhc3RDYXNlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFJh
cmVDYXNlUHJvZmlsZSogcHJvZmlsZSA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUoaSk7CiAgICAg
ICAgIGRhdGFMb2dGKCIgICBiYyA9ICVkOiAldVxuIiwgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNl
dCwgcHJvZmlsZS0+bV9jb3VudGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxsTGlua0lu
Zm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgorI2lu
Y2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVk
ZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb21tZW50LmgiCkBAIC0xMjgsNiArMTI5LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dmlydHVhbCB+Q29kZUJsb2NrKCk7CiAgICAgICAgIAorICAgICAgICBDb2RlQmxvY2tIYXNoIGhh
c2goKSBjb25zdDsKKyAgICAgICAgdm9pZCBkdW1wQXNzdW1pbmdKSVRUeXBlKFByaW50U3RyZWFt
JiwgSklUQ29kZTo6SklUVHlwZSkgY29uc3Q7CisgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OworICAgICAgICAKICAgICAgICAgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCB7
IHJldHVybiBtX251bVBhcmFtZXRlcnM7IH0KICAgICAgICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJz
KGludCBuZXdWYWx1ZSk7CiAgICAgICAgIApAQCAtMTM4LDExICsxNDMsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUGFzc093blB0cjxDb2RlQmxvY2s+IHJlbGVhc2VBbHRlcm5hdGl2ZSgp
IHsgcmV0dXJuIG1fYWx0ZXJuYXRpdmUucmVsZWFzZSgpOyB9CiAgICAgICAgIHZvaWQgc2V0QWx0
ZXJuYXRpdmUoUGFzc093blB0cjxDb2RlQmxvY2s+IGFsdGVybmF0aXZlKSB7IG1fYWx0ZXJuYXRp
dmUgPSBhbHRlcm5hdGl2ZTsgfQogICAgICAgICAKLSAgICAgICAgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBzcGVjaWFsaXphdGlvbktpbmQoKQorICAgICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IHNwZWNpYWxpemF0aW9uS2luZCgpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICht
X2lzQ29uc3RydWN0b3IpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvZGVGb3JDb25zdHJ1Y3Q7
Ci0gICAgICAgICAgICByZXR1cm4gQ29kZUZvckNhbGw7CisgICAgICAgICAgICByZXR1cm4gc3Bl
Y2lhbGl6YXRpb25Gcm9tSXNDb25zdHJ1Y3QobV9pc0NvbnN0cnVjdG9yKTsKICAgICAgICAgfQog
ICAgICAgICAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTYzLDggKzE2Niw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAg
dm9pZCBkdW1wKCk7Ci0gICAgICAgIHZvaWQgZHVtcCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7
CisgICAgICAgIHZvaWQgZHVtcEJ5dGVjb2RlKCk7CisgICAgICAgIHZvaWQgZHVtcEJ5dGVjb2Rl
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBj
aGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKTsKIApAQCAtNDcyLDcg
KzQ3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIEpJVENvZGUmIGdl
dEpJVENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIGdldEpJVENvZGVXaXRoQXJpdHlDaGVjaygpIHsgcmV0dXJuIG1faml0Q29kZVdpdGhB
cml0eUNoZWNrOyB9Ci0gICAgICAgIEpJVENvZGU6OkpJVFR5cGUgZ2V0SklUVHlwZSgpIHsgcmV0
dXJuIG1faml0Q29kZS5qaXRUeXBlKCk7IH0KKyAgICAgICAgSklUQ29kZTo6SklUVHlwZSBnZXRK
SVRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9qaXRDb2RlLmppdFR5cGUoKTsgfQogICAgICAgICBF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklU
Q29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0
KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpID0gMDsKQEAgLTEy
MTIsNyArMTIxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIG1fY29uc3Rh
bnRSZWdpc3RlcnNbaV0uc2V0KCptX2dsb2JhbERhdGEsIG93bmVyRXhlY3V0YWJsZSgpLCBjb25z
dGFudHNbaV0uZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0
ZSosIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7CisgICAg
ICAgIHZvaWQgZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiBiZWdp
biwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7CiAKICAgICAgICAgQ1N0cmluZyByZWdpc3Rlck5hbWUo
RXhlY1N0YXRlKiwgaW50IHIpIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50VW5hcnlPcChFeGVj
U3RhdGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9w
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SGFzaC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrSGFzaC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKKworI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIK
KyNpbmNsdWRlIDx3dGYvU0hBMS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBUQUJM
RSAoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXow
MTIzNDU2Nzg5IikKKworQ29kZUJsb2NrSGFzaDo6Q29kZUJsb2NrSGFzaChjb25zdCBjaGFyKiBz
dHJpbmcpCisgICAgOiBtX2hhc2goMCkKK3sKKyAgICBpZiAoc3RybGVuKHN0cmluZykgIT0gNikK
KyAgICAgICAgQ1JBU0goKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgNjsg
KytpKSB7CisgICAgICAgIG1faGFzaCAqPSA2MjsKKyAgICAgICAgdW5zaWduZWQgYyA9IHN0cmlu
Z1tpXTsKKyAgICAgICAgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB7CisgICAgICAgICAgICBt
X2hhc2ggKz0gYyAtICdBJzsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICd6JykgeworICAgICAgICAgICAgbV9oYXNoICs9IGMg
LSAnYScgKyAyNjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVChjID49ICcwJyAmJiBjIDw9ICc5Jyk7CisgICAgICAgIG1faGFzaCArPSBjIC0gJzAnICsg
MjYgKiAyOworICAgIH0KK30KKworQ29kZUJsb2NrSGFzaDo6Q29kZUJsb2NrSGFzaChjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAg
OiBtX2hhc2goMCkKK3sKKyAgICBTSEExIHNoYTE7CisgICAgc2hhMS5hZGRCeXRlcyhzb3VyY2VD
b2RlLnRvU3RyaW5nKCkudXRmOCgpKTsKKyAgICBWZWN0b3I8dWludDhfdCwgMjA+IGRpZ2VzdDsK
KyAgICBzaGExLmNvbXB1dGVIYXNoKGRpZ2VzdCk7CisgICAgbV9oYXNoICs9IGRpZ2VzdFswXSB8
IChkaWdlc3RbMV0gPDwgOCkgfCAoZGlnZXN0WzJdIDw8IDE2KSB8IChkaWdlc3RbM10gPDwgMjQp
OworICAgIG1faGFzaCBePSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCk7Cit9CisKK3ZvaWQg
Q29kZUJsb2NrSGFzaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIEFTU0VS
VChzdHJsZW4oVEFCTEUpID09IDYyKTsKKyAgICAKKyAgICBjaGFyIGJ1ZmZlcls3XTsKKyAgICB1
bnNpZ25lZCBhY2N1bXVsYXRvciA9IG1faGFzaDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSA2OyBp
LS07KSB7CisgICAgICAgIGJ1ZmZlcltpXSA9IFRBQkxFW2FjY3VtdWxhdG9yICUgNjJdOworICAg
ICAgICBhY2N1bXVsYXRvciAvPSA2MjsKKyAgICB9CisgICAgYnVmZmVyWzZdID0gMDsKKyAgICAK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgQ29kZUJsb2NrSGFzaCByZWNvbXB1dGUoYnVmZmVy
KTsKKyAgICBBU1NFUlQocmVjb21wdXRlID09ICp0aGlzKTsKKyNlbmRpZiAvLyAhQVNTRVJUX0RJ
U0FCTEVECisgICAgCisgICAgb3V0LnByaW50KGJ1ZmZlcik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFz
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tIYXNoLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrSGFzaC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZUJsb2NrSGFz
aF9oCisjZGVmaW5lIENvZGVCbG9ja0hhc2hfaAorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCisvLyBDb2RlQmxvY2sg
aGFzaGVzIGFyZSB1c2VmdWwgZm9yIGluZm9ybWFsbHkgaWRlbnRpZnlpbmcgY29kZSBibG9ja3Mu
IFRoZXkgY29ycmVzcG9uZAorLy8gdG8gdGhlIGxvdyAzMiBiaXRzIG9mIGEgU0hBMSBoYXNoIG9m
IHRoZSBzb3VyY2UgY29kZSB3aXRoIHR3byBsb3cgYml0IGZsaXBwZWQKKy8vIGFjY29yZGluZyB0
byB0aGUgcm9sZSB0aGF0IHRoZSBjb2RlIGJsb2NrIHNlcnZlcyAoY2FsbCwgY29uc3RydWN0KS4g
QWRkaXRpb25hbGx5LCB0aGUKKy8vIGhhc2hlcyBhcmUgdHlwaWNhbGx5IG9wZXJhdGVkIG92ZXIg
dXNpbmcgYSBzdHJpbmcgaW4gd2hpY2ggdGhlIGhhc2ggaXMgdHJhbnNmb3JtZWQKKy8vIGludG8g
YSA2LWJ5dGUgYWxwaGFudW1lcmljIHJlcHJlc2VudGF0aW9uLiBUaGlzIGNhbiBiZSByZXRyaWV2
ZWQgYnkgdXNpbmcKKy8vIHRvU3RyaW5nKGNvbnN0IENvZGVCbG9ja0hhc2gmKS4gRmluYWxseSwg
d2Ugc3VwcG9ydCBDb2RlQmxvY2tIYXNoZXMgZm9yIG5hdGl2ZQorLy8gZnVuY3Rpb25zLCBpbiB3
aGljaCBjYXNlIHRoZSBoYXNoIGlzIHJlcGxhY2VkIGJ5IHRoZSBmdW5jdGlvbiBhZGRyZXNzLgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU291cmNlQ29kZTsKKworY2xhc3MgQ29kZUJsb2Nr
SGFzaCB7CitwdWJsaWM6CisgICAgQ29kZUJsb2NrSGFzaCgpCisgICAgICAgIDogbV9oYXNoKDAp
CisgICAgeworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBDb2RlQmxvY2tIYXNoKHVuc2lnbmVk
IGhhc2gpCisgICAgICAgIDogbV9oYXNoKGhhc2gpCisgICAgeworICAgIH0KKyAgICAKKyAgICBD
b2RlQmxvY2tIYXNoKGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsK
KyAgICAKKyAgICBleHBsaWNpdCBDb2RlQmxvY2tIYXNoKGNvbnN0IGNoYXIqKTsKKyAgICAKKyAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CisgICAgCisgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgCisgICAgLy8gQ29tcGFyaXNvbiBtZXRo
b2RzIHVzZWZ1bCBmb3IgYmlzZWN0aW9uLgorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2Rl
QmxvY2tIYXNoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gaGFzaCgpID09IG90aGVyLmhhc2goKTsg
fQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2RlQmxvY2tIYXNoJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gaGFzaCgpICE9IG90aGVyLmhhc2goKTsgfQorICAgIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IENvZGVCbG9ja0hhc2gmIG90aGVyKSBjb25zdCB7IHJldHVybiBoYXNoKCkgPCBvdGhlci5o
YXNoKCk7IH0KKyAgICBib29sIG9wZXJhdG9yPihjb25zdCBDb2RlQmxvY2tIYXNoJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gaGFzaCgpID4gb3RoZXIuaGFzaCgpOyB9CisgICAgYm9vbCBvcGVyYXRv
cjw9KGNvbnN0IENvZGVCbG9ja0hhc2gmIG90aGVyKSBjb25zdCB7IHJldHVybiBoYXNoKCkgPD0g
b3RoZXIuaGFzaCgpOyB9CisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IENvZGVCbG9ja0hhc2gm
IG90aGVyKSBjb25zdCB7IHJldHVybiBoYXNoKCkgPj0gb3RoZXIuaGFzaCgpOyB9CisgICAgCitw
cml2YXRlOgorICAgIHVuc2lnbmVkIG1faGFzaDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gQ29kZUJsb2NrSGFzaF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrV2l0aEpJVFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrV2l0aEpJVFR5cGUuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZUJsb2NrV2l0aEpJVFR5cGVfaAorI2Rl
ZmluZSBDb2RlQmxvY2tXaXRoSklUVHlwZV9oCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKKy8vIFdlIHNvbWV0aW1lcyB3aGF0IHRvIHByaW50IHRoZSBDb2Rl
QmxvY2sncyBJRCBiZWZvcmUgc2V0dGluZyBpdHMgSklUQ29kZS4gQXQgdGhhdAorLy8gcG9pbnQg
dGhlIENvZGVCbG9jayB3aWxsIGNsYWltIGEgYm9ndXMgSklUVHlwZS4gVGhpcyBoZWxwZXIgY2xh
c3MgbGV0cyB1cyBkbyB0aGF0LgorCitjbGFzcyBDb2RlQmxvY2tXaXRoSklUVHlwZSB7CitwdWJs
aWM6CisgICAgQ29kZUJsb2NrV2l0aEpJVFR5cGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENv
ZGU6OkpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisg
ICAgICAgICwgbV9qaXRUeXBlKGppdFR5cGUpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIG1fY29kZUJsb2Nr
LT5kdW1wQXNzdW1pbmdKSVRUeXBlKG91dCwgbV9qaXRUeXBlKTsKKyAgICB9Citwcml2YXRlOgor
ICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAgSklUQ29kZTo6SklUVHlwZSBtX2ppdFR5
cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVCbG9ja1dpdGhK
SVRUeXBlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmln
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
T3JpZ2luLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKwordW5zaWduZWQgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JDYWxs
RnJhbWUoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCit7CisgICAgdW5zaWduZWQg
cmVzdWx0ID0gMTsKKyAgICBmb3IgKElubGluZUNhbGxGcmFtZSogY3VycmVudCA9IGlubGluZUNh
bGxGcmFtZTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPmNhbGxlci5pbmxpbmVDYWxsRnJh
bWUpCisgICAgICAgIHJlc3VsdCsrOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Vuc2lnbmVk
IENvZGVPcmlnaW46OmlubGluZURlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5saW5lRGVw
dGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKK30KKyAgICAKK1ZlY3RvcjxDb2RlT3Jp
Z2luPiBDb2RlT3JpZ2luOjppbmxpbmVTdGFjaygpIGNvbnN0Cit7CisgICAgVmVjdG9yPENvZGVP
cmlnaW4+IHJlc3VsdChpbmxpbmVEZXB0aCgpKTsKKyAgICByZXN1bHQubGFzdCgpID0gKnRoaXM7
CisgICAgdW5zaWduZWQgaW5kZXggPSByZXN1bHQuc2l6ZSgpIC0gMjsKKyAgICBmb3IgKElubGlu
ZUNhbGxGcmFtZSogY3VycmVudCA9IGlubGluZUNhbGxGcmFtZTsgY3VycmVudDsgY3VycmVudCA9
IGN1cnJlbnQtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIHJlc3VsdFtpbmRleC0t
XSA9IGN1cnJlbnQtPmNhbGxlcjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitDb2RlQmxvY2tI
YXNoIElubGluZUNhbGxGcmFtZTo6aGFzaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV4ZWN1dGFi
bGUtPmhhc2hGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5o
CShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIENvZGVPcmln
aW5faAogI2RlZmluZSBDb2RlT3JpZ2luX2gKIAorI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIK
KyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiVmFsdWVSZWNv
dmVyeS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0
b3IuaD4KQEAgLTk4LDYgKzEwMCwxMCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICBC
aXRWZWN0b3IgY2FwdHVyZWRWYXJzOyAvLyBJbmRleGVkIGJ5IHRoZSBtYWNoaW5lIGNhbGwgZnJh
bWUncyB2YXJpYWJsZSBudW1iZXJpbmcuCiAgICAgdW5zaWduZWQgc3RhY2tPZmZzZXQgOiAzMTsK
ICAgICBib29sIGlzQ2FsbCA6IDE7CisgICAgCisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBz
cGVjaWFsaXphdGlvbktpbmQoKSBjb25zdCB7IHJldHVybiBzcGVjaWFsaXphdGlvbkZyb21Jc0Nh
bGwoaXNDYWxsKTsgfQorICAgIAorICAgIENvZGVCbG9ja0hhc2ggaGFzaCgpIGNvbnN0OwogfTsK
IAogc3RydWN0IENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQgewpAQCAtMTA1LDM2ICsxMTEs
MTIgQEAgc3RydWN0IENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQgewogICAgIHVuc2lnbmVk
IGNhbGxSZXR1cm5PZmZzZXQ7CiB9OwogCi1pbmxpbmUgdW5zaWduZWQgQ29kZU9yaWdpbjo6aW5s
aW5lRGVwdGhGb3JDYWxsRnJhbWUoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCi17
Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gMTsKLSAgICBmb3IgKElubGluZUNhbGxGcmFtZSogY3Vy
cmVudCA9IGlubGluZUNhbGxGcmFtZTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPmNhbGxl
ci5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIHJlc3VsdCsrOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGlubGluZURlcHRoRm9yQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7Ci19
Ci0gICAgCiBpbmxpbmUgYm9vbCBDb2RlT3JpZ2luOjpvcGVyYXRvcj09KGNvbnN0IENvZGVPcmln
aW4mIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBieXRlY29kZUluZGV4ID09IG90aGVyLmJ5
dGVjb2RlSW5kZXgKICAgICAgICAgJiYgaW5saW5lQ2FsbEZyYW1lID09IG90aGVyLmlubGluZUNh
bGxGcmFtZTsKIH0KICAgICAKLS8vIEdldCB0aGUgaW5saW5lIHN0YWNrLiBUaGlzIGlzIHNsb3cs
IGFuZCBpcyBpbnRlbmRlZCBmb3IgZGVidWdnaW5nIG9ubHkuCi1pbmxpbmUgVmVjdG9yPENvZGVP
cmlnaW4+IENvZGVPcmlnaW46OmlubGluZVN0YWNrKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8Q29k
ZU9yaWdpbj4gcmVzdWx0KGlubGluZURlcHRoKCkpOwotICAgIHJlc3VsdC5sYXN0KCkgPSAqdGhp
czsKLSAgICB1bnNpZ25lZCBpbmRleCA9IHJlc3VsdC5zaXplKCkgLSAyOwotICAgIGZvciAoSW5s
aW5lQ2FsbEZyYW1lKiBjdXJyZW50ID0gaW5saW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJyZW50
ID0gY3VycmVudC0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgcmVzdWx0W2luZGV4
LS1dID0gY3VycmVudC0+Y2FsbGVyOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGlubGluZSB1
bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0Rm9yQ29kZU9yaWdpbihDb2RlT3JpZ2luQXRDYWxs
UmV0dXJuT2Zmc2V0KiBkYXRhKQogewogICAgIHJldHVybiBkYXRhLT5jYWxsUmV0dXJuT2Zmc2V0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29k
ZVR5cGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RG
IHsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29kZVR5cGUg
Y29kZVR5cGUpCit7CisgICAgc3dpdGNoIChjb2RlVHlwZSkgeworICAgIGNhc2UgSlNDOjpHbG9i
YWxDb2RlOgorICAgICAgICBvdXQucHJpbnQoIkdsb2JhbCIpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBKU0M6OkV2YWxDb2RlOgorICAgICAgICBvdXQucHJpbnQoIkV2YWwiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpGdW5jdGlvbkNvZGU6CisgICAgICAgIG91dC5wcmlu
dCgiRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIENS
QVNIKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaAkocmV2aXNp
b24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDIyICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51
bSBDb2RlVHlwZSB7IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsKIAotaW5s
aW5lIGNvbnN0IGNoYXIqIGNvZGVUeXBlVG9TdHJpbmcoQ29kZVR5cGUgY29kZVR5cGUpCi17Ci0g
ICAgc3dpdGNoIChjb2RlVHlwZSkgewotICAgIGNhc2UgR2xvYmFsQ29kZToKLSAgICAgICAgcmV0
dXJuICJHbG9iYWxDb2RlIjsKLSAgICBjYXNlIEV2YWxDb2RlOgotICAgICAgICByZXR1cm4gIkV2
YWxDb2RlIjsKLSAgICBjYXNlIEZ1bmN0aW9uQ29kZToKLSAgICAgICAgcmV0dXJuICJGdW5jdGlv
bkNvZGUiOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCituYW1lc3Bh
Y2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBKU0M6OkNvZGVUeXBlKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAv
LyBDb2RlVHlwZV9oCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVj
dXRpb25Db3VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYwLDExICsxNjAsOSBAQCB2b2lkIEV4ZWN1dGlvbkNvdW50ZXI6OnJlc2V0KCkKICAg
ICBtX2FjdGl2ZVRocmVzaG9sZCA9IDA7CiB9CiAKLWNvbnN0IGNoYXIqIEV4ZWN1dGlvbkNvdW50
ZXI6OnN0YXR1cygpIGNvbnN0Cit2b2lkIEV4ZWN1dGlvbkNvdW50ZXI6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY2hhciByZXN1bHRbODBdOwotICAgIHNucHJp
bnRmKHJlc3VsdCwgc2l6ZW9mKHJlc3VsdCksICIlbGYvJWxmLCAlZCIsIGNvdW50KCksIHN0YXRp
Y19jYXN0PGRvdWJsZT4obV9hY3RpdmVUaHJlc2hvbGQpLCBtX2NvdW50ZXIpOwotICAgIHJldHVy
biByZXN1bHQ7CisgICAgb3V0LnByaW50ZigiJWxmLyVsZiwgJWQiLCBjb3VudCgpLCBzdGF0aWNf
Y2FzdDxkb3VibGU+KG1fYWN0aXZlVGhyZXNob2xkKSwgbV9jb3VudGVyKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0
aW9uQ291bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiT3B0
aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TaW1w
bGVTdGF0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0TmV3VGhyZXNob2xkKGludDMyX3QgdGhyZXNob2xkLCBDb2RlQmxvY2sqKTsK
ICAgICB2b2lkIGRlZmVySW5kZWZpbml0ZWx5KCk7CiAgICAgZG91YmxlIGNvdW50KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3RvdGFsQ291bnQpICsgbV9jb3VudGVyOyB9
Ci0gICAgY29uc3QgY2hhciogc3RhdHVzKCkgY29uc3Q7CisgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAgICAgc3RhdGljIGRvdWJsZSBhcHBseU1lbW9yeVVzYWdlSGV1cmlzdGlj
cyhpbnQzMl90IHZhbHVlLCBDb2RlQmxvY2sqKTsKICAgICBzdGF0aWMgaW50MzJfdCBhcHBseU1l
bW9yeVVzYWdlSGV1cmlzdGljc0FuZENvbnZlcnRUb0ludChpbnQzMl90IHZhbHVlLCBDb2RlQmxv
Y2sqKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEzNjA5NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjQ1LDIxICszNjQ1LDIzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
Q29kZUJsb2NrKCkKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tUb3At
Pm1fY29kZUJsb2NrOwogICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBk
YXRhTG9nRigiUGFyc2luZyBjb2RlIGJsb2NrICVwLiBjb2RlVHlwZSA9ICVzLCBjYXB0dXJlQ291
bnQgPSAldSwgbmVlZHNGdWxsU2NvcGVDaGFpbiA9ICVzLCBuZWVkc0FjdGl2YXRpb24gPSAlcywg
aXNTdHJpY3RNb2RlID0gJXNcbiIsCi0gICAgICAgICAgICBjb2RlQmxvY2ssCi0gICAgICAgICAg
ICBjb2RlVHlwZVRvU3RyaW5nKGNvZGVCbG9jay0+Y29kZVR5cGUoKSksCi0gICAgICAgICAgICBj
b2RlQmxvY2stPnN5bWJvbFRhYmxlKCkgPyBjb2RlQmxvY2stPnN5bWJvbFRhYmxlKCktPmNhcHR1
cmVDb3VudCgpIDogMCwKLSAgICAgICAgICAgIGNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFp
bigpPyJ0cnVlIjoiZmFsc2UiLAotICAgICAgICAgICAgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+bmVlZHNBY3RpdmF0aW9uKCk/InRydWUiOiJmYWxzZSIsCi0gICAgICAgICAgICBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKT8idHJ1ZSI6ImZhbHNlIik7
Ci0gICAgY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKS0+ZHVtcCgpOworICAgIGRhdGFMb2co
CisgICAgICAgICJQYXJzaW5nICIsICpjb2RlQmxvY2ssCisgICAgICAgICI6IGNhcHR1cmVDb3Vu
dCA9ICIsIGNvZGVCbG9jay0+c3ltYm9sVGFibGUoKSA/IGNvZGVCbG9jay0+c3ltYm9sVGFibGUo
KS0+Y2FwdHVyZUNvdW50KCkgOiAwLAorICAgICAgICAiLCBuZWVkc0Z1bGxTY29wZUNoYWluID0g
IiwgY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCksCisgICAgICAgICIsIG5lZWRzQWN0
aXZhdGlvbiA9ICIsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPm5lZWRzQWN0aXZhdGlv
bigpLAorICAgICAgICAiLCBpc1N0cmljdE1vZGUgPSAiLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5pc1N0cmljdE1vZGUoKSwgIlxuIik7CisgICAgY29kZUJsb2NrLT5iYXNlbGluZVZl
cnNpb24oKS0+ZHVtcEJ5dGVjb2RlKCk7CiAjZW5kaWYKICAgICAKICAgICBmb3IgKHVuc2lnbmVk
IGp1bXBUYXJnZXRJbmRleCA9IDA7IGp1bXBUYXJnZXRJbmRleCA8PSBjb2RlQmxvY2stPm51bWJl
ck9mSnVtcFRhcmdldHMoKTsgKytqdW1wVGFyZ2V0SW5kZXgpIHsKICAgICAgICAgLy8gVGhlIG1h
eGltdW0gYnl0ZWNvZGUgb2Zmc2V0IHRvIGdvIGludG8gdGhlIGN1cnJlbnQgYmFzaWNibG9jayBp
cyBlaXRoZXIgdGhlIG5leHQganVtcCB0YXJnZXQsIG9yIHRoZSBlbmQgb2YgdGhlIGluc3RydWN0
aW9ucy4KICAgICAgICAgdW5zaWduZWQgbGltaXQgPSBqdW1wVGFyZ2V0SW5kZXggPCBjb2RlQmxv
Y2stPm51bWJlck9mSnVtcFRhcmdldHMoKSA/IGNvZGVCbG9jay0+anVtcFRhcmdldChqdW1wVGFy
Z2V0SW5kZXgpIDogY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAjaWYgREZHX0VO
QUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiUGFyc2luZyBieXRlY29kZSB3
aXRoIGxpbWl0ICVwIGJjIyV1IGF0IGlubGluZSBkZXB0aCAldS5cbiIsIG1faW5saW5lU3RhY2tU
b3AtPmV4ZWN1dGFibGUoKSwgbGltaXQsIENvZGVPcmlnaW46OmlubGluZURlcHRoRm9yQ2FsbEZy
YW1lKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKSk7CisgICAgICAgIGRhdGFM
b2coCisgICAgICAgICAgICAiUGFyc2luZyBieXRlY29kZSB3aXRoIGxpbWl0ICIsIG1faW5saW5l
U3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5oYXNoKCksCisgICAgICAgICAgICAiIGJjIyIs
IGxpbWl0LCAiIGF0IGlubGluZSBkZXB0aCAiLAorICAgICAgICAgICAgQ29kZU9yaWdpbjo6aW5s
aW5lRGVwdGhGb3JDYWxsRnJhbWUobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUp
LCAiLlxuIik7CiAjZW5kaWYKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEluZGV4IDwgbGltaXQp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIu
Y3BwCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rp
c2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNs
dWRlICJERkdHcmFwaC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkBAIC00
Myw3ICs0NCw3IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFtJiBvdXQKIHsK
ICAgICBtX2dyYXBoLm1fZG9taW5hdG9ycy5jb21wdXRlSWZOZWNlc3NhcnkobV9ncmFwaCk7CiAg
ICAgCi0gICAgb3V0LnByaW50KCJHZW5lcmF0ZWQgSklUIGNvZGUgZm9yIERGRyBDb2RlQmxvY2sg
IiwgUmF3UG9pbnRlcihtX2dyYXBoLm1fY29kZUJsb2NrKSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQg
PSAiLCBtX2dyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICI6XG4iKTsKKyAg
ICBvdXQucHJpbnQoIkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5
cGUobV9ncmFwaC5tX2NvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSwgIiwgaW5zdHJ1Y3Rpb24g
Y291bnQgPSAiLCBtX2dyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICI6XG4i
KTsKICAgICBvdXQucHJpbnQoIiAgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVyKGxpbmtCdWZmZXIu
ZGVidWdBZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0PGNoYXIqPihsaW5r
QnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCkpLCAiKTpcbiIp
OwogICAgIAogICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxMzYwOTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsMTQg
Kzg4LDE0IEBAIHZvaWQgR3JhcGg6OmR1bXBDb2RlT3JpZ2luKFByaW50U3RyZWFtJiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBwcmV2aW91c0lubGluZVN0YWNrLnNpemUoKTsgaS0tID4gaW5kZXhP
ZkRpdmVyZ2VuY2U7KSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgpOwogICAgICAgICBwcmlu
dFdoaXRlU3BhY2Uob3V0LCBpICogMik7Ci0gICAgICAgIG91dC5wcmludCgiPC0tICIsIFJhd1Bv
aW50ZXIocHJldmlvdXNJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUu
Z2V0KCkpLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KCI8LS0gIiwgcHJldmlvdXNJbmxpbmVT
dGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmhhc2goKSwgIlxuIik7CiAgICAgfQogICAgIAogICAg
IC8vIFByaW50IHRoZSBwdXNoZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kZXhPZkRpdmVy
Z2VuY2U7IGkgPCBjdXJyZW50SW5saW5lU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgb3V0
LnByaW50KHByZWZpeCk7CiAgICAgICAgIHByaW50V2hpdGVTcGFjZShvdXQsIGkgKiAyKTsKLSAg
ICAgICAgb3V0LnByaW50KCItLT4gIiwgUmF3UG9pbnRlcihjdXJyZW50SW5saW5lU3RhY2tbaV0u
aW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKSwgIlxuIik7CisgICAgICAgIG91dC5w
cmludCgiLS0+ICIsIGN1cnJlbnRJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmhhc2go
KSwgIlxuIik7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAg
LTgxLDcgKzgyLDEwIEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNwZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3Jl
Y292ZXJ5SW5kZXggLSAxKTsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBk
YXRhTG9nRigiR2VuZXJhdGluZyBPU1IgZXhpdCAjJXUgKHNlcSMldSwgYmMjJXUsIEAldSwgJXMp
IGZvciBjb2RlIGJsb2NrICVwLlxuIiwgZXhpdEluZGV4LCBleGl0Lm1fc3RyZWFtSW5kZXgsIGV4
aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGV4aXQubV9ub2RlSW5kZXgsIGV4aXRLaW5k
VG9TdHJpbmcoZXhpdC5tX2tpbmQpLCBjb2RlQmxvY2spOworICAgIGRhdGFMb2coCisgICAgICAg
ICJHZW5lcmF0aW5nIE9TUiBleGl0ICMiLCBleGl0SW5kZXgsICIgKHNlcSMiLCBleGl0Lm1fc3Ry
ZWFtSW5kZXgsCisgICAgICAgICIsIGJjIyIsIGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgsICIsIEAiLCBleGl0Lm1fbm9kZUluZGV4LCAiLCAiLAorICAgICAgICBleGl0S2luZFRvU3Ry
aW5nKGV4aXQubV9raW5kKSwgIikgZm9yICIsICpjb2RlQmxvY2ssICIuXG4iKTsKICNlbmRpZgog
CiAgICAgewpAQCAtOTUsOSArOTksOSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgZXhpdC5tX2NvZGUgPSBGSU5BTElaRV9DT0RFX0lGKAogICAgICAgICAg
ICAgc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCksCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAg
ICAgICAgICAgICgiREZHIE9TUiBleGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZyb20gQ29kZUJs
b2NrICVwIiwKLSAgICAgICAgICAgICBleGl0SW5kZXgsIGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgsIGV4aXQubV9ub2RlSW5kZXgsCi0gICAgICAgICAgICAgZXhpdEtpbmRUb1N0cmlu
ZyhleGl0Lm1fa2luZCksIGNvZGVCbG9jaykpOworICAgICAgICAgICAgKCJERkcgT1NSIGV4aXQg
IyV1IChiYyMldSwgQCV1LCAlcykgZnJvbSAlcyIsCisgICAgICAgICAgICAgICAgZXhpdEluZGV4
LCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LAorICAg
ICAgICAgICAgICAgIGV4aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0b0NTdHJpbmcoKmNv
ZGVCbG9jaykuZGF0YSgpKSk7CiAgICAgfQogICAgIAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUyMiwyMiArMTUyMiwyNCBAQCB2b2lkIERGR19PUEVSQVRJT04gZGVidWdPcGVyYXRp
b25QcmludFNwCiAgICAgU3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKiBkZWJ1Z0luZm8gPSBz
dGF0aWNfY2FzdDxTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qPihkZWJ1Z0luZm9SYXcpOwog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZGVidWdJbmZvLT5jb2RlQmxvY2s7CiAgICAgQ29k
ZUJsb2NrKiBhbHRlcm5hdGl2ZSA9IGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKTsKLSAgICBkYXRh
TG9nRigiU3BlY3VsYXRpb24gZmFpbHVyZSBpbiAlcCBhdCBAJXUgd2l0aCBleGVjdXRlQ291bnRl
ciA9ICVzLCAiCi0gICAgICAgICAgICAicmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwg
b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXUsICIKLSAgICAgICAgICAgICJvc3JFeGl0Q291
bnRlciA9ICV1XG4iLAotICAgICAgICAgICAgY29kZUJsb2NrLAotICAgICAgICAgICAgZGVidWdJ
bmZvLT5ub2RlSW5kZXgsCi0gICAgICAgICAgICBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5q
aXRFeGVjdXRlQ291bnRlcigpLnN0YXR1cygpIDogMCwKLSAgICAgICAgICAgIGFsdGVybmF0aXZl
ID8gYWx0ZXJuYXRpdmUtPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCkgOiAwLAotICAgICAg
ICAgICAgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
KCkgOiAwLAotICAgICAgICAgICAgY29kZUJsb2NrLT5vc3JFeGl0Q291bnRlcigpKTsKKyAgICBk
YXRhTG9nKAorICAgICAgICAiU3BlY3VsYXRpb24gZmFpbHVyZSBpbiAiLCAqY29kZUJsb2NrLCAi
IGF0IEAiLCBkZWJ1Z0luZm8tPm5vZGVJbmRleCwKKyAgICAgICAgIiB3aXRoICIpOworICAgIGlm
IChhbHRlcm5hdGl2ZSkgeworICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgImV4ZWN1dGVD
b3VudGVyID0gIiwgYWx0ZXJuYXRpdmUtPmppdEV4ZWN1dGVDb3VudGVyKCksCisgICAgICAgICAg
ICAiLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICIsIGFsdGVybmF0aXZlLT5yZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlcigpLAorICAgICAgICAgICAgIiwgb3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyID0gIiwgYWx0ZXJuYXRpdmUtPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgZGF0YUxvZygibm8gYWx0ZXJuYXRpdmUgY29kZSBibG9jayAoaS5l
LiB3ZSd2ZSBiZWVuIGpldHRpc29uZWQpIik7CisgICAgZGF0YUxvZygiLCBvc3JFeGl0Q291bnRl
ciA9ICIsIGNvZGVCbG9jay0+b3NyRXhpdENvdW50ZXIoKSwgIlxuIik7CiB9CiAjZW5kaWYKIAog
ZXh0ZXJuICJDIiB2b2lkIERGR19PUEVSQVRJT04gdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENv
ZGVCbG9jayogY29kZUJsb2NrKQogewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAg
ZGF0YUxvZ0YoIiVwOiBFbnRlcmVkIHJlb3B0aW1pemVcbiIsIGNvZGVCbG9jayk7CisgICAgZGF0
YUxvZygqY29kZUJsb2NrLCAiOiBFbnRlcmVkIHJlb3B0aW1pemVcbiIpOwogI2VuZGlmCiAgICAg
Ly8gV2UgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgYmFzZWxpbmUgY29kZSBibG9jay4KICAgICBB
U1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24g
MTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5o
IgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKQEAgLTIzNSw4ICsyMzYsOCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0
ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAgCiAgICAgc3R1YlJvdXRpbmUgPSBGSU5BTElaRV9D
T0RFX0ZPUl9ERkdfU1RVQigKICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICgiREZHIHBy
b3RvdHlwZSBjaGFpbiBhY2Nlc3Mgc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQg
JXAiLAotICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN1Y2Nlc3NMYWJlbC5leGVjdXRhYmxl
QWRkcmVzcygpKSk7CisgICAgICAgICgiREZHIHByb3RvdHlwZSBjaGFpbiBhY2Nlc3Mgc3R1YiBm
b3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICB0b0NTdHJpbmcoKmV4ZWMtPmNv
ZGVCbG9jaygpKS5kYXRhKCksIHN1Y2Nlc3NMYWJlbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiB9
CiAKIHN0YXRpYyBib29sIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
YmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpAQCAtMjk2LDkgKzI5Nyw5
IEBAIHN0YXRpYyBib29sIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGUKICAgICAgICAgCiAg
ICAgICAgIHN0dWJJbmZvLnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfREZHX1NUVUIo
CiAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICgiREZHIEdldEJ5SWQgYXJy
YXkgbGVuZ3RoIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxh
YmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRmZy5kZWx0YUNh
bGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgICgiREZHIEdldEJ5
SWQgYXJyYXkgbGVuZ3RoIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAg
ICAgICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRhdGEoKSwgc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnBhdGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAg
ICAgICAgCiAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwog
ICAgICAgICByZXBsYWNlV2l0aEp1bXAocmVwYXRjaEJ1ZmZlciwgc3R1YkluZm8sIHN0dWJJbmZv
LnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKQEAgLTUyNSw5ICs1MjYsOSBAQCBzdGF0aWMg
Ym9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgICAgICBjcmVhdGVKSVRT
dHViUm91dGluZSgKICAgICAgICAgICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgKICAgICAgICAg
ICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICgiREZHIEdldEJ5
SWQgcG9seW1vcnBoaWMgbGlzdCBhY2Nlc3MgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50
ICVwIiwKLSAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygp
KSksCisgICAgICAgICAgICAgICAgICAgICgiREZHIEdldEJ5SWQgcG9seW1vcnBoaWMgbGlzdCBh
Y2Nlc3MgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAgICAgICAgICAg
dG9DU3RyaW5nKCpleGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAg
ICAgICAgICAgICAgICAgKmdsb2JhbERhdGEsCiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgICAgICAgICBzbG90LmNhY2hlZFByb3BlcnR5VHlw
ZSgpID09IFByb3BlcnR5U2xvdDo6R2V0dGVyCkBAIC03MzcsOSArNzM4LDkgQEAgc3RhdGljIHZv
aWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgICAgICAgICAgCiAgICAgc3R1YlJvdXRpbmUgPSBG
SU5BTElaRV9DT0RFX0ZPUl9ERkdfU1RVQigKICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAg
ICgiREZHIFB1dEJ5SWQgcmVwbGFjZSBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2lu
dCAlcCIsCi0gICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGZnLmRl
bHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAoIkRGRyBQdXRC
eUlkIHJlcGxhY2Ugc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICB0
b0NTdHJpbmcoKmV4ZWMtPmNvZGVCbG9jaygpKS5kYXRhKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRm
Zy5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIH0KIAogc3RhdGljIHZv
aWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKApAQCAtOTM3LDExICs5MzgsMTEgQEAgc3RhdGljIHZv
aWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICBjcmVhdGVKSVRTdHViUm91dGluZSgK
ICAgICAgICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKAogICAgICAgICAgICAgICAgIHBhdGNoQnVm
ZmVyLAotICAgICAgICAgICAgICAgICgiREZHIFB1dEJ5SWQgJXN0cmFuc2l0aW9uIHN0dWIgKCVw
IC0+ICVwKSBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgIT0gb2xkU3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpID8gInJlYWxsb2NhdGluZyAiIDogIiIsCi0gICAgICAgICAgICAgICAg
IG9sZFN0cnVjdHVyZSwgc3RydWN0dXJlLAotICAgICAgICAgICAgICAgICBleGVjLT5jb2RlQmxv
Y2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCi0gICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRh
YmxlQWRkcmVzcygpKSksCisgICAgICAgICAgICAgICAgKCJERkcgUHV0QnlJZCAlc3RyYW5zaXRp
b24gc3R1YiAoJXAgLT4gJXApIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAg
ICAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG9sZFN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSA/ICJyZWFsbG9jYXRpbmcgIiA6ICIiLAorICAgICAgICAgICAg
ICAgICAgICBvbGRTdHJ1Y3R1cmUsIHN0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgdG9D
U3RyaW5nKCpleGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLnBh
dGNoLmRmZy5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAg
ICAgICpnbG9iYWxEYXRhLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhl
Y3V0YWJsZSgpLAogICAgICAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9
IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwKQEAgLTEyMzAsOSArMTIzMSw5IEBA
IHZvaWQgZGZnTGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSogZXhlYywKICAgICBSZWZQdHI8Q2xv
c3VyZUNhbGxTdHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBhZG9wdFJlZihuZXcgQ2xvc3VyZUNh
bGxTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCiAgICAgICAgICAgICBw
YXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICgiREZHIGNsb3N1cmUgY2FsbCBzdHViIGZvciBDb2Rl
QmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCwgdGFyZ2V0ICVwIChDb2RlQmxvY2sgJXApIiwKLSAg
ICAgICAgICAgICAgICBjYWxsZXJDb2RlQmxvY2ssIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24ubGFiZWxBdE9mZnNldCgwKS5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICAgICAg
ICAgIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY2FsbGVlQ29kZUJsb2NrKSksCisgICAg
ICAgICAgICAoIkRGRyBjbG9zdXJlIGNhbGwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCwg
dGFyZ2V0ICVwICglcykiLAorICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqY2FsbGVyQ29kZUJs
b2NrKS5kYXRhKCksIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNl
dCgwKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAgICAgICAgICAgICAgIGNvZGVQdHIuZXhlY3V0
YWJsZUFkZHJlc3MoKSwgdG9DU3RyaW5nKCpjYWxsZWVDb2RlQmxvY2spLmRhdGEoKSkpLAogICAg
ICAgICAqZ2xvYmFsRGF0YSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3Ry
dWN0dXJlLCBleGVjdXRhYmxlLCBjYWxsTGlua0luZm8uY29kZU9yaWdpbikpOwogICAgIAogICAg
IFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjYWxsZXJDb2RlQmxvY2spOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBJbnRl
cnByZXRlcjo6ZHVtcENhbGxGcmFtZShDYWxsRnJhbQogCiB2b2lkIEludGVycHJldGVyOjpkdW1w
Q2FsbEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPmR1bXAoKTsKKyAgICBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5kdW1wQnl0ZWNvZGUo
KTsKICAgICBkdW1wUmVnaXN0ZXJzKGNhbGxGcmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpJVENvZGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEpTQzo6SklUQ29kZTo6SklUVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlw
ZSkgeworICAgIGNhc2UgSlNDOjpKSVRDb2RlOjpOb25lOgorICAgICAgICBvdXQucHJpbnQoIk5v
bmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpKSVRDb2RlOjpIb3N0Q2FsbFRo
dW5rOgorICAgICAgICBvdXQucHJpbnQoIkhvc3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgSlNDOjpKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICBvdXQucHJpbnQoIkxM
SW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6SklUQ29kZTo6QmFzZWxpbmVK
SVQ6CisgICAgICAgIG91dC5wcmludCgiQmFzZWxpbmUiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgSlNDOjpKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIG91dC5wcmludCgiREZHIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBkZWZhdWx0OgorICAgICAgICBDUkFTSCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTcsNyArMTU3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9yZWYuZXhlY3V0YWJsZU1lbW9yeSgp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBKSVRUeXBlIGppdFR5cGUoKQorICAgICAg
ICBKSVRUeXBlIGppdFR5cGUoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
bV9qaXRUeXBlOwogICAgICAgICB9CkBAIC0xODcsNiArMTg3LDEzIEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2VuZGlmIC8vIEVOQUJMRShKSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICB9OwogCi19Owor
fSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVh
bTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6SklUQ29kZTo6SklUVHlw
ZSk7CisKK30gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkpJ
VC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ2LDcgKzQ3LDcgQEAgSklURGlzYXNzZW1ibGVy
Ojp+SklURGlzYXNzZW1ibGVyKCkKIAogdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKLSAgICBvdXQucHJpbnQoIkJh
c2VsaW5lIEpJVCBjb2RlIGZvciBDb2RlQmxvY2sgIiwgUmF3UG9pbnRlcihtX2NvZGVCbG9jayks
ICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQo
KSwgIlxuIik7CisgICAgb3V0LnByaW50KCJCYXNlbGluZSBKSVQgY29kZSBmb3IgIiwgQ29kZUJs
b2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVENvZGU6OkJhc2VsaW5lSklUKSwgIiwgaW5z
dHJ1Y3Rpb24gY291bnQgPSAiLCBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiXG4i
KTsKICAgICBvdXQucHJpbnQoIiAgIENvZGUgYXQgWyIsIFJhd1BvaW50ZXIobGlua0J1ZmZlci5k
ZWJ1Z0FkZHJlc3MoKSksICIsICIsIFJhd1BvaW50ZXIoc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtC
dWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSksICIpOlxuIik7
CiAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgbGlua0J1ZmZlciwgbV9zdGFydE9mQ29kZSwgbV9s
YWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1haW5QYXRoWzBdKTsKICAgICAKQEAgLTc4LDcgKzc5LDcg
QEAgdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBGb3JJbnN0cnVjdGlvbgogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgb3V0LnByaW50KHByZWZpeCk7Ci0gICAgICAg
IG1fY29kZUJsb2NrLT5kdW1wKGkpOworICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcEJ5dGVjb2Rl
KGkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIG5leHRJbmRleCA9IGkgKyAxOyA7IG5leHRJbmRl
eCsrKSB7CiAgICAgICAgICAgICBpZiAobmV4dEluZGV4ID49IGxhYmVscy5zaXplKCkpIHsKICAg
ICAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHkob3V0LCBsaW5rQnVmZmVyLCBsYWJlbHNbaV0s
IGVuZExhYmVsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzA0LDggKzcwNCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFu
c2l0aW8KICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZSgK
ICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAg
ICAgICAgKCJCYXNlbGluZSBwdXRfYnlfaWQgdHJhbnNpdGlvbiBzdHViIGZvciBDb2RlQmxvY2sg
JXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHJldHVybkFk
ZHJlc3MudmFsdWUoKSkpLAorICAgICAgICAgICAgKCJCYXNlbGluZSBwdXRfYnlfaWQgdHJhbnNp
dGlvbiBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICB0b0NT
dHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudmFsdWUoKSkpLAogICAg
ICAgICAqbV9nbG9iYWxEYXRhLAogICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksCiAgICAgICAgIHdpbGxOZWVkU3RvcmFnZVJlYWxsb2MsCkBAIC03NzgsOSArNzc4LDkgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIC8vIFRyYWNrIHRo
ZSBzdHViIHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4K
ICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAogICAg
ICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgYXJyYXkgbGVu
Z3RoIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgIG1f
Y29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCi0gICAgICAg
ICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkpOworICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBhcnJheSBsZW5ndGgg
c3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICB0b0NTdHJpbmcoKm1f
Y29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgK
KyAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0
KS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUg
anVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGluc3Rl
YWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBzdHViSW5mby0+aG90UGF0
aEJlZ2luLmp1bXBBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0
dXJlQ2hlY2spOwpAQCAtODQ5LDkgKzg0OSw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRQcm90byhTdHIKICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHVi
Um91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBhdGNoQnVmZmVy
LAotICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgcHJvdG8gc3R1YiBmb3IgQ29kZUJs
b2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KSwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIHByb3RvIHN0dWIgZm9yICVzLCBy
ZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqbV9jb2RlQmxvY2sp
LmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAg
ICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVj
dXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICptX2dsb2JhbERhdGEsCiAgICAgICAgIG1fY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgbmVlZHNTdHViTGluayk7CkBAIC05
MTUsOSArOTE1LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAog
ICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91
dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAot
ICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgc2VsZiBsaXN0IHN0dWIgZm9yIENvZGVC
bG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgICAgICBtX2NvZGVCbG9jaywgc3R1
YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgICAgICBzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygp
KSksCisgICAgICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBzZWxmIGxpc3Qgc3R1YiBmb3Ig
JXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVC
bG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisgICAg
ICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAgICAgICAg
bV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICBuZWVkc1N0dWJMaW5rKTsK
QEAgLTk4OCw5ICs5ODgsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9M
aXN0CiAgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0
dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAgcGF0Y2hCdWZm
ZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBwcm90byBsaXN0IHN0dWIgZm9y
IENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgICAgICBtX2NvZGVCbG9j
aywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgICAg
ICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRk
cmVzcygpKSksCisgICAgICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBwcm90byBsaXN0IHN0
dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAgIHRvQ1N0cmluZygq
bV9jb2RlQmxvY2spLmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0
KAorICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0
UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICptX2dsb2JhbERhdGEsCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgbmVlZHNTdHVi
TGluayk7CkBAIC0xMDY2LDkgKzEwNjYsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkQ2hhaW5MaXN0CiAgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSA9IGNy
ZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAg
cGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBjaGFpbiBsaXN0
IHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgICAgICBt
X2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAotICAgICAg
ICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVj
dXRhYmxlQWRkcmVzcygpKSksCisgICAgICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBjaGFp
biBsaXN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAgIHRv
Q1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJl
bEF0T2Zmc2V0KAorICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUu
dS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICptX2dsb2Jh
bERhdGEsCiAgICAgICAgIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAgICAg
bmVlZHNTdHViTGluayk7CkBAIC0xMTQwLDkgKzExNDAsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW4oU3RyCiAgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViUm91
dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAogICAg
ICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBj
aGFpbiBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKLSAg
ICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAorICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQg
Y2hhaW4gc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICAgICAgdG9D
U3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVs
QXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51
LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAgKm1fZ2xvYmFs
RGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICBu
ZWVkc1N0dWJMaW5rKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBl
LmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAKICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTc0Niw4
ICs3NDcsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAg
c3R1YkluZm8tPnN0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJ
TkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICgiQmFz
ZWxpbmUgcHV0X2J5X2lkIHRyYW5zaXRpb24gZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50
ICVwIiwKLSAgICAgICAgICAgICBtX2NvZGVCbG9jaywgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKSks
CisgICAgICAgICAgICAoIkJhc2VsaW5lIHB1dF9ieV9pZCB0cmFuc2l0aW9uIGZvciAlcywgcmV0
dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5k
YXRhKCksIHJldHVybkFkZHJlc3MudmFsdWUoKSkpLAogICAgICAgICAqbV9nbG9iYWxEYXRhLAog
ICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgIHdpbGxOZWVk
U3RvcmFnZVJlYWxsb2MsCkBAIC04MTUsOSArODE2LDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVBhdGNoR2V0QXJyYXlMZW4KICAgICAvLyBUcmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0
ZWQgc28gdGhhdCBpdCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIuCiAgICAgc3R1YkluZm8tPnN0dWJS
b3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgcGF0Y2hCdWZmZXIsCi0g
ICAgICAgICgiQmFzbGluZSBKSVQgZ2V0X2J5X2lkIGFycmF5IGxlbmd0aCBzdHViIGZvciBDb2Rl
QmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICBtX2NvZGVCbG9jaywgc3R1Yklu
Zm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgIHN0dWJJbmZvLT5w
YXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAg
ICAgICAgKCJCYXNsaW5lIEpJVCBnZXRfYnlfaWQgYXJyYXkgbGVuZ3RoIHN0dWIgZm9yICVzLCBy
ZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0
YSgpLAorICAgICAgICAgICAgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAor
ICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAg
dG8gc2xvdyBjYXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgog
ICAgIENvZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5qdW1wQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnN0cnVjdHVyZUNo
ZWNrKTsKQEAgLTg4Myw5ICs4ODUsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG8oU3RyCiAgICAgc3R1YkluZm8tPnN0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRp
bmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAg
ICAgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBwcm90byBzdHViIGZvciBDb2RlQmxv
Y2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJ
bmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKLSAgICAgICAgICAgICAgICAgc3R1Yklu
Zm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkp
LAorICAgICAgICAgICAgKCJCYXNlbGluZSBKSVQgZ2V0X2J5X2lkIHByb3RvIHN0dWIgZm9yICVz
LCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqbV9jb2RlQmxv
Y2spLmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5l
eGVjdXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICptX2dsb2JhbERhdGEsCiAgICAgICAgIG1f
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgbmVlZHNTdHViTGluayk7CkBA
IC05NDgsOSArOTUwLDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0
KAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YkNvZGUgPSBjcmVhdGVKSVRTdHViUm91
dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAot
ICAgICAgICAgICAgKCJCYXNlbGluZSBKSVQgZ2V0X2J5X2lkIGxpc3Qgc3R1YiBmb3IgQ29kZUJs
b2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBzdHVi
SW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KSwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBsaXN0IHN0dWIgZm9yICVz
LCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqbV9jb2RlQmxv
Y2spLmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAg
ICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5l
eGVjdXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICptX2dsb2JhbERhdGEsCiAgICAgICAgIG1f
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgbmVlZHNTdHViTGluayk7CkBA
IC0xMDIyLDkgKzEwMjQsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9M
aXN0CiAgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViQ29kZSA9IGNyZWF0ZUpJVFN0dWJS
b3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIs
Ci0gICAgICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgcHJvdG8gbGlzdCBzdHViIGZv
ciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxv
Y2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKLSAgICAgICAgICAgICAg
ICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpLAorICAgICAgICAgICAgKCJCYXNlbGluZSBKSVQgZ2V0X2J5X2lkIHByb3RvIGxp
c3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICAgICAgdG9DU3Ry
aW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRP
ZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51Lmdl
dC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAgKm1fZ2xvYmFsRGF0
YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICBuZWVk
c1N0dWJMaW5rKTsKQEAgLTEwOTksOSArMTEwMSw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRDaGFpbkxpc3QKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5l
ID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAg
ICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBj
aGFpbiBsaXN0IHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAg
ICAgICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0
KAotICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVz
dWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSksCisgICAgICAgICAgICAoIkJhc2VsaW5lIEpJVCBn
ZXRfYnlfaWQgY2hhaW4gbGlzdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAg
ICAgICAgICAgICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQ
YXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBh
dGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAg
ICAgICAqbV9nbG9iYWxEYXRhLAogICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksCiAgICAgICAgIG5lZWRzU3R1YkxpbmspOwpAQCAtMTE3NCw5ICsxMTc2LDkgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAgIFJlZlB0cjxKSVRTdHViUm91
dGluZT4gc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJ
WkVfQ09ERSgKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGlu
ZSBKSVQgZ2V0X2J5X2lkIGNoYWluIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50
ICVwIiwKLSAgICAgICAgICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5s
YWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUu
dS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSksCisgICAgICAgICAgICAoIkJh
c2VsaW5lIEpJVCBnZXRfYnlfaWQgY2hhaW4gc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIs
CisgICAgICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5m
by0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KSwKICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLAogICAgICAgICBuZWVkc1N0dWJMaW5rKTsKQEAgLTE0MjgsNyArMTQzMCw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5VmFsKEJ5VmFsSW4KICAgICAKICAgICBieVZh
bEluZm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgcGF0
Y2hCdWZmZXIsCi0gICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X3ZhbCBzdHViIGZvciBDb2RlQmxv
Y2sgJXAsIHJldHVybiBwb2ludCAlcCIsIG1fY29kZUJsb2NrLCByZXR1cm5BZGRyZXNzLnZhbHVl
KCkpKTsKKyAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfdmFsIHN0dWIgZm9yICVzLCByZXR1cm4g
cG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3Mu
dmFsdWUoKSkpOwogICAgIAogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihtX2NvZGVC
bG9jayk7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwg
Q29kZUxvY2F0aW9uTGFiZWwoYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkp
OwpAQCAtMTQ5OCw3ICsxNTAwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwo
QnlWYWxJbgogICAgIAogICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RF
X0ZPUl9TVFVCKAogICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgKCJCYXNlbGluZSBwdXRf
YnlfdmFsIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwgbV9jb2RlQmxv
Y2ssIHJldHVybkFkZHJlc3MudmFsdWUoKSkpOworICAgICAgICAoIkJhc2VsaW5lIHB1dF9ieV92
YWwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2sp
LmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKSk7CiAgICAgCiAgICAgUmVwYXRjaEJ1ZmZl
ciByZXBhdGNoQnVmZmVyKG1fY29kZUJsb2NrKTsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhi
eVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbChieVZhbEluZm8tPnN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MDgsMTIgKzE4MDgsMTYgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKLSAgICBkYXRhTG9nRigiJXA6IEVudGVyZWQgb3B0aW1pemUgd2l0aCBieXRlY29k
ZUluZGV4ID0gJXUsIGV4ZWN1dGVDb3VudGVyID0gJXMsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1LCBleGl0Q291bnRlciA9ICIs
IGNvZGVCbG9jaywgYnl0ZWNvZGVJbmRleCwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigp
LnN0YXR1cygpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVC
bG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOworICAgIGRhdGFMb2coCisgICAgICAg
ICpjb2RlQmxvY2ssICI6IEVudGVyZWQgb3B0aW1pemUgd2l0aCBieXRlY29kZUluZGV4ID0gIiwg
Ynl0ZWNvZGVJbmRleCwKKyAgICAgICAgIiwgZXhlY3V0ZUNvdW50ZXIgPSAiLCBjb2RlQmxvY2st
PmppdEV4ZWN1dGVDb3VudGVyKCksCisgICAgICAgICIsIG9wdGltaXphdGlvbkRlbGF5Q291bnRl
ciA9ICIsIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwKKyAgICAgICAg
IiwgZXhpdENvdW50ZXIgPSAiKTsKICAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBs
YWNlbWVudCgpKQotICAgICAgICBkYXRhTG9nRigiJXUiLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50
KCktPm9zckV4aXRDb3VudGVyKCkpOworICAgICAgICBkYXRhTG9nKGNvZGVCbG9jay0+cmVwbGFj
ZW1lbnQoKS0+b3NyRXhpdENvdW50ZXIoKSk7CiAgICAgZWxzZQotICAgICAgICBkYXRhTG9nRigi
Ti9BIik7Ci0gICAgZGF0YUxvZ0YoIlxuIik7CisgICAgICAgIGRhdGFMb2coIk4vQSIpOworICAg
IGRhdGFMb2coIlxuIik7CiAjZW5kaWYKIAogICAgIGlmICghY29kZUJsb2NrLT5jaGVja0lmT3B0
aW1pemF0aW9uVGhyZXNob2xkUmVhY2hlZCgpKSB7CkBAIC0xODIzLDcgKzE4MjcsNyBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKIAogICAgIGlmIChjb2RlQmxvY2stPmhh
c09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQot
ICAgICAgICBkYXRhTG9nRigiQ29uc2lkZXJpbmcgT1NSIGludG8gJXAoJXApLlxuIiwgY29kZUJs
b2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOworICAgICAgICBkYXRhTG9nRigiQ29uc2lk
ZXJpbmcgT1NSICIsICpjb2RlQmxvY2ssICIgLT4gIiwgKmNvZGVCbG9jay0+cmVwbGFjZW1lbnQo
KSwgIi5cbiIpOwogI2VuZGlmCiAgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gb3B0aW1pemVkIHJl
cGxhY2VtZW50LCB0aGVuIGl0IG11c3QgYmUgdGhlIGNhc2UgdGhhdCB3ZSBlbnRlcmVkCiAgICAg
ICAgIC8vIGN0aV9vcHRpbWl6ZSBmcm9tIGEgbG9vcC4gVGhhdCdzIGJlY2F1c2UgaXMgdGhlcmUn
cyBhbiBvcHRpbWl6ZWQgcmVwbGFjZW1lbnQsCkBAIC0xODQwLDcgKzE4NDQsNyBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKICAgICAgICAgLy8gYWRkaXRpb25hbCBjaGVj
a2luZyBhbnl3YXksIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIHJlY29tcGlsYXRpb24gdGhyYXNo
aW5nLgogICAgICAgICBpZiAoY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zaG91bGRSZW9wdGlt
aXplRnJvbUxvb3BOb3coKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAg
ICAgICBkYXRhTG9nRigiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAlcCglcCkgKGluIGxv
b3ApLlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOworICAgICAgICAg
ICAgZGF0YUxvZ0YoIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgKmNvZGVCbG9jaywg
IigiLCAqY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLCAiKSAoaW4gbG9vcCkuXG4iKTsKICNlbmRp
ZgogICAgICAgICAgICAgY29kZUJsb2NrLT5yZW9wdGltaXplKCk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xODQ4LDcgKzE4NTIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRp
bWl6ZSkKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWNvZGVCbG9jay0+c2hvdWxkT3B0aW1p
emVOb3coKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgICAgICBkYXRh
TG9nRigiRGVsYXlpbmcgb3B0aW1pemF0aW9uIGZvciAlcCAoaW4gbG9vcCkgYmVjYXVzZSBvZiBp
bnN1ZmZpY2llbnQgcHJvZmlsaW5nLlxuIiwgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGRhdGFM
b2dGKCJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICIsICpjb2RlQmxvY2ssICIgKGluIGxvb3Ap
IGJlY2F1c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIpOwogI2VuZGlmCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4NjQsNyArMTg2OCw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogICAgICAgICAKICAgICAgICAgaWYgKGNvZGVCbG9j
ay0+cmVwbGFjZW1lbnQoKSA9PSBjb2RlQmxvY2spIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0Vf
T1NSKQotICAgICAgICAgICAgZGF0YUxvZ0YoIk9wdGltaXppbmcgJXAgZmFpbGVkLlxuIiwgY29k
ZUJsb2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJPcHRpbWl6aW5nICIsICpjb2RlQmxvY2ss
ICIgZmFpbGVkLlxuIik7CiAjZW5kaWYKICAgICAgICAgICAgIAogICAgICAgICAgICAgQVNTRVJU
KGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKQEAgLTE4
NzgsMTIgKzE4ODIsMTIgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAg
ICAgCiAgICAgaWYgKHZvaWQqIGFkZHJlc3MgPSBERkc6OnByZXBhcmVPU1JFbnRyeShjYWxsRnJh
bWUsIG9wdGltaXplZENvZGVCbG9jaywgYnl0ZWNvZGVJbmRleCkpIHsKICAgICAgICAgaWYgKE9w
dGlvbnM6OnNob3dERkdEaXNhc3NlbWJseSgpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigKLSAg
ICAgICAgICAgICAgICAiUGVyZm9ybWluZyBPU1IgZnJvbSBjb2RlIGJsb2NrICVwIHRvIGNvZGUg
YmxvY2sgJXAsIGFkZHJlc3MgJXAgdG8gJXAuXG4iLAotICAgICAgICAgICAgICAgIGNvZGVCbG9j
aywgb3B0aW1pemVkQ29kZUJsb2NrLCAoU1RVQl9SRVRVUk5fQUREUkVTUykudmFsdWUoKSwgYWRk
cmVzcyk7CisgICAgICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgICAgICJQZXJmb3JtaW5n
IE9TUiAiLCAqY29kZUJsb2NrLCAiIC0+ICIsICpvcHRpbWl6ZWRDb2RlQmxvY2ssICIsIGFkZHJl
c3MgIiwKKyAgICAgICAgICAgICAgICBSYXdQb2ludGVyKChTVFVCX1JFVFVSTl9BRERSRVNTKS52
YWx1ZSgpKSwgIiAtPiAiLCBSYXdQb2ludGVyKGFkZHJlc3MpLCAiLlxuIik7CiAgICAgICAgIH0K
ICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICBkYXRhTG9nRigiT3B0aW1pemlu
ZyAlcCBzdWNjZWVkZWQsIHBlcmZvcm1pbmcgT1NSIGFmdGVyIGEgZGVsYXkgb2YgJXUuXG4iLCBj
b2RlQmxvY2ssIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOworICAgICAg
ICBkYXRhTG9nRigiT3B0aW1pemluZyAiLCAqY29kZUJsb2NrLCAiIHN1Y2NlZWRlZCwgcGVyZm9y
bWluZyBPU1IgYWZ0ZXIgYSBkZWxheSBvZiAiLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5
Q291bnRlcigpLCAiLlxuIik7CiAjZW5kaWYKIAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXpl
U29vbigpOwpAQCAtMTg5Miw3ICsxODk2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwg
b3B0aW1pemUpCiAgICAgfQogICAgIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAg
ZGF0YUxvZ0YoIk9wdGltaXppbmcgJXAgc3VjY2VlZGVkLCBPU1IgZmFpbGVkLCBhZnRlciBhIGRl
bGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291
bnRlcigpKTsKKyAgICBkYXRhTG9nRigiT3B0aW1pemluZyAiLCAqY29kZUJsb2NrLCAiIHN1Y2Nl
ZWRlZCwgT1NSIGZhaWxlZCwgYWZ0ZXIgYSBkZWxheSBvZiAiLCBjb2RlQmxvY2stPm9wdGltaXph
dGlvbkRlbGF5Q291bnRlcigpLCAiLlxuIik7CiAjZW5kaWYKIAogICAgIC8vIENvdW50IHRoZSBP
U1IgZmFpbHVyZSBhcyBhIHNwZWN1bGF0aW9uIGZhaWx1cmUuIElmIHRoaXMgaGFwcGVucyBhIGxv
dCwgdGhlbgpAQCAtMTkwMCw3ICsxOTA0LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwg
b3B0aW1pemUpCiAgICAgb3B0aW1pemVkQ29kZUJsb2NrLT5jb3VudE9TUkV4aXQoKTsKICAgICAK
ICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIGRhdGFMb2dGKCJFbmNvdW50ZXJlZCBP
U1IgZmFpbHVyZSBpbnRvICVwKCVwKS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNl
bWVudCgpKTsKKyAgICBkYXRhTG9nRigiRW5jb3VudGVyZWQgT1NSIGZhaWx1cmUgIiwgKmNvZGVC
bG9jaywgIiAtPiAiLCAqY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLCAiLlxuIik7CiAjZW5kaWYK
IAogICAgIC8vIFdlIGFyZSBhIGxvdCBtb3JlIGNvbnNlcnZhdGl2ZSBhYm91dCB0cmlnZ2VyaW5n
IHJlb3B0aW1pemF0aW9uIGFmdGVyIE9TUiBmYWlsdXJlIHRoYW4KQEAgLTE5MTMsNyArMTkxNyw3
IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogICAgIC8vIHJlb3B0aW1p
emF0aW9uIHRyaWdnZXIuCiAgICAgaWYgKG9wdGltaXplZENvZGVCbG9jay0+c2hvdWxkUmVvcHRp
bWl6ZU5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgZGF0YUxv
Z0YoIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChhZnRlciBPU1IgZmFpbCku
XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7CisgICAgICAgIGRhdGFM
b2dGKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICIsICpjb2RlQmxvY2ssICIgLT4gIiwg
KmNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgIiAoYWZ0ZXIgT1NSIGZhaWwpLlxuIik7CiAjZW5k
aWYKICAgICAgICAgY29kZUJsb2NrLT5yZW9wdGltaXplKCk7CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVj
aWFsaXphdGlvbktpbmQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIK
KworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6Q29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQoreworICAgIGlmIChraW5kID09IEpTQzo6Q29kZUZvckNhbGwpIHsKKyAgICAg
ICAgb3V0LnByaW50KCJDYWxsIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
QVNTRVJUKGtpbmQgPT0gSlNDOjpDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBvdXQucHJpbnQoIkNv
bnN0cnVjdCIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5k
LmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsMjQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JD
YWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAKK2lubGluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IHNwZWNpYWxpemF0aW9uRnJvbUlzQ2FsbChib29sIGlzQ2FsbCkKK3sKKyAgICByZXR1cm4gaXND
YWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0OworfQorCitpbmxpbmUgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbkZyb21Jc0NvbnN0cnVjdChib29sIGlzQ29u
c3RydWN0KQoreworICAgIHJldHVybiBpc0NvbnN0cnVjdCA/IENvZGVGb3JDb25zdHJ1Y3QgOiBD
b2RlRm9yQ2FsbDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKK25hbWVzcGFjZSBXVEYgewor
CitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpT
Qzo6Q29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5k
aWYgLy8gQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjY1LDQgKzY2NSwyNiBAQCBTdHJpbmcgRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmlu
ZygpCiAgICAgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbVN0cmluZygpOwogfQog
CitDb2RlQmxvY2tIYXNoIEV4ZWN1dGFibGVCYXNlOjpoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkgY29uc3QKK3sKKyAgICBpZiAodGhpcy0+Y2xhc3NJbmZvKCkgPT0gJk5hdGl2
ZUV4ZWN1dGFibGU6OnNfaW5mbykKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBOYXRpdmVF
eGVjdXRhYmxlKj4odGhpcyktPmhhc2hGb3Ioa2luZCk7CisgICAgCisgICAgcmV0dXJuIGpzQ2Fz
dDxjb25zdCBTY3JpcHRFeGVjdXRhYmxlKj4odGhpcyktPmhhc2hGb3Ioa2luZCk7Cit9CisKK0Nv
ZGVCbG9ja0hhc2ggTmF0aXZlRXhlY3V0YWJsZTo6aGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpIGNvbnN0Cit7CisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCisgICAgICAg
IHJldHVybiBDb2RlQmxvY2tIYXNoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihiaXR3aXNlX2Nhc3Q8
c2l6ZV90PihtX2Z1bmN0aW9uKSkpOworICAgIAorICAgIEFTU0VSVChraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpOworICAgIHJldHVybiBDb2RlQmxvY2tIYXNoKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihtX2NvbnN0cnVjdG9yKSkpOworfQorCitDb2RlQmxvY2tI
YXNoIFNjcmlwdEV4ZWN1dGFibGU6Omhhc2hGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KSBjb25zdAoreworICAgIHJldHVybiBDb2RlQmxvY2tIYXNoKHNvdXJjZSgpLCBraW5kKTsKK30K
KwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAko
cmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFi
bGVfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgi
CiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkhhbmRsZXJJ
bmZvLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtODYsNiArODcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUg
PSB0cnVlOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogI2VuZGlmCisg
ICAgICAgIAorICAgICAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNpYWxpemF0aW9u
S2luZCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uRXhlY3V0YWJsZSgpCiAgICAg
ICAgIHsKQEAgLTI5NSw2ICsyOTgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICNlbmRpZgogCisgICAgICAgIENvZGVCbG9ja0hhc2gg
aGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKKwogICAgICAgICBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KICAgICAgICAgTmF0aXZl
RnVuY3Rpb24gY29uc3RydWN0b3IoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yOyB9CiAKQEAgLTM1
Miw4ICszNTcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICNlbmRpZgorICAgICAgICAKKyAgICAgICAg
Q29kZUJsb2NrSGFzaCBoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0OwogCi0g
ICAgICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNlOyB9Cisg
ICAgICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
OyB9CiAgICAgICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Uu
cHJvdmlkZXJJRCgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7IH0KICAgICAgICAgaW50IGxpbmVO
bygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lOyB9CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MTE1
KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBA
QAorMjAxMi0xMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEl0IHNob3VsZCBiZSBlYXN5IHRvIGZpbmQgY29kZSBibG9ja3MgaW4gZGVidWcgZHVtcHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzYyMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgUmF3
UG9pbnRlciB0byBhY2NlcHQgYm90aCBjb25zdCB2b2lkKiBhbmQgdm9pZCosIGFuZCB1c2UgdGhl
IGZvcm1lciBpbnRlcm5hbGx5LgorICAgICAgICAKKyAgICAgICAgQ2xlYW5lZCB1cCBTSEExIHNv
IHRoYXQgdGhlIGZ1bmN0aW9uYWxpdHkgYWxyZWFkeSB1c2VkIGludGVybmFsbHkgZm9yIHNlbGYt
dGVzdGluZyBpcworICAgICAgICBhdmFpbGFibGUgdmlhIHRoZSBBUEkuIFRoaXMgaW5jbHVkZXMg
YWRkQnl0ZXMoQ1N0cmluZykgYW5kIGNvbXB1dGluZyBoZXggZGlnZXN0cy4KKworICAgICAgICAq
IHd0Zi9SYXdQb2ludGVyLmg6CisgICAgICAgIChXVEY6OlJhd1BvaW50ZXI6OlJhd1BvaW50ZXIp
OgorICAgICAgICAoUmF3UG9pbnRlcik6CisgICAgICAgIChXVEY6OlJhd1BvaW50ZXI6OnZhbHVl
KToKKyAgICAgICAgKiB3dGYvU0hBMS5jcHA6CisgICAgICAgIChXVEY6OmV4cGVjdFNIQTEpOgor
ICAgICAgICAoV1RGOjpTSEExOjpoZXhEaWdlc3QpOgorICAgICAgICAoV1RGOjpTSEExOjpjb21w
dXRlSGV4RGlnZXN0KToKKyAgICAgICAgKiB3dGYvU0hBMS5oOgorICAgICAgICAoV1RGOjpTSEEx
OjphZGRCeXRlcyk6CisKIDIwMTItMTEtMjggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBTcGVjdWxhdGVkVHlwZSBkdW1waW5nIHNob3VsZCBub3QgdXNlIHRoZSBz
dGF0aWMgY2hhciBidWZmZXJbdGhpbmd5XSBpZGlvbQpJbmRleDogU291cmNlL1dURi93dGYvUmF3
UG9pbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Jhd1BvaW50ZXIuaAkocmV2
aXNpb24gMTM2MDk1KQorKysgU291cmNlL1dURi93dGYvUmF3UG9pbnRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwxMCArNDAsMTUgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAg
dm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgZXhwbGljaXQgUmF3
UG9pbnRlcihjb25zdCB2b2lkKiB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAg
IHsKKyAgICB9CisgICAgCisgICAgY29uc3Qgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlOyB9CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQqIG1fdmFsdWU7CisgICAgY29uc3Qg
dm9pZCogbV92YWx1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dU
Ri93dGYvU0hBMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU0hBMS5jcHAJKHJl
dmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9XVEYvd3RmL1NIQTEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MiwxNSArNTIsOCBAQCBzdGF0aWMgdm9pZCBleHBlY3RTSEExKENTdHJpbmcgaW5wdXQs
IGluCiB7CiAgICAgU0hBMSBzaGExOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0OyAr
K2kpCi0gICAgICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQubGVuZ3RoKCkpOwotICAgIFZlY3Rvcjx1aW50OF90LCAy
MD4gZGlnZXN0OwotICAgIHNoYTEuY29tcHV0ZUhhc2goZGlnZXN0KTsKLSAgICBjaGFyKiBidWZm
ZXIgPSAwOwotICAgIENTdHJpbmcgYWN0dWFsID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZCg0
MCwgYnVmZmVyKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDIwOyArK2kpIHsKLSAgICAg
ICAgc25wcmludGYoYnVmZmVyLCAzLCAiJTAyWCIsIGRpZ2VzdC5hdChpKSk7Ci0gICAgICAgIGJ1
ZmZlciArPSAyOwotICAgIH0KKyAgICAgICAgc2hhMS5hZGRCeXRlcyhpbnB1dCk7CisgICAgQ1N0
cmluZyBhY3R1YWwgPSBzaGExLmNvbXB1dGVIZXhEaWdlc3QoKTsKICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGFjdHVhbCA9PSBleHBlY3RlZCwgImlucHV0OiAlcywgcmVwZWF0OiAlZCwgYWN0dWFs
OiAlcywgZXhwZWN0ZWQ6ICVzIiwgaW5wdXQuZGF0YSgpLCByZXBlYXQsIGFjdHVhbC5kYXRhKCks
IGV4cGVjdGVkLmRhdGEoKSk7CiB9CiAKQEAgLTE0NCw2ICsxMzcsMjUgQEAgdm9pZCBTSEExOjpj
b21wdXRlSGFzaChWZWN0b3I8dWludDhfdCwgMgogICAgIHJlc2V0KCk7CiB9CiAKK0NTdHJpbmcg
U0hBMTo6aGV4RGlnZXN0KGNvbnN0IFZlY3Rvcjx1aW50OF90LCAyMD4mIGRpZ2VzdCkKK3sKKyAg
ICBjaGFyKiBzdGFydCA9IDA7CisgICAgQ1N0cmluZyByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmlu
aXRpYWxpemVkKDQwLCBzdGFydCk7CisgICAgY2hhciogYnVmZmVyID0gc3RhcnQ7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCAyMDsgKytpKSB7CisgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwg
MywgIiUwMlgiLCBkaWdlc3QuYXQoaSkpOworICAgICAgICBidWZmZXIgKz0gMjsKKyAgICB9Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ1N0cmluZyBTSEExOjpjb21wdXRlSGV4RGlnZXN0KCkK
K3sKKyAgICBWZWN0b3I8dWludDhfdCwgMjA+IGRpZ2VzdDsKKyAgICBjb21wdXRlSGFzaChkaWdl
c3QpOworICAgIHJldHVybiBoZXhEaWdlc3QoZGlnZXN0KTsKK30KKwogdm9pZCBTSEExOjpmaW5h
bGl6ZSgpCiB7CiAgICAgQVNTRVJUKG1fY3Vyc29yIDwgNjQpOwpJbmRleDogU291cmNlL1dURi93
dGYvU0hBMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NIQTEuaAkocmV2aXNpb24g
MTM2MDk1KQorKysgU291cmNlL1dURi93dGYvU0hBMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiw3IEBACiAjZGVmaW5lIFdURl9TSEExX2gKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC00
MywxMSArNDQsMjcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYWRkQnl0ZXMoaW5wdXQuZGF0
YSgpLCBpbnB1dC5zaXplKCkpOwogICAgIH0KKyAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IENTdHJp
bmcmIGlucHV0KQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogc3RyaW5nID0gaW5wdXQuZGF0
YSgpOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY3JlYXRvciBvZiB0aGUgQ1N0cmlu
ZyBkaWRuJ3QgbWFrZSB0aGUgbWlzdGFrZQorICAgICAgICAvLyBvZiBmb3JjaW5nIGxlbmd0aCgp
IHRvIGJlIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgdXNlZCB0byBjcmVhdGUgdGhlCisgICAgICAg
IC8vIHN0cmluZywgcHJpb3IgdG8gaW5zZXJ0aW5nIHRoZSBudWxsIHRlcm1pbmF0b3IgZWFybGll
ciBpbiB0aGUKKyAgICAgICAgLy8gc2VxdWVuY2UuCisgICAgICAgIEFTU0VSVChpbnB1dC5sZW5n
dGgoKSA9PSBzdHJsZW4oc3RyaW5nKSk7CisgICAgICAgIGFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZyksIGlucHV0Lmxlbmd0aCgpKTsKKyAgICB9CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQnl0ZXMoY29uc3QgdWludDhfdCogaW5wdXQsIHNp
emVfdCBsZW5ndGgpOwogCiAgICAgLy8gY29tcHV0ZUhhc2ggaGFzIGEgc2lkZSBlZmZlY3Qgb2Yg
cmVzZXR0aW5nIHRoZSBzdGF0ZSBvZiB0aGUgb2JqZWN0LgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGNvbXB1dGVIYXNoKFZlY3Rvcjx1aW50OF90LCAyMD4mKTsKLQorICAgIAorICAgIC8v
IEdldCBhIGhleCBoYXNoIGZyb20gdGhlIGRpZ2VzdC4gUGFzcyBhIGxpbWl0IGxlc3MgdGhhbiA0
MCBpZiB5b3Ugd2FudCBhIHNob3J0ZXIgZGlnZXN0LgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgQ1N0cmluZyBoZXhEaWdlc3QoY29uc3QgVmVjdG9yPHVpbnQ4X3QsIDIwPiYpOworICAg
IAorICAgIC8vIENvbXB1dGUgdGhlIGhleCBkaWdlc3QgZGlyZWN0bHkuIFBhc3MgYSBsaW1pdCBs
ZXNzIHRoYW4gNDAgaWYgeW91IHdhbnQgYSBzaG9ydGVyIGRpZ2VzdC4KKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgQ1N0cmluZyBjb21wdXRlSGV4RGlnZXN0KCk7CisgICAgCiBwcml2YXRlOgogICAg
IHZvaWQgZmluYWxpemUoKTsKICAgICB2b2lkIHByb2Nlc3NCbG9jaygpOwo=
</data>
<flag name="review"
          id="192717"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="192723"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176828</attachid>
            <date>2012-11-29 15:14:55 -0800</date>
            <delta_ts>2012-11-29 18:17:52 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>codeblockhash.patch</filename>
            <type>text/plain</type>
            <size>104299</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBA
QAorMjAxMi0xMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEl0IHNob3VsZCBiZSBlYXN5IHRvIGZpbmQgY29kZSBibG9ja3MgaW4gZGVidWcgZHVtcHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzYyMworCisg
ICAgICAgIFJldmlld2VkIGJ5IEdvZWZmcmV5IEdhcmVuLgorCisgICAgICAgIFRoaXMgZ2l2ZXMg
Q29kZUJsb2NrIGEgcmVsYXRpdmVseSBzdHJvbmcsIGJ1dCBhbHNvIHJlbGF0aXZlbHkgY29tcGFj
dCwgaGFzaC4gV2UgY29tcHV0ZQorICAgICAgICBpdCBsYXppbHkgc28gdGhhdCBpdCBvbmx5IGlt
cGFjdHMgcnVuLXRpbWUgd2hlbiBkZWJ1ZyBzdXBwb3J0IGlzIGVuYWJsZWQuIFdlIHN0cmluZ2lm
eQorICAgICAgICBpdCBzbWFydGx5IHNvIHRoYXQgaXQncyBzaG9ydCBhbmQgZWFzeSB0byB0eXBl
LiBXZSBiYXNlIGl0IG9uIHRoZSBzb3VyY2UgY29kZSBzbyB0aGF0CisgICAgICAgIHRoZSBvcHRp
bWl6YXRpb24gbGV2ZWwgaXMgaXJyZWxldmFudC4gQW5kLCB3ZSB1c2UgU0hBMSBzaW5jZSBpdCdz
IGFscmVhZHkgaW4gb3VyIGNvZGUKKyAgICAgICAgYmFzZS4gTm93LCB3aGVuIGEgcGllY2Ugb2Yg
Y29kZSB3YW50cyB0byBwcmludCBzb21lIGRlYnVnZ2luZyB0byBzYXkgdGhhdCBpdCdzIG9wZXJh
dGluZworICAgICAgICBvbiBzb21lIGNvZGUgYmxvY2ssIGl0IGNhbiB1c2UgdGhpcyBDb2RlQmxv
Y2tIYXNoIGluc3RlYWQgb2YgbWVtb3J5IGFkZHJlc3Nlcy4KKworICAgICAgICBUaGlzIGFsc28g
dGFrZXMgQ29kZUJsb2NrIGRlYnVnZ2luZyB0byB1c2UgdGhlIG5ldyB3b3JsZCBvZiBwcmludCgp
IGFuZCBkYXRhTG9nKCkuIEluCisgICAgICAgIHBhcnRpY3VsYXIsIENvZGVCbG9jazo6ZHVtcCgp
IGNvcnJlc3BvbmRzIHRvIHRoZSB0aGluZyB5b3Ugd2FudCBwcmludGVkIGlmIHlvdSBkbzoKKwor
ICAgICAgICBkYXRhTG9nKCJJIGhlYXJ0ICIsICpteUNvZGVCbG9jayk7CisKKyAgICAgICAgUHJv
YmFibHksIHlvdSB3YW50IHRvIGp1c3QgcHJpbnQgc29tZSBpZGVudGlmeWluZyBpbmZvcm1hdGlv
biBhdCB0aGlzIHBvaW50IHJhdGhlciB0aGFuCisgICAgICAgIHRoZSBmdWxsIGJ5dGVjb2RlIGR1
bXAuIFNvLCB0aGUgZXhpc3RpbmcgQ29kZUJsb2NrOjpkdW1wKCkgaGFzIGJlZW4gcmVuYW1lZCB0
bworICAgICAgICBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpLCBhbmQgQ29kZUJsb2NrOjpkdW1w
KCkgbm93IHByaW50cyB0aGUgQ29kZUJsb2NrSGFzaCBwbHVzIGp1c3QKKyAgICAgICAgYSBmZXcg
bGl0dGxlIHRpZGJpdHMuCisgICAgICAgIAorICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBD
b2RlQmxvY2s6OmR1bXAoKSBvdXRwdXQ6CisgICAgICAgIAorICAgICAgICBFa0lMenI6WzB4MTAz
ODgzYTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbF0KKyAgICAgICAgCisgICAgICAgIEVrSUx6ciBp
cyB0aGUgQ29kZUJsb2NrSGFzaC4gMHgxMDM4ODNhMDAgaXMgdGhlIENvZGVCbG9jaydzIGFkZHJl
c3MgaW4gbWVtb3J5LiBUaGUgb3RoZXIKKyAgICAgICAgcGFydCBpcyBzZWxmLWV4cGxhbmF0b3J5
LgorCisgICAgICAgIEZpbmFsbHksIHRoaXMgbmV3IG5vdGlvbiBvZiBDb2RlQmxvY2tIYXNoIGlz
IGF2YWlsYWJsZSBmb3Igb3RoZXIgcHVycG9zZXMgbGlrZSBiaXNlY3RpbmcKKyAgICAgICAgYnJl
YWthZ2UuIEFzIHN1Y2ggQ29kZUJsb2NrSGFzaCBoYXMgYWxsIG9mIHRoZSBjb21wYXJpc29uIG9w
ZXJhdG9yIG92ZXJsb2Fkcy4gV2hlbgorICAgICAgICBiaXNlY3RpbmcgaW4gREZHRHJpdmVyLmNw
cCwgeW91IGNhbiBub3cgc2F5IHRoaW5ncyBsaWtlOgorICAgICAgICAKKyAgICAgICAgaWYgKGNv
ZGVCbG9jay0+aGFzaCgpIDwgQ29kZUJsb2NrSGFzaCgiQ0FBQUFBIikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBBbmQgeWVzLCBDQUFBQUEgaXMgbmVhciB0
aGUgbWVkaWFuIGhhc2gsIGFuZCB0aGUgbGFyZ2VzdCBvbmUgaXMgc21hbGxlciB0aGFuIEU5OTk5
OS4gU3VjaAorICAgICAgICBpcyBsaWZlIHdoZW4geW91IHVzZSBiYXNlIDYyIHRvIGVuY29kZSBh
IDMyLWJpdCBudW1iZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoQ2FsbExpbmtJbmZvKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzcGVjaWFsaXphdGlvbktpbmQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFz
aCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBBc3N1bWlu
Z0pJVFR5cGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVzZXRTdHViSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnJlb3B0aW1pemUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZHVtcFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnNwZWNpYWxpemF0aW9uS2luZCk6CisgICAgICAgIChDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldEpJVFR5cGUpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6OkNvZGVCbG9ja0hhc2gpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2tIYXNoOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmg6
IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKENvZGVCbG9ja0hhc2gpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2tIYXNoOjpDb2RlQmxvY2tIYXNoKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrSGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tIYXNoOjpvcGVyYXRvciE9KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrSGFzaDo6b3BlcmF0b3I8KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
SGFzaDo6b3BlcmF0b3I+KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrSGFzaDo6b3BlcmF0b3I8
PSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6Om9wZXJhdG9yPj0pOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9ja1dpdGhKSVRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKENvZGVCbG9ja1dpdGhKSVRUeXBlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
V2l0aEpJVFR5cGU6OkNvZGVCbG9ja1dpdGhKSVRUeXBlKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrV2l0aEpJVFR5cGU6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmlubGlu
ZURlcHRoRm9yQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6aW5saW5lRGVw
dGgpOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjppbmxpbmVTdGFjayk6CisgICAgICAgIChK
U0M6OklubGluZUNhbGxGcmFtZTo6aGFzaCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oOgorICAgICAgICAoSW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW5saW5lQ2Fs
bEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlVHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdU
Rjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZVR5cGUuaDoKKyAgICAg
ICAgKFdURik6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHA6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGlvbkNvdW50ZXI6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGlvbkNvdW50ZXIuaDoKKyAgICAgICAgKEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXBDb2RlT3JpZ2lu
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlND
OjpERkc6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRC
eUlETGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFB1dFJlcGxhY2VTdHViKToKKyAgICAg
ICAgKEpTQzo6REZHOjplbWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjpERkc6
OmRmZ0xpbmtDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZHVtcENhbGxGcmFtZSk6CisgICAgICAg
ICogaml0L0pJVENvZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6
OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6
OkpJVENvZGU6OmppdFR5cGUpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiBqaXQvSklURGlz
YXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpkdW1wKToKKyAg
ICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb25zKToKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5
SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcDogQWRkZWQuCisgICAgICAg
IChXVEYpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1l
L0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDoKKyAgICAgICAgKEpTQzo6c3BlY2lhbGl6YXRpb25G
cm9tSXNDYWxsKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnNwZWNpYWxpemF0aW9u
RnJvbUlzQ29uc3RydWN0KToKKyAgICAgICAgKFdURik6CisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6Omhhc2hGb3IpOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6aGFzaEZvcik6Cisg
ICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omhhc2hGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoRXhlY3V0YWJsZUJhc2UpOgorICAgICAgICAoTmF0
aXZlRXhlY3V0YWJsZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRhYmxlKToKKyAgICAgICAgKEpT
Qzo6U2NyaXB0RXhlY3V0YWJsZTo6c291cmNlKToKKwogMjAxMi0xMS0yOSAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZSBXaW5kb3dzIGJ1
aWxkIGZpeCBhZnRlciByMTM2MDg2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTM2MDk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIFNFVChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHAKKyAgICBieXRlY29k
ZS9Db2RlQmxvY2tIYXNoLmNwcAorICAgIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCisgICAgYnl0
ZWNvZGUvQ29kZVR5cGUuY3BwCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCiAgICAg
Ynl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKICAgICBieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcApAQCAtMTUwLDYgKzE1Myw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
aml0L0pJVEFyaXRobWV0aWMuY3BwCiAgICAgaml0L0pJVENhbGwzMl82NC5jcHAKICAgICBqaXQv
SklUQ2FsbC5jcHAKKyAgICBqaXQvSklUQ29kZS5jcHAKICAgICBqaXQvSklULmNwcAogICAgIGpp
dC9KSVREaXNhc3NlbWJsZXIuY3BwCiAgICAgaml0L0pJVEV4Y2VwdGlvbnMuY3BwCkBAIC0xODIs
NiArMTg2LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9DYWxsRGF0YS5jcHAKICAgICBydW50aW1lL0Nv
ZGVDYWNoZS5jcHAKKyAgICBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwCiAgICAg
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKICAgICBydW50aW1lL0NvbXBsZXRpb24uY3Bw
CiAgICAgcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNjA5NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC05NCw5ICs5
NCwxNCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlVHlwZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db21tZW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
YXRhRm9ybWF0LmggXApAQCAtMzk5LDYgKzQwNCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29tcGlsYXRpb25FZmZvcnQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwIFwKQEAgLTQ5OSw2ICs1MDUs
NyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25L
aW5kLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTM2MDk2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYg
KzU1LDkgQEAgU09VUkNFUyArPSBcCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBcCiAg
ICAgYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKICAgICBieXRlY29kZS9Db2RlQmxvY2su
Y3BwIFwKKyAgICBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcCBcCisgICAgYnl0ZWNvZGUvQ29k
ZU9yaWdpbi5jcHAgXAorICAgIGJ5dGVjb2RlL0NvZGVUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcCBc
CiAgICAgYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgXApAQCAtMTU1LDYgKzE1OCw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklU
Q2FsbC5jcHAgXAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwIFwKKyAgICBqaXQvSklUQ29kZS5j
cHAgXAogICAgIGppdC9KSVQuY3BwIFwKICAgICBqaXQvSklURGlzYXNzZW1ibGVyLmNwcCBcCiAg
ICAgaml0L0pJVEV4Y2VwdGlvbnMuY3BwIFwKQEAgLTE5MSw2ICsxOTUsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL0NhbGxE
YXRhLmNwcCBcCiAgICAgcnVudGltZS9Db2RlQ2FjaGUuY3BwIFwKKyAgICBydW50aW1lL0NvZGVT
cGVjaWFsaXphdGlvbktpbmQuY3BwIFwKICAgICBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cCBcCiAgICAgcnVudGltZS9Db21wbGV0aW9uLmNwcCBcCiAgICAgcnVudGltZS9Db25zdHJ1Y3RE
YXRhLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTY0Niw2ICs2NDYsMTQgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRp
bWVcQ29tbW9uSWRlbnRpZmllcnMuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2MzAsNiAr
MTYzOCwyMiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxieXRlY29kZVxDb2RlQmxvY2tIYXNoLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ29kZUJsb2NrSGFzaC5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxi
eXRlY29kZVxDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxDb2RlT3JpZ2luLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNv
ZGVcQ29kZU9yaWdpbi5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2MzgsNiArMTY2MiwxMCBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxi
eXRlY29kZVxDb2RlVHlwZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXENvbW1lbnQuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+
CkBAIC0xOTgyLDYgKzIwMTAsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEpJVENvZGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklUQ29kZS5oIgogCQkJCT4K
IAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
MzYwOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCwxMiBAQAogCQkw
RjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMz
NUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBE
RkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjhG
OTQzQzE2Njc2MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQzQTE2Njc2MzEx
MDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgKi87IH07CisJCTBGOEY5NDQw
MTY2NzYzMzAwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNEMTY2NzYzMkQwMEQ2MTk3MSAvKiBD
b2RlQmxvY2tIYXNoLmNwcCAqLzsgfTsKKwkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENv
ZGVCbG9ja0hhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY4Rjk0NDIxNjY3NjMz
NTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNGMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAg
Ki87IH07CisJCTBGOEY5NDQ0MTY2NzYzNTQwMEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDQzMTY2NzYzNTIw
MEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCAqLzsgfTsKKwkJMEY4Rjk0NDYxNjY3NjRGMTAwRDYxOTcx
IC8qIENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY4Rjk0NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICovOyB9
OwogCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwOTE1
N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTBGOTE5
RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRF
N0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0LmNwcCAqLzsgfTsKQEAgLTE4NSw2ICsxOTEsNyBAQAogCQkwRjkzMzJBNDE0Q0E3
REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRT
dGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjkzMzJBNTE0Q0E3REREMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5QjE0Q0E3REMxMDA4NUYz
QzYgLyogU3RydWN0dXJlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMzYx
M0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBD
b2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5NkVCQjExNjY3NkVGNDAwOEJBREUzIC8qIENvZGVCbG9ja1dpdGhKSVRU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY5RDMzNzAxNjVEQkI5MDAwNUFEMzg3IC8qIERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM2RTE2NURCQjhEMDA1QUQz
ODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJMEY5RkM4QzMxNEUxQjVGRTAwRDUyQUUw
IC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3Jw
aGljUHV0QnlJZExpc3QuY3BwICovOyB9OwogCQkwRjlGQzhDNDE0RTFCNjAwMDBENTJBRTAgLyog
UG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY5RkM4QzAxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0
QnlJZExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtOTY4LDYgKzk3NSwxMiBAQAogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMy
OUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0JyYW5jaERpcmVjdGlvbi5oOyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEg
LyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY4Rjk0M0QxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29kZUJsb2NrSGFzaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAv
KiBDb2RlQmxvY2tIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVC
bG9ja0hhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0M0YxNjY3NjMy
RDAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvZGVUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0
NDMxNjY3NjM1MjAwRDYxOTcxIC8qIEpJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklUQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGOEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEExNTdF
RTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4
Myw2ICs5OTYsNyBAQAogCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeUlkU3RhdHVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjlCMTRDQTdEQzEwMDg1RjNDNiAvKiBT
dHJ1Y3R1cmVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJl
U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2MTNGQzZGREUwMDAy
RDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTZFQkIxMTY2
NzZFRjQwMDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2RlQmxvY2tXaXRoSklUVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjlEMzM2RTE2NURCQjhEMDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpc2Fzc2VtYmxlci5jcHA7
IHBhdGggPSBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJ
ZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9seW1vcnBo
aWNQdXRCeUlkTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZDOEMw
MTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MzgsNiArMTg1Miw3IEBACiAJCQkJQTc1NzA2REQxMThB
MkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi8sCiAJCQkJODZDQzg1QTIw
RUU3OUI3NDAwMjg4NjgyIC8qIEpJVENhbGwuY3BwICovLAogCQkJCTE0NkZFNTExMTFBNzEwNDMw
MDg3QUU2NiAvKiBKSVRDYWxsMzJfNjQuY3BwICovLAorCQkJCTBGOEY5NDQzMTY2NzYzNTIwMEQ2
MTk3MSAvKiBKSVRDb2RlLmNwcCAqLywKIAkJCQk4NkNDRUZERDBGNDEzRjg5MDBGRDdGOUUgLyog
SklUQ29kZS5oICovLAogCQkJCTBGMDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxh
dGlvbkVmZm9ydC5oICovLAogCQkJCTBGQUY3RUZBMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNh
c3NlbWJsZXIuY3BwICovLApAQCAtMjEzNiw2ICsyMTUxLDcgQEAKIAkJCQlCQ0E2MkRGRTBFMjgy
NjIzMDAwNEYzMEQgLyogQ2FsbERhdGEuY3BwICovLAogCQkJCTE0NUM1MDdGMEQ5REY2M0IwMDg4
RjZCOSAvKiBDYWxsRGF0YS5oICovLAogCQkJCUJDNkFBQUU0MEUxRjQyNjUwMEFEODdEOCAvKiBD
bGFzc0luZm8uaCAqLywKKwkJCQkwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEgLyogQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5jcHAgKi8sCiAJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKIAkJCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAg
LyogQ29tbW9uSWRlbnRpZmllcnMuY3BwICovLAogCQkJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2
MCAvKiBDb21tb25JZGVudGlmaWVycy5oICovLApAQCAtMjU2MCw5ICsyNTc2LDE0IEBACiAJCQkJ
MEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkw
RjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjBC
ODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aCAqLywKKwkJCQkwRjhGOTQzRDE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAg
Ki8sCisJCQkJMEY4Rjk0M0UxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCAqLywK
KwkJCQkwRjk2RUJCMTE2Njc2RUY0MDA4QkFERTMgLyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCAq
LywKIAkJCQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLywKIAkJ
CQk5NjlBMDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCisJCQkJMEY4Rjk0
NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICovLAogCQkJCTBGQkQ3RTY3MTQ0
Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi8sCisJCQkJMEY4Rjk0M0YxNjY3NjMyRDAw
RDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLywKIAkJCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYg
LyogQ29kZVR5cGUuaCAqLywKIAkJCQlGRUI2M0FBMjE1OUI5REEzMDA4OTMyQTYgLyogQ29tbWVu
dC5oICovLAogCQkJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi8s
CkBAIC0zMDU0LDYgKzMwNzUsOCBAQAogCQkJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBK
SVREaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzNEN0FGMTY1QTE0MzAwMEFD
QUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRE
QkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2gu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2RlQmxv
Y2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNjM3LDYgKzM2NjAsMTEgQEAKIAkJ
CQkwRjczRDdBRTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM3MDE2NURCQjkwMDA1QUQzODcgLyogRGlzYXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRERCRkI1MTY2NkVFRDgwMEM1NUZFRiAvKiBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOEY5NDND
MTY2NzYzMTMwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGOEY5NDQwMTY2NzYzMzAwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEgLyogSklUQ29k
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjhGOTQ0NjE2Njc2NEYxMDBENjE5NzEgLyogQ29k
ZU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIgogI2lu
Y2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCIKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiT3Bjb2RlLmgiCkBAIC02NSw2ICs2NiwxMSBAQCBzdHJ1Y3QgQ2FsbExpbmtJ
bmZvIDogcHVibGljIEJhc2ljUmF3U2VuCiAgICAgICAgIGlmIChpc09uTGlzdCgpKQogICAgICAg
ICAgICAgcmVtb3ZlKCk7CiAgICAgfQorICAgIAorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
c3BlY2lhbGl6YXRpb25LaW5kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzcGVjaWFs
aXphdGlvbkZyb21Jc0NvbnN0cnVjdChjYWxsVHlwZSA9PSBDb25zdHJ1Y3QpOworICAgIH0KIAog
ICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICBDb2RlTG9j
YXRpb25EYXRhTGFiZWxQdHIgaG90UGF0aEJlZ2luOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw2ICs2MiwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAj
ZW5kaWYKIAorQ29kZUJsb2NrSGFzaCBDb2RlQmxvY2s6Omhhc2goKSBjb25zdAoreworICAgIHJl
dHVybiBDb2RlQmxvY2tIYXNoKG93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3BlY2lhbGl6
YXRpb25LaW5kKCkpOworfQorCit2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlwZShQ
cmludFN0cmVhbSYgb3V0LCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpIGNvbnN0Cit7CisgICAg
b3V0LnByaW50KCIjIiwgaGFzaCgpLCAiOlsiLCBSYXdQb2ludGVyKHRoaXMpLCAiLCAiLCBqaXRU
eXBlLCBjb2RlVHlwZSgpKTsKKyAgICBpZiAoY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCisg
ICAgICAgIG91dC5wcmludChzcGVjaWFsaXphdGlvbktpbmQoKSk7CisgICAgb3V0LnByaW50KCJd
Iik7Cit9CisKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgZHVtcEFzc3VtaW5nSklUVHlwZShvdXQsIGdldEpJVFR5cGUoKSk7Cit9CisKIHN0YXRp
YyBTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFN0cmluZyYgc3RyKQogewogICAgIFN0cmluZyBy
ZXN1bHQgPSBzdHI7CkBAIC00ODAsNyArNDk4LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50U3Ry
dWN0dXJlcyhjb25zdCBJbgogICAgIEFTU0VSVCh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2VuZXJpYykgfHwgdlBDWzBdLnUub3Bjb2RlID09
IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX2dlbmVyaWMpIHx8IHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2NhbGwpIHx8IHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2NhbGxfZXZhbCkgfHwgdlBDWzBdLnUu
b3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfY29uc3RydWN0KSk7CiB9CiAKLXZv
aWQgQ29kZUJsb2NrOjpkdW1wKCkKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKQogewog
ICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBFeGVjU3RhdGUqIGZvciB0aGluZ3MgdGhhdCBkb24ndCBh
Y3R1YWxseSBsZWFkIHRvIEpTIGV4ZWN1dGlvbiwKICAgICAvLyBsaWtlIGNvbnZlcnRpbmcgYSBK
U1N0cmluZyB0byBhIFN0cmluZy4gSGVuY2UgdGhlIGdsb2JhbEV4ZWMgaXMgYXBwcm9wcmlhdGUu
CkBAIC00OTEsMTIgKzUwOSwxMiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcCgpCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Ro
c1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51Lm9w
Y29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKKyAgICBkYXRhTG9nKCp0aGlz
KTsKICAgICBkYXRhTG9nRigKLSAgICAgICAgIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVz
IGF0ICVwICglcyk7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2
YXJpYWJsZShzKSIsCisgICAgICAgICI6ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAl
ZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocykiLAog
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
LAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXpl
KCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgY29kZVR5cGVUb1N0cmlu
Zyhjb2RlVHlwZSgpKSwgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywKLSAg
ICAgICAgbV9udW1WYXJzKTsKKyAgICAgICAgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJl
Z2lzdGVycywgbV9udW1WYXJzKTsKICAgICBpZiAoc3ltYm9sVGFibGUoKSAmJiBzeW1ib2xUYWJs
ZSgpLT5jYXB0dXJlQ291bnQoKSkKICAgICAgICAgZGF0YUxvZ0YoIjsgJWQgY2FwdHVyZWQgdmFy
KHMpIiwgc3ltYm9sVGFibGUoKS0+Y2FwdHVyZUNvdW50KCkpOwogICAgIGlmICh1c2VzQXJndW1l
bnRzKCkpIHsKQEAgLTUxMiw3ICs1MzAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcCgpCiAgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBj
b25zdCBJbnN0cnVjdGlvbiogZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CiAgICAgZm9yIChj
b25zdCBJbnN0cnVjdGlvbiogaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBk
dW1wKGV4ZWMsIGJlZ2luLCBpdCk7CisgICAgICAgIGR1bXBCeXRlY29kZShleGVjLCBiZWdpbiwg
aXQpOwogCiAgICAgaWYgKCFtX2lkZW50aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBkYXRh
TG9nRigiXG5JZGVudGlmaWVyczpcbiIpOwpAQCAtNjA3LDcgKzYyNSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wKCkKICAgICBkYXRhTG9nRigiXG4iKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1
bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3Ry
dWN0aW9uKiYgaXQpCit2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KQogewog
ICAgIGludCBsb2NhdGlvbiA9IGl0IC0gYmVnaW47CiAgICAgc3dpdGNoIChleGVjLT5pbnRlcnBy
ZXRlcigpLT5nZXRPcGNvZGVJRChpdC0+dS5vcGNvZGUpKSB7CkBAIC0xNDU4LDExICsxNDc2LDEx
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICB9CiB9CiAK
LXZvaWQgQ29kZUJsb2NrOjpkdW1wKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIGNvbnN0IElu
c3RydWN0aW9uKiBpdCA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZU9mZnNldDsK
LSAgICBkdW1wKGV4ZWMsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0KTsKKyAgICBkdW1wQnl0
ZWNvZGUoZXhlYywgaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgaXQpOwogfQogCiAjaWYgRFVNUF9D
T0RFX0JMT0NLX1NUQVRJU1RJQ1MKQEAgLTE4OTIsNyArMTkxMCw3IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBtX2luc3RydWN0aW9ucyA9IFdURjo6UmVm
Q291bnRlZEFycmF5PEluc3RydWN0aW9uPihpbnN0cnVjdGlvbnMpOwogCiAgICAgaWYgKE9wdGlv
bnM6OmR1bXBHZW5lcmF0ZWRCeXRlY29kZXMoKSkKLSAgICAgICAgZHVtcCgpOworICAgICAgICBk
dW1wQnl0ZWNvZGUoKTsKICAgICBtX2dsb2JhbERhdGEtPmZpbmlzaGVkQ29tcGlsaW5nKHRoaXMp
OwogfQogCkBAIC0yMTg2LDcgKzIyMDQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2Fs
bExpbmtJbmZvcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlu
a0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0lu
Zm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlu
a2luZykKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IGNhbGwg
ZnJvbSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmlu
ZyBMTEludCBjYWxsIGZyb20gIiwgKnRoaXMsICJcbiIpOwogICAgICAgICAgICAgICAgIG1fbGxp
bnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6Omlz
TWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKQEAg
LTIxOTksMTQgKzIyMTcsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KAogICAgIC8vIENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0
dGlzb24uCiAgICAgaWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1Nj
YW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKICAgICAgICAgaWYg
KHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICBkYXRhTG9nRigiQ29kZSBibG9jayAlcCAo
ZXhlY3V0YWJsZSAlcCkgaGFzIGRlYWQgd2VhayByZWZlcmVuY2VzLCBqZXR0aXNvbmluZyBkdXJp
bmcgR0MuXG4iLCB0aGlzLCBvd25lckV4ZWN1dGFibGUoKSk7CisgICAgICAgICAgICBkYXRhTG9n
KCp0aGlzLCAiIGhhcyBkZWFkIHdlYWsgcmVmZXJlbmNlcywgamV0dGlzb25pbmcgZHVyaW5nIEdD
LlxuIik7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJhc2VsaW5lIEpJVCBrbm93
cyB0aGF0IGl0IHNob3VsZCByZS13YXJtLXVwIGJlZm9yZQogICAgICAgICAvLyBvcHRpbWl6aW5n
LgogICAgICAgICBhbHRlcm5hdGl2ZSgpLT5vcHRpbWl6ZUFmdGVyV2FybVVwKCk7CiAgICAgICAg
IAogICAgICAgICBpZiAoREZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkgewotICAgICAgICAg
ICAgZGF0YUxvZ0YoIkRGRyBDb2RlQmxvY2sgJXAgd2lsbCBiZSBqZXR0aXNvbmVkIGJlY2F1c2Ug
b2YgdGhlIGZvbGxvd2luZyBkZWFkIHJlZmVyZW5jZXM6XG4iLCB0aGlzKTsKKyAgICAgICAgICAg
IGRhdGFMb2coKnRoaXMsICJ3aWxsIGJlIGpldHRpc29uZWQgYmVjYXVzZSBvZiB0aGUgZm9sbG93
aW5nIGRlYWQgcmVmZXJlbmNlczpcbiIpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fZGZnRGF0YS0+dHJhbnNpdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
ICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiYgdHJhbnNpdGlvbiA9IG1fZGZnRGF0YS0+dHJh
bnNpdGlvbnNbaV07CiAgICAgICAgICAgICAgICAgSlNDZWxsKiBvcmlnaW4gPSB0cmFuc2l0aW9u
Lm1fY29kZU9yaWdpbi5nZXQoKTsKQEAgLTIyMzQsNyArMjI1Miw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wdXRU
b0Jhc2VPcGVyYXRpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAg
aWYgKG1fcHV0VG9CYXNlT3BlcmF0aW9uc1tpXS5tX3N0cnVjdHVyZSAmJiAhSGVhcDo6aXNNYXJr
ZWQobV9wdXRUb0Jhc2VPcGVyYXRpb25zW2ldLm1fc3RydWN0dXJlLmdldCgpKSkgewogICAgICAg
ICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNs
ZWFyaW5nIHB1dFRvQmFzZSBpbmZvIGluICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAg
ZGF0YUxvZygiQ2xlYXJpbmcgcHV0VG9CYXNlIGluZm8gaW4gIiwgKnRoaXMsICJcbiIpOwogICAg
ICAgICAgICAgbV9wdXRUb0Jhc2VPcGVyYXRpb25zW2ldLm1fc3RydWN0dXJlLmNsZWFyKCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yMjQ4LDcgKzIyNjYsNyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgIG1fcmVzb2x2ZU9wZXJhdGlvbnNbaV0ubGFz
dCgpLm1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIGlmIChtX3Jlc29sdmVPcGVyYXRpb25z
W2ldLmxhc3QoKS5tX3N0cnVjdHVyZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9yZXNvbHZlT3BlcmF0
aW9uc1tpXS5sYXN0KCkubV9zdHJ1Y3R1cmUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAodmVy
Ym9zZVVubGlua2luZykKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgcmVzb2x2
ZSBpbmZvIGluICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJp
bmcgcmVzb2x2ZSBpbmZvIGluICIsICp0aGlzLCAiXG4iKTsKICAgICAgICAgICAgIG1fcmVzb2x2
ZU9wZXJhdGlvbnNbaV0ubGFzdCgpLm1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yMjYyLDEzICsyMjgwLDIzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxseSgKICAgICAgICAgICAgICAgICBpZiAoQ2xvc3VyZUNhbGxTdHViUm91dGluZSog
c3R1YiA9IGNhbGxMaW5rSW5mbyhpKS5zdHViLmdldCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmICghSGVhcDo6aXNNYXJrZWQoc3R1Yi0+c3RydWN0dXJlKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB8fCAhSGVhcDo6aXNNYXJrZWQoc3R1Yi0+ZXhlY3V0YWJsZSgpKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIGNsb3N1cmUgY2FsbCBmcm9tICVwIHRvICVw
LCBzdHViIHJvdXRpbmUgJXAuXG4iLCB0aGlzLCBzdHViLT5leGVjdXRhYmxlKCksIHN0dWIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiQ2xlYXJpbmcgY2xvc3VyZSBjYWxsIGZyb20gIiwgKnRoaXMsICIgdG8gIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1Yi0+ZXhlY3V0YWJsZSgpLT5oYXNoRm9yKGNh
bGxMaW5rSW5mbyhpKS5zcGVjaWFsaXphdGlvbktpbmQoKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIsIHN0dWIgcm91dGluZSAiLCBSYXdQb2ludGVyKHN0dWIpLCAiLlxuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs
TGlua0luZm8oaSkudW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghSGVhcDo6aXNNYXJr
ZWQoY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigi
Q2xlYXJpbmcgY2FsbCBmcm9tICVwIHRvICVwLlxuIiwgdGhpcywgY2FsbExpbmtJbmZvKGkpLmNh
bGxlZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJDbGVhcmluZyBjYWxsIGZyb20gIiwgKnRoaXMsICIgdG8gIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSYXdQb2ludGVyKGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkp
LCAiICgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mbyhpKS5jYWxs
ZWUuZ2V0KCktPmV4ZWN1dGFibGUoKS0+aGFzaEZvcigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbExpbmtJbmZvKGkpLnNwZWNpYWxpemF0aW9uS2luZCgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiKS5cbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mbyhpKS51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVw
YXRjaEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjMwMyw3
ICsyMzMxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0U3R1YkludGVybmFsKFJlcGF0YwogICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LmFjY2Vzc1R5cGUpOwogICAgIAogICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICBk
YXRhTG9nRigiQ2xlYXJpbmcgc3RydWN0dXJlIGNhY2hlIChraW5kICVkKSBpbiAlcC5cbiIsIHN0
dWJJbmZvLmFjY2Vzc1R5cGUsIHRoaXMpOworICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBzdHJ1
Y3R1cmUgY2FjaGUgKGtpbmQgIiwgc3RhdGljX2Nhc3Q8aW50PihzdHViSW5mby5hY2Nlc3NUeXBl
KSwgIikgaW4gIiwgKnRoaXMsICIuXG4iKTsKICAgICAKICAgICBpZiAoaXNHZXRCeUlkQWNjZXNz
KGFjY2Vzc1R5cGUpKSB7CiAgICAgICAgIGlmIChnZXRKSVRDb2RlKCkuaml0VHlwZSgpID09IEpJ
VENvZGU6OkRGR0pJVCkKQEAgLTI3NjksNyArMjc5Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpyZW9w
dGltaXplKCkKICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+YWx0ZXJuYXRpdmUoKSA9PSB0aGlz
KTsKICAgICByZXBsYWNlbWVudCgpLT50YWxseUZyZXF1ZW50RXhpdFNpdGVzKCk7CiAgICAgaWYg
KERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFMb2dGKCJERkcgQ29k
ZUJsb2NrICVwIHdpbGwgYmUgamV0dGlzb25lZCBkdWUgdG8gcmVvcHRpbWl6YXRpb24gb2YgJXAu
XG4iLCByZXBsYWNlbWVudCgpLCB0aGlzKTsKKyAgICAgICAgZGF0YUxvZygqcmVwbGFjZW1lbnQo
KSwgIiB3aWxsIGJlIGpldHRpc29uZWQgZHVlIHRvIHJlb3B0aW1pemF0aW9uIG9mICIsICp0aGlz
LCAiLlxuIik7CiAgICAgcmVwbGFjZW1lbnQoKS0+amV0dGlzb24oKTsKICAgICBjb3VudFJlb3B0
aW1pemF0aW9uKCk7CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOwpAQCAtMjgzNiw3ICsyODY0
LDcgQEAgdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiAgICAgQVNTRVJUKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSBy
ZXBsYWNlbWVudCgpKTsKICAgICBpZiAoREZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkKLSAg
ICAgICAgZGF0YUxvZ0YoIkpldHRpc29uaW5nIERGRyBDb2RlQmxvY2sgJXAuXG4iLCB0aGlzKTsK
KyAgICAgICAgZGF0YUxvZygiSmV0dGlzb25pbmcgIiwgKnRoaXMsICIuXG4iKTsKICAgICBzdGF0
aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25P
cHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCkBAIC0yODQ1LDcgKzI4NzMsNyBAQCB2
b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkKICAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRp
bWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50
KCkpOwogICAgIGlmIChERkc6OnNob3VsZFNob3dEaXNhc3NlbWJseSgpKQotICAgICAgICBkYXRh
TG9nRigiSmV0dGlzb25pbmcgREZHIENvZGVCbG9jayAlcC5cbiIsIHRoaXMpOworICAgICAgICBk
YXRhTG9nKCJKZXR0aXNvbmluZyAiLCAqdGhpcywgIi5cbiIpOwogICAgIHN0YXRpY19jYXN0PEV2
YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUo
Kmdsb2JhbERhdGEoKSk7CiB9CiAKQEAgLTI4NTQsNyArMjg4Miw3IEBAIHZvaWQgRnVuY3Rpb25D
b2RlQmxvY2s6OmpldHRpc29uKCkKICAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAg
IGlmIChERkc6OnNob3VsZFNob3dEaXNhc3NlbWJseSgpKQotICAgICAgICBkYXRhTG9nRigiSmV0
dGlzb25pbmcgREZHIENvZGVCbG9jayAlcC5cbiIsIHRoaXMpOworICAgICAgICBkYXRhTG9nKCJK
ZXR0aXNvbmluZyAiLCAqdGhpcywgIi5cbiIpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yKCpn
bG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9y
Q2FsbCk7CiB9CiAKQEAgLTI5NDgsNyArMjk3Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVB
bGxQcmVkaWN0aW9ucyhPcGUKIGJvb2wgQ29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiB7
CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBkYXRhTG9nRigiQ29uc2lkZXJpbmcg
b3B0aW1pemluZyAlcC4uLlxuIiwgdGhpcyk7CisgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgb3B0
aW1pemluZyAiLCAqdGhpcywgIi4uLlxuIik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWRVJCT1NF
X1ZBTFVFX1BST0ZJTEUpCkBAIC0yOTk2LDcgKzMwMjQsNyBAQCB2b2lkIENvZGVCbG9jazo6dGFs
bHlGcmVxdWVudEV4aXRTaXRlcygpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiT1NSIGV4aXQg
IyV1IChiYyMldSwgQCV1LCAlcykgZm9yIGNvZGUgYmxvY2sgJXAgb2NjdXJyZWQgZnJlcXVlbnRs
eTsgY291bnRpbmcgYXMgZnJlcXVlbnQgZXhpdCBzaXRlLlxuIiwgaSwgZXhpdC5tX2NvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCwgZXhpdC5tX25vZGVJbmRleCwgREZHOjpleGl0S2luZFRvU3RyaW5n
KGV4aXQubV9raW5kKSwgdGhpcyk7CisgICAgICAgIGRhdGFMb2coIk9TUiBleGl0ICMiLCBpLCAi
IChiYyMiLCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCAiLCBAIiwgZXhpdC5tX25v
ZGVJbmRleCwgIiwgIiwgREZHOjpleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgIikgZm9y
ICIsICp0aGlzLCAiIG9jY3VycmVkIGZyZXF1ZW50bHk6IGNvdW50aW5nIGFzIGZyZXF1ZW50IGV4
aXQgc2l0ZS5cbiIpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtMzAwNSw3ICszMDMzLDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OnRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKQogI2lmIEVOQUJMRShWRVJCT1NF
X1ZBTFVFX1BST0ZJTEUpCiB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogewot
ICAgIGRhdGFMb2dGKCJWYWx1ZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CisgICAgZGF0YUxv
ZygiVmFsdWVQcm9maWxlIGZvciAiLCAqdGhpcywgIjpcbiIpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKICAgICAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CiAgICAg
ICAgIGlmIChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0IDwgMCkgewpAQCAtMzAyMCwxMiArMzA0
OCwxMiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogICAgICAgICBwcm9m
aWxlLT5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAg
IH0KLSAgICBkYXRhTG9nRigiUmFyZUNhc2VQcm9maWxlIGZvciAlcDpcbiIsIHRoaXMpOworICAg
IGRhdGFMb2coIlJhcmVDYXNlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6XG4iKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCk7ICsraSkgewog
ICAgICAgICBSYXJlQ2FzZVByb2ZpbGUqIHByb2ZpbGUgPSByYXJlQ2FzZVByb2ZpbGUoaSk7CiAg
ICAgICAgIGRhdGFMb2dGKCIgICBiYyA9ICVkOiAldVxuIiwgcHJvZmlsZS0+bV9ieXRlY29kZU9m
ZnNldCwgcHJvZmlsZS0+bV9jb3VudGVyKTsKICAgICB9Ci0gICAgZGF0YUxvZ0YoIlNwZWNpYWxG
YXN0Q2FzZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CisgICAgZGF0YUxvZygiU3BlY2lhbEZh
c3RDYXNlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6XG4iKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZTcGVjaWFsRmFzdENhc2VQcm9maWxlcygpOyArK2kpIHsKICAgICAg
ICAgUmFyZUNhc2VQcm9maWxlKiBwcm9maWxlID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZShpKTsK
ICAgICAgICAgZGF0YUxvZ0YoIiAgIGJjID0gJWQ6ICV1XG4iLCBwcm9maWxlLT5tX2J5dGVjb2Rl
T2Zmc2V0LCBwcm9maWxlLT5tX2NvdW50ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxM
aW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmgi
CisjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbW1lbnQuaCIKQEAgLTEyOCw2ICsxMjks
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKICAgICAgICAgCisgICAgICAgIENvZGVCbG9ja0hh
c2ggaGFzaCgpIGNvbnN0OworICAgICAgICB2b2lkIGR1bXBBc3N1bWluZ0pJVFR5cGUoUHJpbnRT
dHJlYW0mLCBKSVRDb2RlOjpKSVRUeXBlKSBjb25zdDsKKyAgICAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CisgICAgICAgIAogICAgICAgICBpbnQgbnVtUGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQogICAgICAgICB2b2lkIHNldE51bVBhcmFt
ZXRlcnMoaW50IG5ld1ZhbHVlKTsKICAgICAgICAgCkBAIC0xMzgsMTEgKzE0Myw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBQYXNzT3duUHRyPENvZGVCbG9jaz4gcmVsZWFzZUFsdGVybmF0
aXZlKCkgeyByZXR1cm4gbV9hbHRlcm5hdGl2ZS5yZWxlYXNlKCk7IH0KICAgICAgICAgdm9pZCBz
ZXRBbHRlcm5hdGl2ZShQYXNzT3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUpIHsgbV9hbHRl
cm5hdGl2ZSA9IGFsdGVybmF0aXZlOyB9CiAgICAgICAgIAotICAgICAgICBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCgpCisgICAgICAgIENvZGVTcGVjaWFsaXphdGlv
bktpbmQgc3BlY2lhbGl6YXRpb25LaW5kKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKG1faXNDb25zdHJ1Y3RvcikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29kZUZvckNvbnN0
cnVjdDsKLSAgICAgICAgICAgIHJldHVybiBDb2RlRm9yQ2FsbDsKKyAgICAgICAgICAgIHJldHVy
biBzcGVjaWFsaXphdGlvbkZyb21Jc0NvbnN0cnVjdChtX2lzQ29uc3RydWN0b3IpOwogICAgICAg
ICB9CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xNjMsOCArMTY2LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAg
ICAgICB2b2lkIGR1bXAoKTsKLSAgICAgICAgdm9pZCBkdW1wKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KTsKKyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoKTsKKyAgICAgICAgdm9pZCBkdW1wQnl0
ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICB2b2lkIHByaW50U3RydWN0
dXJlcyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOwogCkBAIC00
NzIsNyArNDc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgSklUQ29k
ZSYgZ2V0SklUQ29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgZ2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCkgeyByZXR1cm4gbV9qaXRDb2Rl
V2l0aEFyaXR5Q2hlY2s7IH0KLSAgICAgICAgSklUQ29kZTo6SklUVHlwZSBnZXRKSVRUeXBlKCkg
eyByZXR1cm4gbV9qaXRDb2RlLmppdFR5cGUoKTsgfQorICAgICAgICBKSVRDb2RlOjpKSVRUeXBl
IGdldEpJVFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2ppdENvZGUuaml0VHlwZSgpOyB9CiAgICAg
ICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVybiBn
ZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNP
YmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgSlNTY29wZSosIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOwpA
QCAtMTIxMiw3ICsxMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgbV9j
b25zdGFudFJlZ2lzdGVyc1tpXS5zZXQoKm1fZ2xvYmFsRGF0YSwgb3duZXJFeGVjdXRhYmxlKCks
IGNvbnN0YW50c1tpXS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR1bXAoRXhl
Y1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomKTsK
KyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24q
IGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomKTsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVy
TmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRVbmFyeU9w
KEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hh
ciogb3ApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hh
c2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2tIYXNoLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2tIYXNoLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgorCisjaW5jbHVkZSAiU291cmNlQ29k
ZS5oIgorI2luY2x1ZGUgPHd0Zi9TSEExLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5l
IFRBQkxFICgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ejAxMjM0NTY3ODkiKQorCitDb2RlQmxvY2tIYXNoOjpDb2RlQmxvY2tIYXNoKGNvbnN0IGNo
YXIqIHN0cmluZykKKyAgICA6IG1faGFzaCgwKQoreworICAgIGlmIChzdHJsZW4oc3RyaW5nKSAh
PSA2KQorICAgICAgICBDUkFTSCgpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCA2OyArK2kpIHsKKyAgICAgICAgbV9oYXNoICo9IDYyOworICAgICAgICB1bnNpZ25lZCBjID0g
c3RyaW5nW2ldOworICAgICAgICBpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpIHsKKyAgICAgICAg
ICAgIG1faGFzaCArPSBjIC0gJ0EnOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKSB7CisgICAgICAgICAgICBtX2hhc2gg
Kz0gYyAtICdhJyArIDI2OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKGMgPj0gJzAnICYmIGMgPD0gJzknKTsKKyAgICAgICAgbV9oYXNoICs9IGMgLSAn
MCcgKyAyNiAqIDI7CisgICAgfQorfQorCitDb2RlQmxvY2tIYXNoOjpDb2RlQmxvY2tIYXNoKGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
KyAgICA6IG1faGFzaCgwKQoreworICAgIFNIQTEgc2hhMTsKKyAgICBzaGExLmFkZEJ5dGVzKHNv
dXJjZUNvZGUudG9TdHJpbmcoKS51dGY4KCkpOworICAgIFZlY3Rvcjx1aW50OF90LCAyMD4gZGln
ZXN0OworICAgIHNoYTEuY29tcHV0ZUhhc2goZGlnZXN0KTsKKyAgICBtX2hhc2ggKz0gZGlnZXN0
WzBdIHwgKGRpZ2VzdFsxXSA8PCA4KSB8IChkaWdlc3RbMl0gPDwgMTYpIHwgKGRpZ2VzdFszXSA8
PCAyNCk7CisgICAgbV9oYXNoIF49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKTsKK30KKwor
dm9pZCBDb2RlQmxvY2tIYXNoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAg
QVNTRVJUKHN0cmxlbihUQUJMRSkgPT0gNjIpOworICAgIAorICAgIGNoYXIgYnVmZmVyWzddOwor
ICAgIHVuc2lnbmVkIGFjY3VtdWxhdG9yID0gbV9oYXNoOworICAgIGZvciAodW5zaWduZWQgaSA9
IDY7IGktLTspIHsKKyAgICAgICAgYnVmZmVyW2ldID0gVEFCTEVbYWNjdW11bGF0b3IgJSA2Ml07
CisgICAgICAgIGFjY3VtdWxhdG9yIC89IDYyOworICAgIH0KKyAgICBidWZmZXJbNl0gPSAwOwor
ICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb2RlQmxvY2tIYXNoIHJlY29tcHV0ZShi
dWZmZXIpOworICAgIEFTU0VSVChyZWNvbXB1dGUgPT0gKnRoaXMpOworI2VuZGlmIC8vICFBU1NF
UlRfRElTQUJMRUQKKyAgICAKKyAgICBvdXQucHJpbnQoYnVmZmVyKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tIYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9ja0hhc2guaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2tIYXNoLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlQmxv
Y2tIYXNoX2gKKyNkZWZpbmUgQ29kZUJsb2NrSGFzaF9oCisKKyNpbmNsdWRlICJDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKKy8vIENvZGVC
bG9jayBoYXNoZXMgYXJlIHVzZWZ1bCBmb3IgaW5mb3JtYWxseSBpZGVudGlmeWluZyBjb2RlIGJs
b2Nrcy4gVGhleSBjb3JyZXNwb25kCisvLyB0byB0aGUgbG93IDMyIGJpdHMgb2YgYSBTSEExIGhh
c2ggb2YgdGhlIHNvdXJjZSBjb2RlIHdpdGggdHdvIGxvdyBiaXQgZmxpcHBlZAorLy8gYWNjb3Jk
aW5nIHRvIHRoZSByb2xlIHRoYXQgdGhlIGNvZGUgYmxvY2sgc2VydmVzIChjYWxsLCBjb25zdHJ1
Y3QpLiBBZGRpdGlvbmFsbHksIHRoZQorLy8gaGFzaGVzIGFyZSB0eXBpY2FsbHkgb3BlcmF0ZWQg
b3ZlciB1c2luZyBhIHN0cmluZyBpbiB3aGljaCB0aGUgaGFzaCBpcyB0cmFuc2Zvcm1lZAorLy8g
aW50byBhIDYtYnl0ZSBhbHBoYW51bWVyaWMgcmVwcmVzZW50YXRpb24uIFRoaXMgY2FuIGJlIHJl
dHJpZXZlZCBieSB1c2luZworLy8gdG9TdHJpbmcoY29uc3QgQ29kZUJsb2NrSGFzaCYpLiBGaW5h
bGx5LCB3ZSBzdXBwb3J0IENvZGVCbG9ja0hhc2hlcyBmb3IgbmF0aXZlCisvLyBmdW5jdGlvbnMs
IGluIHdoaWNoIGNhc2UgdGhlIGhhc2ggaXMgcmVwbGFjZWQgYnkgdGhlIGZ1bmN0aW9uIGFkZHJl
c3MuCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlOworCitjbGFzcyBDb2Rl
QmxvY2tIYXNoIHsKK3B1YmxpYzoKKyAgICBDb2RlQmxvY2tIYXNoKCkKKyAgICAgICAgOiBtX2hh
c2goMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IENvZGVCbG9ja0hhc2godW5z
aWduZWQgaGFzaCkKKyAgICAgICAgOiBtX2hhc2goaGFzaCkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIENvZGVCbG9ja0hhc2goY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQpOworICAgIAorICAgIGV4cGxpY2l0IENvZGVCbG9ja0hhc2goY29uc3QgY2hhciopOworICAg
IAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KKyAgICAKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKKyAgICAvLyBDb21wYXJpc29u
IG1ldGhvZHMgdXNlZnVsIGZvciBiaXNlY3Rpb24uCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENvZGVCbG9ja0hhc2gmIG90aGVyKSBjb25zdCB7IHJldHVybiBoYXNoKCkgPT0gb3RoZXIuaGFz
aCgpOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVCbG9ja0hhc2gmIG90aGVyKSBj
b25zdCB7IHJldHVybiBoYXNoKCkgIT0gb3RoZXIuaGFzaCgpOyB9CisgICAgYm9vbCBvcGVyYXRv
cjwoY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2goKSA8IG90
aGVyLmhhc2goKTsgfQorICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IENvZGVCbG9ja0hhc2gmIG90
aGVyKSBjb25zdCB7IHJldHVybiBoYXNoKCkgPiBvdGhlci5oYXNoKCk7IH0KKyAgICBib29sIG9w
ZXJhdG9yPD0oY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2go
KSA8PSBvdGhlci5oYXNoKCk7IH0KKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgQ29kZUJsb2Nr
SGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2goKSA+PSBvdGhlci5oYXNoKCk7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9oYXNoOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBDb2RlQmxvY2tIYXNoX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja1dpdGhKSVRU
eXBlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlQmxvY2tXaXRoSklUVHlwZV9o
CisjZGVmaW5lIENvZGVCbG9ja1dpdGhKSVRUeXBlX2gKKworI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gV2Ugc29tZXRpbWVzIHdoYXQgdG8gcHJpbnQgdGhl
IENvZGVCbG9jaydzIElEIGJlZm9yZSBzZXR0aW5nIGl0cyBKSVRDb2RlLiBBdCB0aGF0CisvLyBw
b2ludCB0aGUgQ29kZUJsb2NrIHdpbGwgY2xhaW0gYSBib2d1cyBKSVRUeXBlLiBUaGlzIGhlbHBl
ciBjbGFzcyBsZXRzIHVzIGRvIHRoYXQuCisKK2NsYXNzIENvZGVCbG9ja1dpdGhKSVRUeXBlIHsK
K3B1YmxpYzoKKyAgICBDb2RlQmxvY2tXaXRoSklUVHlwZShDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQorICAgICAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9j
aykKKyAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICB7CisgICAgfQorICAgIAorICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgbV9jb2Rl
QmxvY2stPmR1bXBBc3N1bWluZ0pJVFR5cGUob3V0LCBtX2ppdFR5cGUpOworICAgIH0KK3ByaXZh
dGU6CisgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBKSVRDb2RlOjpKSVRUeXBlIG1f
aml0VHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29kZUJsb2Nr
V2l0aEpJVFR5cGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCit1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aEZv
ckNhbGxGcmFtZShJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKK3sKKyAgICB1bnNp
Z25lZCByZXN1bHQgPSAxOworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBjdXJyZW50ID0gaW5s
aW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+Y2FsbGVyLmlubGluZUNh
bGxGcmFtZSkKKyAgICAgICAgcmVzdWx0Kys7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordW5z
aWduZWQgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBpbmxp
bmVEZXB0aEZvckNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOworfQorICAgIAorVmVjdG9yPENv
ZGVPcmlnaW4+IENvZGVPcmlnaW46OmlubGluZVN0YWNrKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
Q29kZU9yaWdpbj4gcmVzdWx0KGlubGluZURlcHRoKCkpOworICAgIHJlc3VsdC5sYXN0KCkgPSAq
dGhpczsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHJlc3VsdC5zaXplKCkgLSAyOworICAgIGZvciAo
SW5saW5lQ2FsbEZyYW1lKiBjdXJyZW50ID0gaW5saW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJy
ZW50ID0gY3VycmVudC0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgcmVzdWx0W2lu
ZGV4LS1dID0gY3VycmVudC0+Y2FsbGVyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NvZGVC
bG9ja0hhc2ggSW5saW5lQ2FsbEZyYW1lOjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXhl
Y3V0YWJsZS0+aGFzaEZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3Jp
Z2luLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgQ29k
ZU9yaWdpbl9oCiAjZGVmaW5lIENvZGVPcmlnaW5faAogCisjaW5jbHVkZSAiQ29kZUJsb2NrSGFz
aC5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJWYWx1
ZVJlY292ZXJ5LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Jp
dFZlY3Rvci5oPgpAQCAtOTgsNiArMTAwLDEwIEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewog
ICAgIEJpdFZlY3RvciBjYXB0dXJlZFZhcnM7IC8vIEluZGV4ZWQgYnkgdGhlIG1hY2hpbmUgY2Fs
bCBmcmFtZSdzIHZhcmlhYmxlIG51bWJlcmluZy4KICAgICB1bnNpZ25lZCBzdGFja09mZnNldCA6
IDMxOwogICAgIGJvb2wgaXNDYWxsIDogMTsKKyAgICAKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCgpIGNvbnN0IHsgcmV0dXJuIHNwZWNpYWxpemF0aW9uRnJv
bUlzQ2FsbChpc0NhbGwpOyB9CisgICAgCisgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3Q7
CiB9OwogCiBzdHJ1Y3QgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCB7CkBAIC0xMDUsMzYg
KzExMSwxMiBAQCBzdHJ1Y3QgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCB7CiAgICAgdW5z
aWduZWQgY2FsbFJldHVybk9mZnNldDsKIH07CiAKLWlubGluZSB1bnNpZ25lZCBDb2RlT3JpZ2lu
OjppbmxpbmVEZXB0aEZvckNhbGxGcmFtZShJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSkKLXsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAxOwotICAgIGZvciAoSW5saW5lQ2FsbEZyYW1l
KiBjdXJyZW50ID0gaW5saW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+
Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgcmVzdWx0Kys7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIENvZGVPcmlnaW46OmlubGluZURlcHRoKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1l
KTsKLX0KLSAgICAKIGlubGluZSBib29sIENvZGVPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QgQ29k
ZU9yaWdpbiYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJ5dGVjb2RlSW5kZXggPT0gb3Ro
ZXIuYnl0ZWNvZGVJbmRleAogICAgICAgICAmJiBpbmxpbmVDYWxsRnJhbWUgPT0gb3RoZXIuaW5s
aW5lQ2FsbEZyYW1lOwogfQogICAgIAotLy8gR2V0IHRoZSBpbmxpbmUgc3RhY2suIFRoaXMgaXMg
c2xvdywgYW5kIGlzIGludGVuZGVkIGZvciBkZWJ1Z2dpbmcgb25seS4KLWlubGluZSBWZWN0b3I8
Q29kZU9yaWdpbj4gQ29kZU9yaWdpbjo6aW5saW5lU3RhY2soKSBjb25zdAotewotICAgIFZlY3Rv
cjxDb2RlT3JpZ2luPiByZXN1bHQoaW5saW5lRGVwdGgoKSk7Ci0gICAgcmVzdWx0Lmxhc3QoKSA9
ICp0aGlzOwotICAgIHVuc2lnbmVkIGluZGV4ID0gcmVzdWx0LnNpemUoKSAtIDI7Ci0gICAgZm9y
IChJbmxpbmVDYWxsRnJhbWUqIGN1cnJlbnQgPSBpbmxpbmVDYWxsRnJhbWU7IGN1cnJlbnQ7IGN1
cnJlbnQgPSBjdXJyZW50LT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICByZXN1bHRb
aW5kZXgtLV0gPSBjdXJyZW50LT5jYWxsZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogaW5s
aW5lIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXRGb3JDb2RlT3JpZ2luKENvZGVPcmlnaW5B
dENhbGxSZXR1cm5PZmZzZXQqIGRhdGEpCiB7CiAgICAgcmV0dXJuIGRhdGEtPmNhbGxSZXR1cm5P
ZmZzZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5
cGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDb2RlVHlwZS5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpDb2Rl
VHlwZSBjb2RlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7CisgICAgY2FzZSBKU0M6
Okdsb2JhbENvZGU6CisgICAgICAgIG91dC5wcmludCgiR2xvYmFsIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEpTQzo6RXZhbENvZGU6CisgICAgICAgIG91dC5wcmludCgiRXZhbCIpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OkZ1bmN0aW9uQ29kZToKKyAgICAgICAgb3V0
LnByaW50KCJGdW5jdGlvbiIpOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCShy
ZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjIgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBlbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSB9Owog
Ci1pbmxpbmUgY29uc3QgY2hhciogY29kZVR5cGVUb1N0cmluZyhDb2RlVHlwZSBjb2RlVHlwZSkK
LXsKLSAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7Ci0gICAgY2FzZSBHbG9iYWxDb2RlOgotICAgICAg
ICByZXR1cm4gIkdsb2JhbENvZGUiOwotICAgIGNhc2UgRXZhbENvZGU6Ci0gICAgICAgIHJldHVy
biAiRXZhbENvZGUiOwotICAgIGNhc2UgRnVuY3Rpb25Db2RlOgotICAgICAgICByZXR1cm4gIkZ1
bmN0aW9uQ29kZSI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKK25h
bWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYsIEpTQzo6Q29kZVR5cGUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2Vu
ZGlmIC8vIENvZGVUeXBlX2gKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGlvbkNvdW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjAsMTEgKzE2MCw5IEBAIHZvaWQgRXhlY3V0aW9uQ291bnRlcjo6cmVzZXQo
KQogICAgIG1fYWN0aXZlVGhyZXNob2xkID0gMDsKIH0KIAotY29uc3QgY2hhciogRXhlY3V0aW9u
Q291bnRlcjo6c3RhdHVzKCkgY29uc3QKK3ZvaWQgRXhlY3V0aW9uQ291bnRlcjo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIHN0YXRpYyBjaGFyIHJlc3VsdFs4MF07Ci0gICAg
c25wcmludGYocmVzdWx0LCBzaXplb2YocmVzdWx0KSwgIiVsZi8lbGYsICVkIiwgY291bnQoKSwg
c3RhdGljX2Nhc3Q8ZG91YmxlPihtX2FjdGl2ZVRocmVzaG9sZCksIG1fY291bnRlcik7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBvdXQucHJpbnRmKCIlbGYvJWxmLCAlZCIsIGNvdW50KCksIHN0
YXRpY19jYXN0PGRvdWJsZT4obV9hY3RpdmVUaHJlc2hvbGQpLCBtX2NvdW50ZXIpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRpb25Db3VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3Rm
L1NpbXBsZVN0YXRzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXROZXdUaHJlc2hvbGQoaW50MzJfdCB0aHJlc2hvbGQsIENvZGVCbG9j
ayopOwogICAgIHZvaWQgZGVmZXJJbmRlZmluaXRlbHkoKTsKICAgICBkb3VibGUgY291bnQoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdG90YWxDb3VudCkgKyBtX2NvdW50
ZXI7IH0KLSAgICBjb25zdCBjaGFyKiBzdGF0dXMoKSBjb25zdDsKKyAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKICAgICBzdGF0aWMgZG91YmxlIGFwcGx5TWVtb3J5VXNhZ2VIZXVy
aXN0aWNzKGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOwogICAgIHN0YXRpYyBpbnQzMl90IGFw
cGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50KGludDMyX3QgdmFsdWUsIENv
ZGVCbG9jayopOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTM2MDk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2NDUsMjEgKzM2NDUsMjMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VDb2RlQmxvY2soKQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9jb2RlQmxvY2s7CiAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQot
ICAgIGRhdGFMb2dGKCJQYXJzaW5nIGNvZGUgYmxvY2sgJXAuIGNvZGVUeXBlID0gJXMsIGNhcHR1
cmVDb3VudCA9ICV1LCBuZWVkc0Z1bGxTY29wZUNoYWluID0gJXMsIG5lZWRzQWN0aXZhdGlvbiA9
ICVzLCBpc1N0cmljdE1vZGUgPSAlc1xuIiwKLSAgICAgICAgICAgIGNvZGVCbG9jaywKLSAgICAg
ICAgICAgIGNvZGVUeXBlVG9TdHJpbmcoY29kZUJsb2NrLT5jb2RlVHlwZSgpKSwKLSAgICAgICAg
ICAgIGNvZGVCbG9jay0+c3ltYm9sVGFibGUoKSA/IGNvZGVCbG9jay0+c3ltYm9sVGFibGUoKS0+
Y2FwdHVyZUNvdW50KCkgOiAwLAotICAgICAgICAgICAgY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29w
ZUNoYWluKCk/InRydWUiOiJmYWxzZSIsCi0gICAgICAgICAgICBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5uZWVkc0FjdGl2YXRpb24oKT8idHJ1ZSI6ImZhbHNlIiwKLSAgICAgICAgICAg
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpPyJ0cnVlIjoiZmFs
c2UiKTsKLSAgICBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5kdW1wKCk7CisgICAgZGF0
YUxvZygKKyAgICAgICAgIlBhcnNpbmcgIiwgKmNvZGVCbG9jaywKKyAgICAgICAgIjogY2FwdHVy
ZUNvdW50ID0gIiwgY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpID8gY29kZUJsb2NrLT5zeW1ib2xU
YWJsZSgpLT5jYXB0dXJlQ291bnQoKSA6IDAsCisgICAgICAgICIsIG5lZWRzRnVsbFNjb3BlQ2hh
aW4gPSAiLCBjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSwKKyAgICAgICAgIiwgbmVl
ZHNBY3RpdmF0aW9uID0gIiwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmVlZHNBY3Rp
dmF0aW9uKCksCisgICAgICAgICIsIGlzU3RyaWN0TW9kZSA9ICIsIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpLCAiXG4iKTsKKyAgICBjb2RlQmxvY2stPmJhc2Vs
aW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNvZGUoKTsKICNlbmRpZgogICAgIAogICAgIGZvciAodW5z
aWduZWQganVtcFRhcmdldEluZGV4ID0gMDsganVtcFRhcmdldEluZGV4IDw9IGNvZGVCbG9jay0+
bnVtYmVyT2ZKdW1wVGFyZ2V0cygpOyArK2p1bXBUYXJnZXRJbmRleCkgewogICAgICAgICAvLyBU
aGUgbWF4aW11bSBieXRlY29kZSBvZmZzZXQgdG8gZ28gaW50byB0aGUgY3VycmVudCBiYXNpY2Js
b2NrIGlzIGVpdGhlciB0aGUgbmV4dCBqdW1wIHRhcmdldCwgb3IgdGhlIGVuZCBvZiB0aGUgaW5z
dHJ1Y3Rpb25zLgogICAgICAgICB1bnNpZ25lZCBsaW1pdCA9IGp1bXBUYXJnZXRJbmRleCA8IGNv
ZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpID8gY29kZUJsb2NrLT5qdW1wVGFyZ2V0KGp1
bXBUYXJnZXRJbmRleCkgOiBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJQYXJzaW5nIGJ5dGVj
b2RlIHdpdGggbGltaXQgJXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwgbV9pbmxpbmVT
dGFja1RvcC0+ZXhlY3V0YWJsZSgpLCBsaW1pdCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JD
YWxsRnJhbWUobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKKyAgICAgICAg
ZGF0YUxvZygKKyAgICAgICAgICAgICJQYXJzaW5nIGJ5dGVjb2RlIHdpdGggbGltaXQgIiwgbV9p
bmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmhhc2goKSwKKyAgICAgICAgICAgICIg
YmMjIiwgbGltaXQsICIgYXQgaW5saW5lIGRlcHRoICIsCisgICAgICAgICAgICBDb2RlT3JpZ2lu
OjppbmxpbmVEZXB0aEZvckNhbGxGcmFtZShtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxG
cmFtZSksICIuXG4iKTsKICNlbmRpZgogICAgICAgICBBU1NFUlQobV9jdXJyZW50SW5kZXggPCBs
aW1pdCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgog
I2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
QEAgLTQzLDcgKzQ0LDcgQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dAogewogICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLmNvbXB1dGVJZk5lY2Vzc2FyeShtX2dyYXBo
KTsKICAgICAKLSAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgREZHIENvZGVC
bG9jayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubV9jb2RlQmxvY2spLCAiLCBpbnN0cnVjdGlvbiBj
b3VudCA9ICIsIG1fZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIjpcbiIp
OworICAgIG91dC5wcmludCgiR2VuZXJhdGVkIEpJVCBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRo
SklUVHlwZShtX2dyYXBoLm1fY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpLCAiLCBpbnN0cnVj
dGlvbiBjb3VudCA9ICIsIG1fZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwg
IjpcbiIpOwogICAgIG91dC5wcmludCgiICAgIENvZGUgYXQgWyIsIFJhd1BvaW50ZXIobGlua0J1
ZmZlci5kZWJ1Z0FkZHJlc3MoKSksICIsICIsIFJhd1BvaW50ZXIoc3RhdGljX2Nhc3Q8Y2hhcio+
KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSksICIp
OlxuIik7CiAgICAgCiAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDEzNjA5NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OCwxNCArODgsMTQgQEAgdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0mIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IHByZXZpb3VzSW5saW5lU3RhY2suc2l6ZSgpOyBpLS0gPiBp
bmRleE9mRGl2ZXJnZW5jZTspIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCk7CiAgICAgICAg
IHByaW50V2hpdGVTcGFjZShvdXQsIGkgKiAyKTsKLSAgICAgICAgb3V0LnByaW50KCI8LS0gIiwg
UmF3UG9pbnRlcihwcmV2aW91c0lubGluZVN0YWNrW2ldLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0
YWJsZS5nZXQoKSksICJcbiIpOworICAgICAgICBvdXQucHJpbnQoIjwtLSAjIiwgcHJldmlvdXNJ
bmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmhhc2goKSwgIlxuIik7CiAgICAgfQogICAg
IAogICAgIC8vIFByaW50IHRoZSBwdXNoZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kZXhP
ZkRpdmVyZ2VuY2U7IGkgPCBjdXJyZW50SW5saW5lU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgb3V0LnByaW50KHByZWZpeCk7CiAgICAgICAgIHByaW50V2hpdGVTcGFjZShvdXQsIGkgKiAy
KTsKLSAgICAgICAgb3V0LnByaW50KCItLT4gIiwgUmF3UG9pbnRlcihjdXJyZW50SW5saW5lU3Rh
Y2tbaV0uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKSwgIlxuIik7CisgICAgICAg
IG91dC5wcmludCgiLS0+ICMiLCBjdXJyZW50SW5saW5lU3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1l
LT5oYXNoKCksICJcbiIpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKKyNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCkBAIC04MSw3ICs4MiwxMCBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4
aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0Up
Ci0gICAgZGF0YUxvZ0YoIkdlbmVyYXRpbmcgT1NSIGV4aXQgIyV1IChzZXEjJXUsIGJjIyV1LCBA
JXUsICVzKSBmb3IgY29kZSBibG9jayAlcC5cbiIsIGV4aXRJbmRleCwgZXhpdC5tX3N0cmVhbUlu
ZGV4LCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LCBl
eGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgY29kZUJsb2NrKTsKKyAgICBkYXRhTG9nKAor
ICAgICAgICAiR2VuZXJhdGluZyBPU1IgZXhpdCAjIiwgZXhpdEluZGV4LCAiIChzZXEjIiwgZXhp
dC5tX3N0cmVhbUluZGV4LAorICAgICAgICAiLCBiYyMiLCBleGl0Lm1fY29kZU9yaWdpbi5ieXRl
Y29kZUluZGV4LCAiLCBAIiwgZXhpdC5tX25vZGVJbmRleCwgIiwgIiwKKyAgICAgICAgZXhpdEtp
bmRUb1N0cmluZyhleGl0Lm1fa2luZCksICIpIGZvciAiLCAqY29kZUJsb2NrLCAiLlxuIik7CiAj
ZW5kaWYKIAogICAgIHsKQEAgLTk1LDkgKzk5LDkgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKICAg
ICAgICAgICAgIHNob3VsZFNob3dEaXNhc3NlbWJseSgpLAogICAgICAgICAgICAgcGF0Y2hCdWZm
ZXIsCi0gICAgICAgICAgICAoIkRGRyBPU1IgZXhpdCAjJXUgKGJjIyV1LCBAJXUsICVzKSBmcm9t
IENvZGVCbG9jayAlcCIsCi0gICAgICAgICAgICAgZXhpdEluZGV4LCBleGl0Lm1fY29kZU9yaWdp
bi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LAotICAgICAgICAgICAgIGV4aXRLaW5k
VG9TdHJpbmcoZXhpdC5tX2tpbmQpLCBjb2RlQmxvY2spKTsKKyAgICAgICAgICAgICgiREZHIE9T
UiBleGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZyb20gJXMiLAorICAgICAgICAgICAgICAgIGV4
aXRJbmRleCwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgZXhpdC5tX25vZGVJbmRl
eCwKKyAgICAgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgdG9DU3Ry
aW5nKCpjb2RlQmxvY2spLmRhdGEoKSkpOwogICAgIH0KICAgICAKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEzNjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MjIsMjIgKzE1MjIsMjQgQEAgdm9pZCBERkdfT1BFUkFUSU9OIGRlYnVn
T3BlcmF0aW9uUHJpbnRTcAogICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJ
bmZvID0gc3RhdGljX2Nhc3Q8U3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKj4oZGVidWdJbmZv
UmF3KTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGRlYnVnSW5mby0+Y29kZUJsb2NrOwog
ICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0g
ICAgZGF0YUxvZ0YoIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gJXAgYXQgQCV1IHdpdGggZXhlY3V0
ZUNvdW50ZXIgPSAlcywgIgotICAgICAgICAgICAgInJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
ID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1LCAiCi0gICAgICAgICAgICAib3Ny
RXhpdENvdW50ZXIgPSAldVxuIiwKLSAgICAgICAgICAgIGNvZGVCbG9jaywKLSAgICAgICAgICAg
IGRlYnVnSW5mby0+bm9kZUluZGV4LAotICAgICAgICAgICAgYWx0ZXJuYXRpdmUgPyBhbHRlcm5h
dGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKS5zdGF0dXMoKSA6IDAsCi0gICAgICAgICAgICBhbHRl
cm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIDogMCwK
LSAgICAgICAgICAgIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPm9wdGltaXphdGlvbkRlbGF5
Q291bnRlcigpIDogMCwKLSAgICAgICAgICAgIGNvZGVCbG9jay0+b3NyRXhpdENvdW50ZXIoKSk7
CisgICAgZGF0YUxvZygKKyAgICAgICAgIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gIiwgKmNvZGVC
bG9jaywgIiBhdCBAIiwgZGVidWdJbmZvLT5ub2RlSW5kZXgsCisgICAgICAgICIgd2l0aCAiKTsK
KyAgICBpZiAoYWx0ZXJuYXRpdmUpIHsKKyAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICJl
eGVjdXRlQ291bnRlciA9ICIsIGFsdGVybmF0aXZlLT5qaXRFeGVjdXRlQ291bnRlcigpLAorICAg
ICAgICAgICAgIiwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAiLCBhbHRlcm5hdGl2ZS0+
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwKKyAgICAgICAgICAgICIsIG9wdGltaXphdGlv
bkRlbGF5Q291bnRlciA9ICIsIGFsdGVybmF0aXZlLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIo
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGRhdGFMb2coIm5vIGFsdGVybmF0aXZlIGNvZGUgYmxv
Y2sgKGkuZS4gd2UndmUgYmVlbiBqZXR0aXNvbmVkKSIpOworICAgIGRhdGFMb2coIiwgb3NyRXhp
dENvdW50ZXIgPSAiLCBjb2RlQmxvY2stPm9zckV4aXRDb3VudGVyKCksICJcbiIpOwogfQogI2Vu
ZGlmCiAKIGV4dGVybiAiQyIgdm9pZCBERkdfT1BFUkFUSU9OIHRyaWdnZXJSZW9wdGltaXphdGlv
bk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQotICAgIGRhdGFMb2dGKCIlcDogRW50ZXJlZCByZW9wdGltaXplXG4iLCBjb2RlQmxvY2spOwor
ICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIjogRW50ZXJlZCByZW9wdGltaXplXG4iKTsKICNlbmRp
ZgogICAgIC8vIFdlIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIGJhc2VsaW5lIGNvZGUgYmxvY2su
CiAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGNvZGVCbG9jay0+Z2V0SklUVHlw
ZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJl
dmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgogI2luY2x1ZGUgIlJlcGF0Y2hC
dWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0yMzUsOCArMjM2LDggQEAgc3RhdGljIHZvaWQg
Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgIAogICAgIHN0dWJSb3V0aW5lID0gRklO
QUxJWkVfQ09ERV9GT1JfREZHX1NUVUIoCiAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAo
IkRGRyBwcm90b3R5cGUgY2hhaW4gYWNjZXNzIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJu
IHBvaW50ICVwIiwKLSAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBzdWNjZXNzTGFiZWwuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAoIkRGRyBwcm90b3R5cGUgY2hhaW4gYWNjZXNz
IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgdG9DU3RyaW5nKCpl
eGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdWNjZXNzTGFiZWwuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOwogfQogCiBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKQEAgLTI5Niw5
ICsyOTcsOSBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAg
ICAgIAogICAgICAgICBzdHViSW5mby5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX0RG
R19TVFVCKAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkRGRyBHZXRC
eUlkIGFycmF5IGxlbmd0aCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIs
Ci0gICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAoIkRG
RyBHZXRCeUlkIGFycmF5IGxlbmd0aCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAg
ICAgICAgICAgICAgICB0b0NTdHJpbmcoKmV4ZWMtPmNvZGVCbG9jaygpKS5kYXRhKCksIHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgICAgICAg
ICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygp
KSk7CiAgICAgICAgIAogICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJs
b2NrKTsKICAgICAgICAgcmVwbGFjZVdpdGhKdW1wKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLCBz
dHViSW5mby5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CkBAIC01MjUsOSArNTI2LDkgQEAg
c3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAgICAgY3Jl
YXRlSklUU3R1YlJvdXRpbmUoCiAgICAgICAgICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCiAg
ICAgICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAoIkRG
RyBHZXRCeUlkIHBvbHltb3JwaGljIGxpc3QgYWNjZXNzIGZvciBDb2RlQmxvY2sgJXAsIHJldHVy
biBwb2ludCAlcCIsCi0gICAgICAgICAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwgc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpLAorICAgICAgICAgICAgICAgICAgICAoIkRGRyBHZXRCeUlkIHBvbHltb3JwaGlj
IGxpc3QgYWNjZXNzIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRhdGEoKSwgc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpLAogICAgICAgICAgICAgICAgICpnbG9iYWxEYXRhLAogICAgICAgICAgICAgICAgIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgICAgICAgICAgc2xvdC5jYWNoZWRQcm9w
ZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRlcgpAQCAtNzM3LDkgKzczOCw5IEBAIHN0
YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICAgICAgICAgICAgIAogICAgIHN0dWJSb3V0
aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfREZHX1NUVUIoCiAgICAgICAgIHBhdGNoQnVmZmVyLAot
ICAgICAgICAoIkRGRyBQdXRCeUlkIHJlcGxhY2Ugc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1
cm4gcG9pbnQgJXAiLAotICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNo
LmRmZy5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgKCJE
RkcgUHV0QnlJZCByZXBsYWNlIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAg
ICAgICAgdG9DU3RyaW5nKCpleGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICBzdHViSW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiB9CiAKIHN0
YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKQEAgLTkzNywxMSArOTM4LDExIEBAIHN0
YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgY3JlYXRlSklUU3R1YlJv
dXRpbmUoCiAgICAgICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgKICAgICAgICAgICAgICAgICBw
YXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAoIkRGRyBQdXRCeUlkICVzdHJhbnNpdGlvbiBz
dHViICglcCAtPiAlcCkgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAg
ICAgICAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG9sZFN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA/ICJyZWFsbG9jYXRpbmcgIiA6ICIiLAotICAgICAgICAg
ICAgICAgICBvbGRTdHJ1Y3R1cmUsIHN0cnVjdHVyZSwKLSAgICAgICAgICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAot
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSku
ZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAorICAgICAgICAgICAgICAgICgiREZHIFB1dEJ5SWQgJXN0
cmFuc2l0aW9uIHN0dWIgKCVwIC0+ICVwKSBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgPyAicmVhbGxvY2F0aW5nICIgOiAiIiwKKyAgICAg
ICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlLCBzdHJ1Y3R1cmUsCisgICAgICAgICAgICAgICAg
ICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRhdGEoKSwgc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAg
ICAgICAgICAgICAqZ2xvYmFsRGF0YSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5v
d25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksCkBAIC0xMjMwLDkgKzEy
MzEsOSBAQCB2b2lkIGRmZ0xpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgUmVm
UHRyPENsb3N1cmVDYWxsU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lID0gYWRvcHRSZWYobmV3IENs
b3N1cmVDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKAogICAgICAg
ICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkRGRyBjbG9zdXJlIGNhbGwgc3R1YiBm
b3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAsIHRhcmdldCAlcCAoQ29kZUJsb2NrICVw
KSIsCi0gICAgICAgICAgICAgICAgY2FsbGVyQ29kZUJsb2NrLCBjYWxsTGlua0luZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoMCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKLSAgICAg
ICAgICAgICAgICBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxlZUNvZGVCbG9jaykp
LAorICAgICAgICAgICAgKCJERkcgY2xvc3VyZSBjYWxsIHN0dWIgZm9yICVzLCByZXR1cm4gcG9p
bnQgJXAsIHRhcmdldCAlcCAoJXMpIiwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKmNhbGxl
ckNvZGVCbG9jaykuZGF0YSgpLCBjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVs
QXRPZmZzZXQoMCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKKyAgICAgICAgICAgICAgICBjb2RlUHRy
LmV4ZWN1dGFibGVBZGRyZXNzKCksIHRvQ1N0cmluZygqY2FsbGVlQ29kZUJsb2NrKS5kYXRhKCkp
KSwKICAgICAgICAgKmdsb2JhbERhdGEsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHN0cnVjdHVyZSwgZXhlY3V0YWJsZSwgY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4pKTsKICAg
ICAKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY2FsbGVyQ29kZUJsb2NrKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OmR1bXBDYWxsRnJhbWUoQ2FsbEZyYW0KIAogdm9pZCBJbnRlcnByZXRl
cjo6ZHVtcENhbGxGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5kdW1wKCk7CisgICAgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+ZHVtcEJ5
dGVjb2RlKCk7CiAgICAgZHVtcFJlZ2lzdGVycyhjYWxsRnJhbWUpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKSVRDb2RlLmgiCisKKyNpbmNsdWRlIDx3dGYv
UHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkpJVENvZGU6OkpJVFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEpTQzo6SklUQ29kZTo6Tm9uZToKKyAgICAgICAgb3V0LnBy
aW50KCJOb25lIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6SklUQ29kZTo6SG9z
dENhbGxUaHVuazoKKyAgICAgICAgb3V0LnByaW50KCJIb3N0Iik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEpTQzo6SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgb3V0LnBy
aW50KCJMTEludCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OkpJVENvZGU6OkJh
c2VsaW5lSklUOgorICAgICAgICBvdXQucHJpbnQoIkJhc2VsaW5lIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEpTQzo6SklUQ29kZTo6REZHSklUOgorICAgICAgICBvdXQucHJpbnQoIkRG
RyIpOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgQ1JBU0goKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU3LDcgKzE1Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fcmVmLmV4ZWN1dGFibGVN
ZW1vcnkoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgSklUVHlwZSBqaXRUeXBlKCkK
KyAgICAgICAgSklUVHlwZSBqaXRUeXBlKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIG1faml0VHlwZTsKICAgICAgICAgfQpAQCAtMTg3LDYgKzE4NywxMyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNlbmRpZiAvLyBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgfTsK
IAotfTsKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJp
bnRTdHJlYW07Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkpJVENvZGU6
OkpJVFR5cGUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAxMzYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNs
dWRlICJKSVQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Niw3ICs0Nyw3IEBAIEpJVERpc2Fz
c2VtYmxlcjo6fkpJVERpc2Fzc2VtYmxlcigpCiAKIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7Ci0gICAgb3V0LnBy
aW50KCJCYXNlbGluZSBKSVQgY29kZSBmb3IgQ29kZUJsb2NrICIsIFJhd1BvaW50ZXIobV9jb2Rl
QmxvY2spLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlv
bkNvdW50KCksICJcbiIpOworICAgIG91dC5wcmludCgiQmFzZWxpbmUgSklUIGNvZGUgZm9yICIs
IENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCks
ICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQo
KSwgIlxuIik7CiAgICAgb3V0LnByaW50KCIgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVyKGxpbmtC
dWZmZXIuZGVidWdBZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0PGNoYXIq
PihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCkpLCAi
KTpcbiIpOwogICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIG1fc3RhcnRPZkNv
ZGUsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aFswXSk7CiAgICAgCkBAIC03OCw3
ICs3OSw3IEBAIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb24KICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIG91dC5wcmludChwcmVmaXgpOwot
ICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcChpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBC
eXRlY29kZShpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBuZXh0SW5kZXggPSBpICsgMTsgOyBu
ZXh0SW5kZXgrKykgewogICAgICAgICAgICAgaWYgKG5leHRJbmRleCA+PSBsYWJlbHMuc2l6ZSgp
KSB7CiAgICAgICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgbGlua0J1ZmZlciwgbGFi
ZWxzW2ldLCBlbmRMYWJlbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwNCw4ICs3MDQsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRC
eUlkVHJhbnNpdGlvCiAgICAgc3R1YkluZm8tPnN0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJv
dXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwK
LSAgICAgICAgICAgICgiQmFzZWxpbmUgcHV0X2J5X2lkIHRyYW5zaXRpb24gc3R1YiBmb3IgQ29k
ZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBy
ZXR1cm5BZGRyZXNzLnZhbHVlKCkpKSwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgcHV0X2J5X2lk
IHRyYW5zaXRpb24gc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICAg
ICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkp
KSwKICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLAogICAgICAgICB3aWxsTmVlZFN0b3JhZ2VSZWFsbG9jLApAQCAtNzc4LDkgKzc3
OCw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW4KICAgICAvLyBU
cmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhhdCBpdCB3aWxsIGJlIGRlbGV0ZWQg
bGF0ZXIuCiAgICAgc3R1YkluZm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RV
QigKICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIGFy
cmF5IGxlbmd0aCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAg
ICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAot
ICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgYXJyYXkg
bGVuZ3RoIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgdG9DU3Ry
aW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRP
ZmZzZXQoCisgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1
dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgIAogICAgIC8vIEZpbmFsbHkgcGF0
Y2ggdGhlIGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVy
ZSBpbnN0ZWFkLgogICAgIENvZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5qdW1wQXRPZmZzZXQoc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0
LnN0cnVjdHVyZUNoZWNrKTsKQEAgLTg0OSw5ICs4NDksOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkUHJvdG8oU3RyCiAgICAgc3R1YkluZm8tPnN0dWJSb3V0aW5lID0gY3JlYXRl
SklUU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRj
aEJ1ZmZlciwKLSAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIHByb3RvIHN0dWIgZm9y
IENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgICAgICBtX2NvZGVCbG9j
aywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgICAg
ICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRk
cmVzcygpKSksCisgICAgICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBwcm90byBzdHViIGZv
ciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKm1fY29k
ZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAg
ICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3Vs
dCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAgICAgICAqbV9nbG9iYWxEYXRhLAogICAgICAg
ICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgIG5lZWRzU3R1Ykxpbmsp
OwpAQCAtOTE1LDkgKzkxNSw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxm
TGlzdCgKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lID0gY3JlYXRlSklU
U3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRjaEJ1
ZmZlciwKLSAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIHNlbGYgbGlzdCBzdHViIGZv
ciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxv
Y2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKLSAgICAgICAgICAgICAg
ICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpLAorICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgc2VsZiBsaXN0IHN0
dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAgIHRvQ1N0cmluZygq
bV9jb2RlQmxvY2spLmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0
KAorICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0
UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICptX2dsb2JhbERhdGEsCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgbmVlZHNTdHVi
TGluayk7CkBAIC05ODgsOSArOTg4LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvTGlzdAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBjcmVh
dGVKSVRTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBh
dGNoQnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgcHJvdG8gbGlzdCBz
dHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9j
b2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKLSAgICAgICAg
ICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkpLAorICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgcHJvdG8g
bGlzdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICB0b0NT
dHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxB
dE9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUu
Z2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAgICAgICAqbV9nbG9iYWxE
YXRhLAogICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgIG5l
ZWRzU3R1YkxpbmspOwpAQCAtMTA2Niw5ICsxMDY2LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlR2V0QnlJZENoYWluTGlzdAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YlJvdXRp
bmUgPSBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAg
ICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgY2hh
aW4gbGlzdCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAg
ICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgK
LSAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3Vs
dCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAorICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlf
aWQgY2hhaW4gbGlzdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAg
ICAgICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAgICAgICAq
bV9nbG9iYWxEYXRhLAogICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAg
ICAgICAgIG5lZWRzU3R1YkxpbmspOwpAQCAtMTE0MCw5ICsxMTQwLDkgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4g
c3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09E
RSgKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRf
YnlfaWQgY2hhaW4gc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAg
ICAgICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZz
ZXQoCi0gICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRS
ZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0
X2J5X2lkIGNoYWluIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAg
ICAgIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdp
bi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFz
ZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICpt
X2dsb2JhbERhdGEsCiAgICAgICAgIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKICAg
ICAgICAgbmVlZHNTdHViTGluayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVz
dWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHN0ZGlvLmg+CkBA
IC03NDYsOCArNzQ3LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRp
bwogICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAg
ICAgICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAg
ICAoIkJhc2VsaW5lIHB1dF9ieV9pZCB0cmFuc2l0aW9uIGZvciBDb2RlQmxvY2sgJXAsIHJldHVy
biBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHJldHVybkFkZHJlc3MudmFs
dWUoKSkpLAorICAgICAgICAgICAgKCJCYXNlbGluZSBwdXRfYnlfaWQgdHJhbnNpdGlvbiBmb3Ig
JXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVC
bG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpKSwKICAgICAgICAgKm1fZ2xvYmFs
RGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICB3
aWxsTmVlZFN0b3JhZ2VSZWFsbG9jLApAQCAtODE1LDkgKzgxNiwxMCBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgLy8gVHJhY2sgdGhlIHN0dWIgd2UgaGF2
ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxhdGVyLgogICAgIHN0dWJJbmZv
LT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAgICAgIHBhdGNoQnVm
ZmVyLAotICAgICAgICAoIkJhc2xpbmUgSklUIGdldF9ieV9pZCBhcnJheSBsZW5ndGggc3R1YiBm
b3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgbV9jb2RlQmxvY2ss
IHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKLSAgICAgICAgICAgICBzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygp
KSk7CisgICAgICAgICgiQmFzbGluZSBKSVQgZ2V0X2J5X2lkIGFycmF5IGxlbmd0aCBzdHViIGZv
ciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgIHRvQ1N0cmluZygqbV9jb2RlQmxv
Y2spLmRhdGEoKSwKKyAgICAgICAgICAgIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9m
ZnNldCgKKyAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0
UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAKICAgICAvLyBGaW5hbGx5IHBhdGNoIHRo
ZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhlcmUgaW5z
dGVhZC4KICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBMb2NhdGlvbiA9IHN0dWJJbmZvLT5ob3RQ
YXRoQmVnaW4uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5zdHJ1
Y3R1cmVDaGVjayk7CkBAIC04ODMsOSArODg1LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZFByb3RvKFN0cgogICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0
dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAgcGF0Y2hCdWZm
ZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgcHJvdG8gc3R1YiBmb3Ig
Q29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1fY29kZUJsb2Nr
LCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAg
IHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKSwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBwcm90byBzdHVi
IGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKm1f
Y29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgK
KyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJl
c3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAgICAgICAqbV9nbG9iYWxEYXRhLAogICAg
ICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgIG5lZWRzU3R1Ykxp
bmspOwpAQCAtOTQ4LDkgKzk1MCw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRT
ZWxmTGlzdCgKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJDb2RlID0gY3JlYXRlSklU
U3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRjaEJ1
ZmZlciwKLSAgICAgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBsaXN0IHN0dWIgZm9y
IENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgICAgICBtX2NvZGVCbG9j
aywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgICAg
ICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRk
cmVzcygpKSksCisgICAgICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgbGlzdCBzdHVi
IGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKm1f
Y29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgK
KyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJl
c3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAgICAgICAqbV9nbG9iYWxEYXRhLAogICAg
ICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgIG5lZWRzU3R1Ykxp
bmspOwpAQCAtMTAyMiw5ICsxMDI0LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJ
ZFByb3RvTGlzdAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1YkNvZGUgPSBjcmVhdGVK
SVRTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBhdGNo
QnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBKSVQgZ2V0X2J5X2lkIHByb3RvIGxpc3Qg
c3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1f
Y29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCi0gICAgICAg
ICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKSwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBw
cm90byBsaXN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAg
IHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5s
YWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxp
bmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAgICAgICAgICptX2ds
b2JhbERhdGEsCiAgICAgICAgIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAg
ICAgbmVlZHNTdHViTGluayk7CkBAIC0xMDk5LDkgKzExMDEsOSBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVHZXRCeUlkQ2hhaW5MaXN0CiAgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHVi
Um91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAog
ICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRf
YnlfaWQgY2hhaW4gbGlzdCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIs
Ci0gICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxB
dE9mZnNldCgKLSAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0
LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAorICAgICAgICAgICAgKCJCYXNlbGlu
ZSBKSVQgZ2V0X2J5X2lkIGNoYWluIGxpc3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIs
CisgICAgICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5m
by0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KSwKICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLAogICAgICAgICBuZWVkc1N0dWJMaW5rKTsKQEAgLTExNzQsOSArMTE3Niw5IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHIKICAgICBSZWZQdHI8SklU
U3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgICAg
IEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICgi
QmFzZWxpbmUgSklUIGdldF9ieV9pZCBjaGFpbiBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVy
biBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRo
QmVnaW4ubGFiZWxBdE9mZnNldCgKLSAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAorICAgICAgICAg
ICAgKCJCYXNlbGluZSBKSVQgZ2V0X2J5X2lkIGNoYWluIHN0dWIgZm9yICVzLCByZXR1cm4gcG9p
bnQgJXAiLAorICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwg
c3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgICAgICAg
ICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRk
cmVzcygpKSksCiAgICAgICAgICptX2dsb2JhbERhdGEsCiAgICAgICAgIG1fY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgbmVlZHNTdHViTGluayk7CkBAIC0xNDI4LDcgKzE0
MzAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeVZhbChCeVZhbEluCiAgICAgCiAg
ICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAg
ICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV92YWwgc3R1YiBmb3Ig
Q29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLCBtX2NvZGVCbG9jaywgcmV0dXJuQWRkcmVz
cy52YWx1ZSgpKSk7CisgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X3ZhbCBzdHViIGZvciAlcywg
cmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5B
ZGRyZXNzLnZhbHVlKCkpKTsKICAgICAKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIo
bV9jb2RlQmxvY2spOwogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGJ5VmFsSW5mby0+YmFkVHlw
ZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5j
b2RlKCkpKTsKQEAgLTE0OTgsNyArMTUwMCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1
dEJ5VmFsKEJ5VmFsSW4KICAgICAKICAgICBieVZhbEluZm8tPnN0dWJSb3V0aW5lID0gRklOQUxJ
WkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICgiQmFzZWxp
bmUgcHV0X2J5X3ZhbCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsIG1f
Y29kZUJsb2NrLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpKTsKKyAgICAgICAgKCJCYXNlbGluZSBw
dXRfYnlfdmFsIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29k
ZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudmFsdWUoKSkpOwogICAgIAogICAgIFJlcGF0
Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihtX2NvZGVCbG9jayk7CiAgICAgcmVwYXRjaEJ1ZmZlci5y
ZWxpbmsoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWwoYnlWYWxJbmZv
LT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA4LDEyICsxODA4LDE2
IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogICAgIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKIAogI2lmIEVOQUJMRShK
SVRfVkVSQk9TRV9PU1IpCi0gICAgZGF0YUxvZ0YoIiVwOiBFbnRlcmVkIG9wdGltaXplIHdpdGgg
Ynl0ZWNvZGVJbmRleCA9ICV1LCBleGVjdXRlQ291bnRlciA9ICVzLCByZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldSwgZXhpdENvdW50
ZXIgPSAiLCBjb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNv
dW50ZXIoKS5zdGF0dXMoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigp
LCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBkYXRhTG9nKAor
ICAgICAgICAqY29kZUJsb2NrLCAiOiBFbnRlcmVkIG9wdGltaXplIHdpdGggYnl0ZWNvZGVJbmRl
eCA9ICIsIGJ5dGVjb2RlSW5kZXgsCisgICAgICAgICIsIGV4ZWN1dGVDb3VudGVyID0gIiwgY29k
ZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLAorICAgICAgICAiLCBvcHRpbWl6YXRpb25EZWxh
eUNvdW50ZXIgPSAiLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksCisg
ICAgICAgICIsIGV4aXRDb3VudGVyID0gIik7CiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1p
emVkUmVwbGFjZW1lbnQoKSkKLSAgICAgICAgZGF0YUxvZ0YoIiV1IiwgY29kZUJsb2NrLT5yZXBs
YWNlbWVudCgpLT5vc3JFeGl0Q291bnRlcigpKTsKKyAgICAgICAgZGF0YUxvZyhjb2RlQmxvY2st
PnJlcGxhY2VtZW50KCktPm9zckV4aXRDb3VudGVyKCkpOwogICAgIGVsc2UKLSAgICAgICAgZGF0
YUxvZ0YoIk4vQSIpOwotICAgIGRhdGFMb2dGKCJcbiIpOworICAgICAgICBkYXRhTG9nKCJOL0Ei
KTsKKyAgICBkYXRhTG9nKCJcbiIpOwogI2VuZGlmCiAKICAgICBpZiAoIWNvZGVCbG9jay0+Y2hl
Y2tJZk9wdGltaXphdGlvblRocmVzaG9sZFJlYWNoZWQoKSkgewpAQCAtMTgyMyw3ICsxODI3LDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAKICAgICBpZiAoY29kZUJs
b2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NF
X09TUikKLSAgICAgICAgZGF0YUxvZ0YoIkNvbnNpZGVyaW5nIE9TUiBpbnRvICVwKCVwKS5cbiIs
IGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKKyAgICAgICAgZGF0YUxvZ0Yo
IkNvbnNpZGVyaW5nIE9TUiAiLCAqY29kZUJsb2NrLCAiIC0+ICIsICpjb2RlQmxvY2stPnJlcGxh
Y2VtZW50KCksICIuXG4iKTsKICNlbmRpZgogICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIG9wdGlt
aXplZCByZXBsYWNlbWVudCwgdGhlbiBpdCBtdXN0IGJlIHRoZSBjYXNlIHRoYXQgd2UgZW50ZXJl
ZAogICAgICAgICAvLyBjdGlfb3B0aW1pemUgZnJvbSBhIGxvb3AuIFRoYXQncyBiZWNhdXNlIGlz
IHRoZXJlJ3MgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50LApAQCAtMTg0MCw3ICsxODQ0LDcgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAgICAgICAgIC8vIGFkZGl0aW9u
YWwgY2hlY2tpbmcgYW55d2F5LCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiByZWNvbXBpbGF0aW9u
IHRocmFzaGluZy4KICAgICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c2hvdWxk
UmVvcHRpbWl6ZUZyb21Mb29wTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQot
ICAgICAgICAgICAgZGF0YUxvZ0YoIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXAp
IChpbiBsb29wKS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKKyAg
ICAgICAgICAgIGRhdGFMb2dGKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICIsICpjb2Rl
QmxvY2ssICIoIiwgKmNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgIikgKGluIGxvb3ApLlxuIik7
CiAjZW5kaWYKICAgICAgICAgICAgIGNvZGVCbG9jay0+cmVvcHRpbWl6ZSgpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTg0OCw3ICsxODUyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9p
ZCwgb3B0aW1pemUpCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2stPnNob3Vs
ZE9wdGltaXplTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICAg
ICAgZGF0YUxvZ0YoIkRlbGF5aW5nIG9wdGltaXphdGlvbiBmb3IgJXAgKGluIGxvb3ApIGJlY2F1
c2Ugb2YgaW5zdWZmaWNpZW50IHByb2ZpbGluZy5cbiIsIGNvZGVCbG9jayk7CisgICAgICAgICAg
ICBkYXRhTG9nRigiRGVsYXlpbmcgb3B0aW1pemF0aW9uIGZvciAiLCAqY29kZUJsb2NrLCAiIChp
biBsb29wKSBiZWNhdXNlIG9mIGluc3VmZmljaWVudCBwcm9maWxpbmcuXG4iKTsKICNlbmRpZgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xODY0LDcgKzE4NjgsNyBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKICAgICAgICAgCiAgICAgICAgIGlmIChj
b2RlQmxvY2stPnJlcGxhY2VtZW50KCkgPT0gY29kZUJsb2NrKSB7CiAjaWYgRU5BQkxFKEpJVF9W
RVJCT1NFX09TUikKLSAgICAgICAgICAgIGRhdGFMb2dGKCJPcHRpbWl6aW5nICVwIGZhaWxlZC5c
biIsIGNvZGVCbG9jayk7CisgICAgICAgICAgICBkYXRhTG9nRigiT3B0aW1pemluZyAiLCAqY29k
ZUJsb2NrLCAiIGZhaWxlZC5cbiIpOwogI2VuZGlmCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CkBAIC0xODc4LDEyICsxODgyLDEyIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGlt
aXplKQogICAgIAogICAgIGlmICh2b2lkKiBhZGRyZXNzID0gREZHOjpwcmVwYXJlT1NSRW50cnko
Y2FsbEZyYW1lLCBvcHRpbWl6ZWRDb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKSB7CiAgICAgICAg
IGlmIChPcHRpb25zOjpzaG93REZHRGlzYXNzZW1ibHkoKSkgewotICAgICAgICAgICAgZGF0YUxv
Z0YoCi0gICAgICAgICAgICAgICAgIlBlcmZvcm1pbmcgT1NSIGZyb20gY29kZSBibG9jayAlcCB0
byBjb2RlIGJsb2NrICVwLCBhZGRyZXNzICVwIHRvICVwLlxuIiwKLSAgICAgICAgICAgICAgICBj
b2RlQmxvY2ssIG9wdGltaXplZENvZGVCbG9jaywgKFNUVUJfUkVUVVJOX0FERFJFU1MpLnZhbHVl
KCksIGFkZHJlc3MpOworICAgICAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICAgICAiUGVy
Zm9ybWluZyBPU1IgIiwgKmNvZGVCbG9jaywgIiAtPiAiLCAqb3B0aW1pemVkQ29kZUJsb2NrLCAi
LCBhZGRyZXNzICIsCisgICAgICAgICAgICAgICAgUmF3UG9pbnRlcigoU1RVQl9SRVRVUk5fQURE
UkVTUykudmFsdWUoKSksICIgLT4gIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIi5cbiIpOwogICAg
ICAgICB9CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgZGF0YUxvZ0YoIk9w
dGltaXppbmcgJXAgc3VjY2VlZGVkLCBwZXJmb3JtaW5nIE9TUiBhZnRlciBhIGRlbGF5IG9mICV1
LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsK
KyAgICAgICAgZGF0YUxvZ0YoIk9wdGltaXppbmcgIiwgKmNvZGVCbG9jaywgIiBzdWNjZWVkZWQs
IHBlcmZvcm1pbmcgT1NSIGFmdGVyIGEgZGVsYXkgb2YgIiwgY29kZUJsb2NrLT5vcHRpbWl6YXRp
b25EZWxheUNvdW50ZXIoKSwgIi5cbiIpOwogI2VuZGlmCiAKICAgICAgICAgY29kZUJsb2NrLT5v
cHRpbWl6ZVNvb24oKTsKQEAgLTE4OTIsNyArMTg5Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQsIG9wdGltaXplKQogICAgIH0KICAgICAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQotICAgIGRhdGFMb2dGKCJPcHRpbWl6aW5nICVwIHN1Y2NlZWRlZCwgT1NSIGZhaWxlZCwgYWZ0
ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25E
ZWxheUNvdW50ZXIoKSk7CisgICAgZGF0YUxvZ0YoIk9wdGltaXppbmcgIiwgKmNvZGVCbG9jaywg
IiBzdWNjZWVkZWQsIE9TUiBmYWlsZWQsIGFmdGVyIGEgZGVsYXkgb2YgIiwgY29kZUJsb2NrLT5v
cHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSwgIi5cbiIpOwogI2VuZGlmCiAKICAgICAvLyBDb3Vu
dCB0aGUgT1NSIGZhaWx1cmUgYXMgYSBzcGVjdWxhdGlvbiBmYWlsdXJlLiBJZiB0aGlzIGhhcHBl
bnMgYSBsb3QsIHRoZW4KQEAgLTE5MDAsNyArMTkwNCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQsIG9wdGltaXplKQogICAgIG9wdGltaXplZENvZGVCbG9jay0+Y291bnRPU1JFeGl0KCk7
CiAgICAgCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBkYXRhTG9nRigiRW5jb3Vu
dGVyZWQgT1NSIGZhaWx1cmUgaW50byAlcCglcCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+
cmVwbGFjZW1lbnQoKSk7CisgICAgZGF0YUxvZ0YoIkVuY291bnRlcmVkIE9TUiBmYWlsdXJlICIs
ICpjb2RlQmxvY2ssICIgLT4gIiwgKmNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgIi5cbiIpOwog
I2VuZGlmCiAKICAgICAvLyBXZSBhcmUgYSBsb3QgbW9yZSBjb25zZXJ2YXRpdmUgYWJvdXQgdHJp
Z2dlcmluZyByZW9wdGltaXphdGlvbiBhZnRlciBPU1IgZmFpbHVyZSB0aGFuCkBAIC0xOTEzLDcg
KzE5MTcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKICAgICAvLyBy
ZW9wdGltaXphdGlvbiB0cmlnZ2VyLgogICAgIGlmIChvcHRpbWl6ZWRDb2RlQmxvY2stPnNob3Vs
ZFJlb3B0aW1pemVOb3coKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAg
IGRhdGFMb2dGKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVwKSAoYWZ0ZXIgT1NS
IGZhaWwpLlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOworICAgICAg
ICBkYXRhTG9nRigiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAiLCAqY29kZUJsb2NrLCAi
IC0+ICIsICpjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksICIgKGFmdGVyIE9TUiBmYWlsKS5cbiIp
OwogI2VuZGlmCiAgICAgICAgIGNvZGVCbG9jay0+cmVvcHRpbWl6ZSgpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRp
b25LaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkNvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKK3sKKyAgICBpZiAoa2luZCA9PSBKU0M6OkNvZGVGb3JDYWxsKSB7
CisgICAgICAgIG91dC5wcmludCgiQ2FsbCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIEFTU0VSVChraW5kID09IEpTQzo6Q29kZUZvckNvbnN0cnVjdCk7CisgICAgb3V0LnBy
aW50KCJDb25zdHJ1Y3QiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKworCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBD
b2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogCitpbmxpbmUgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBzcGVjaWFsaXphdGlvbkZyb21Jc0NhbGwoYm9vbCBpc0NhbGwpCit7CisgICAgcmV0
dXJuIGlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdDsKK30KKworaW5saW5l
IENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25Gcm9tSXNDb25zdHJ1Y3QoYm9v
bCBpc0NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gaXNDb25zdHJ1Y3QgPyBDb2RlRm9yQ29uc3Ry
dWN0IDogQ29kZUZvckNhbGw7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCituYW1lc3BhY2Ug
V1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mLCBKU0M6OkNvZGVTcGVjaWFsaXphdGlvbktpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYK
KwogI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTM2MDk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2NSw0ICs2NjUsMjYgQEAgU3RyaW5nIEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFy
YW1TdHJpbmcoKQogICAgIHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyYW1TdHJpbmco
KTsKIH0KIAorQ29kZUJsb2NrSGFzaCBFeGVjdXRhYmxlQmFzZTo6aGFzaEZvcihDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0Cit7CisgICAgaWYgKHRoaXMtPmNsYXNzSW5mbygpID09
ICZOYXRpdmVFeGVjdXRhYmxlOjpzX2luZm8pCisgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3Qg
TmF0aXZlRXhlY3V0YWJsZSo+KHRoaXMpLT5oYXNoRm9yKGtpbmQpOworICAgIAorICAgIHJldHVy
biBqc0Nhc3Q8Y29uc3QgU2NyaXB0RXhlY3V0YWJsZSo+KHRoaXMpLT5oYXNoRm9yKGtpbmQpOwor
fQorCitDb2RlQmxvY2tIYXNoIE5hdGl2ZUV4ZWN1dGFibGU6Omhhc2hGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKSBjb25zdAoreworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQor
ICAgICAgICByZXR1cm4gQ29kZUJsb2NrSGFzaChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0d2lz
ZV9jYXN0PHNpemVfdD4obV9mdW5jdGlvbikpKTsKKyAgICAKKyAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICByZXR1cm4gQ29kZUJsb2NrSGFzaChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oYml0d2lzZV9jYXN0PHNpemVfdD4obV9jb25zdHJ1Y3RvcikpKTsKK30KKworQ29k
ZUJsb2NrSGFzaCBTY3JpcHRFeGVjdXRhYmxlOjpoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29kZUJsb2NrSGFzaChzb3VyY2UoKSwga2lu
ZCk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBF
eGVjdXRhYmxlX2gKIAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZUJsb2Nr
SGFzaC5oIgogI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJI
YW5kbGVySW5mby5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTg2LDYgKzg3LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3Ry
dWN0dXJlID0gdHJ1ZTsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICNl
bmRpZgorICAgICAgICAKKyAgICAgICAgQ29kZUJsb2NrSGFzaCBoYXNoRm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkV4ZWN1dGFibGUo
KQogICAgICAgICB7CkBAIC0yOTUsNiArMjk4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAjZW5kaWYKIAorICAgICAgICBDb2RlQmxv
Y2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7CisKICAgICAgICAg
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CiAgICAgICAg
IE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gbV9jb25zdHJ1Y3RvcjsgfQog
CkBAIC0zNTIsOCArMzU3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAjZW5kaWYKKyAgICAgICAgCisg
ICAgICAgIENvZGVCbG9ja0hhc2ggaGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25z
dDsKIAotICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJj
ZTsgfQorICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZTsgfQogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlLnByb3ZpZGVySUQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVyKCktPnVybCgpOyB9CiAgICAgICAgIGlu
dCBsaW5lTm8oKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZTsgfQpJbmRleDogU291cmNlL1dU
Ri9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEzNjExNSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTItMTEtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJdCBzaG91bGQgYmUgZWFzeSB0byBmaW5kIGNvZGUgYmxvY2tzIGluIGRlYnVnIGR1
bXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM2
MjMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBDaGFu
Z2VkIFJhd1BvaW50ZXIgdG8gYWNjZXB0IGJvdGggY29uc3Qgdm9pZCogYW5kIHZvaWQqLCBhbmQg
dXNlIHRoZSBmb3JtZXIgaW50ZXJuYWxseS4KKyAgICAgICAgCisgICAgICAgIENsZWFuZWQgdXAg
U0hBMSBzbyB0aGF0IHRoZSBmdW5jdGlvbmFsaXR5IGFscmVhZHkgdXNlZCBpbnRlcm5hbGx5IGZv
ciBzZWxmLXRlc3RpbmcgaXMKKyAgICAgICAgYXZhaWxhYmxlIHZpYSB0aGUgQVBJLiBUaGlzIGlu
Y2x1ZGVzIGFkZEJ5dGVzKENTdHJpbmcpIGFuZCBjb21wdXRpbmcgaGV4IGRpZ2VzdHMuCisKKyAg
ICAgICAgKiB3dGYvUmF3UG9pbnRlci5oOgorICAgICAgICAoV1RGOjpSYXdQb2ludGVyOjpSYXdQ
b2ludGVyKToKKyAgICAgICAgKFJhd1BvaW50ZXIpOgorICAgICAgICAoV1RGOjpSYXdQb2ludGVy
Ojp2YWx1ZSk6CisgICAgICAgICogd3RmL1NIQTEuY3BwOgorICAgICAgICAoV1RGOjpleHBlY3RT
SEExKToKKyAgICAgICAgKFdURjo6U0hBMTo6aGV4RGlnZXN0KToKKyAgICAgICAgKFdURjo6U0hB
MTo6Y29tcHV0ZUhleERpZ2VzdCk6CisgICAgICAgICogd3RmL1NIQTEuaDoKKyAgICAgICAgKFdU
Rjo6U0hBMTo6YWRkQnl0ZXMpOgorCiAyMDEyLTExLTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgZHVtcGluZyBzaG91bGQgbm90IHVz
ZSB0aGUgc3RhdGljIGNoYXIgYnVmZmVyW3RoaW5neV0gaWRpb20KSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1Jhd1BvaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVy
LmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9XVEYvd3RmL1Jhd1BvaW50ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsMTAgKzQwLDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAg
IAotICAgIHZvaWQqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGV4cGxp
Y2l0IFJhd1BvaW50ZXIoY29uc3Qgdm9pZCogdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1
ZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGNvbnN0IHZvaWQqIHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkKiBtX3ZhbHVlOworICAg
IGNvbnN0IHZvaWQqIG1fdmFsdWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL1NIQTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NIQTEu
Y3BwCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9TSEExLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDkgQEAKICNpbmNsdWRlICJTSEExLmgiCiAKICNpbmNsdWRl
ICJBc3NlcnRpb25zLmgiCi0jaWZuZGVmIE5ERUJVRworCiAjaW5jbHVkZSAiU3RyaW5nRXh0cmFz
LmgiCiAjaW5jbHVkZSAidGV4dC9DU3RyaW5nLmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7
CiAKQEAgLTUyLDE1ICs1MSw4IEBAIHN0YXRpYyB2b2lkIGV4cGVjdFNIQTEoQ1N0cmluZyBpbnB1
dCwgaW4KIHsKICAgICBTSEExIHNoYTE7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXQ7
ICsraSkKLSAgICAgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihpbnB1dC5kYXRhKCkpLCBpbnB1dC5sZW5ndGgoKSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Qs
IDIwPiBkaWdlc3Q7Ci0gICAgc2hhMS5jb21wdXRlSGFzaChkaWdlc3QpOwotICAgIGNoYXIqIGJ1
ZmZlciA9IDA7Ci0gICAgQ1N0cmluZyBhY3R1YWwgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVk
KDQwLCBidWZmZXIpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjA7ICsraSkgewotICAg
ICAgICBzbnByaW50ZihidWZmZXIsIDMsICIlMDJYIiwgZGlnZXN0LmF0KGkpKTsKLSAgICAgICAg
YnVmZmVyICs9IDI7Ci0gICAgfQorICAgICAgICBzaGExLmFkZEJ5dGVzKGlucHV0KTsKKyAgICBD
U3RyaW5nIGFjdHVhbCA9IHNoYTEuY29tcHV0ZUhleERpZ2VzdCgpOwogICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoYWN0dWFsID09IGV4cGVjdGVkLCAiaW5wdXQ6ICVzLCByZXBlYXQ6ICVkLCBhY3R1
YWw6ICVzLCBleHBlY3RlZDogJXMiLCBpbnB1dC5kYXRhKCksIHJlcGVhdCwgYWN0dWFsLmRhdGEo
KSwgZXhwZWN0ZWQuZGF0YSgpKTsKIH0KIApAQCAtMTQ0LDYgKzEzNiwyNSBAQCB2b2lkIFNIQTE6
OmNvbXB1dGVIYXNoKFZlY3Rvcjx1aW50OF90LCAyCiAgICAgcmVzZXQoKTsKIH0KIAorQ1N0cmlu
ZyBTSEExOjpoZXhEaWdlc3QoY29uc3QgVmVjdG9yPHVpbnQ4X3QsIDIwPiYgZGlnZXN0KQorewor
ICAgIGNoYXIqIHN0YXJ0ID0gMDsKKyAgICBDU3RyaW5nIHJlc3VsdCA9IENTdHJpbmc6Om5ld1Vu
aW5pdGlhbGl6ZWQoNDAsIHN0YXJ0KTsKKyAgICBjaGFyKiBidWZmZXIgPSBzdGFydDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDIwOyArK2kpIHsKKyAgICAgICAgc25wcmludGYoYnVmZmVy
LCAzLCAiJTAyWCIsIGRpZ2VzdC5hdChpKSk7CisgICAgICAgIGJ1ZmZlciArPSAyOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitDU3RyaW5nIFNIQTE6OmNvbXB1dGVIZXhEaWdlc3Qo
KQoreworICAgIFZlY3Rvcjx1aW50OF90LCAyMD4gZGlnZXN0OworICAgIGNvbXB1dGVIYXNoKGRp
Z2VzdCk7CisgICAgcmV0dXJuIGhleERpZ2VzdChkaWdlc3QpOworfQorCiB2b2lkIFNIQTE6OmZp
bmFsaXplKCkKIHsKICAgICBBU1NFUlQobV9jdXJzb3IgPCA2NCk7CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TSEExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU0hBMS5oCShyZXZpc2lv
biAxMzYwOTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9TSEExLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNkZWZpbmUgV1RGX1NIQTFfaAogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAg
LTQzLDExICs0NCwyNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhZGRCeXRlcyhpbnB1dC5k
YXRhKCksIGlucHV0LnNpemUoKSk7CiAgICAgfQorICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgQ1N0
cmluZyYgaW5wdXQpCisgICAgeworICAgICAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBpbnB1dC5k
YXRhKCk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjcmVhdG9yIG9mIHRoZSBDU3Ry
aW5nIGRpZG4ndCBtYWtlIHRoZSBtaXN0YWtlCisgICAgICAgIC8vIG9mIGZvcmNpbmcgbGVuZ3Ro
KCkgdG8gYmUgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIGNyZWF0ZSB0aGUKKyAgICAg
ICAgLy8gc3RyaW5nLCBwcmlvciB0byBpbnNlcnRpbmcgdGhlIG51bGwgdGVybWluYXRvciBlYXJs
aWVyIGluIHRoZQorICAgICAgICAvLyBzZXF1ZW5jZS4KKyAgICAgICAgQVNTRVJUKGlucHV0Lmxl
bmd0aCgpID09IHN0cmxlbihzdHJpbmcpKTsKKyAgICAgICAgYWRkQnl0ZXMocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nKSwgaW5wdXQubGVuZ3RoKCkpOworICAgIH0KICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRCeXRlcyhjb25zdCB1aW50OF90KiBpbnB1dCwg
c2l6ZV90IGxlbmd0aCk7CiAKICAgICAvLyBjb21wdXRlSGFzaCBoYXMgYSBzaWRlIGVmZmVjdCBv
ZiByZXNldHRpbmcgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3QuCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgY29tcHV0ZUhhc2goVmVjdG9yPHVpbnQ4X3QsIDIwPiYpOwotCisgICAgCisgICAg
Ly8gR2V0IGEgaGV4IGhhc2ggZnJvbSB0aGUgZGlnZXN0LiBQYXNzIGEgbGltaXQgbGVzcyB0aGFu
IDQwIGlmIHlvdSB3YW50IGEgc2hvcnRlciBkaWdlc3QuCisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBDU3RyaW5nIGhleERpZ2VzdChjb25zdCBWZWN0b3I8dWludDhfdCwgMjA+Jik7Cisg
ICAgCisgICAgLy8gQ29tcHV0ZSB0aGUgaGV4IGRpZ2VzdCBkaXJlY3RseS4gUGFzcyBhIGxpbWl0
IGxlc3MgdGhhbiA0MCBpZiB5b3Ugd2FudCBhIHNob3J0ZXIgZGlnZXN0LgorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBDU3RyaW5nIGNvbXB1dGVIZXhEaWdlc3QoKTsKKyAgICAKIHByaXZhdGU6CiAg
ICAgdm9pZCBmaW5hbGl6ZSgpOwogICAgIHZvaWQgcHJvY2Vzc0Jsb2NrKCk7Cg==
</data>
<flag name="commit-queue"
          id="192733"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176877</attachid>
            <date>2012-11-29 18:17:52 -0800</date>
            <delta_ts>2012-11-29 18:17:52 -0800</delta_ts>
            <desc>try again</desc>
            <filename>codeblockhash.patch</filename>
            <type>text/plain</type>
            <size>104471</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBA
QAorMjAxMi0xMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEl0IHNob3VsZCBiZSBlYXN5IHRvIGZpbmQgY29kZSBibG9ja3MgaW4gZGVidWcgZHVtcHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzYyMworCisg
ICAgICAgIFJldmlld2VkIGJ5IEdvZWZmcmV5IEdhcmVuLgorCisgICAgICAgIFRoaXMgZ2l2ZXMg
Q29kZUJsb2NrIGEgcmVsYXRpdmVseSBzdHJvbmcsIGJ1dCBhbHNvIHJlbGF0aXZlbHkgY29tcGFj
dCwgaGFzaC4gV2UgY29tcHV0ZQorICAgICAgICBpdCBsYXppbHkgc28gdGhhdCBpdCBvbmx5IGlt
cGFjdHMgcnVuLXRpbWUgd2hlbiBkZWJ1ZyBzdXBwb3J0IGlzIGVuYWJsZWQuIFdlIHN0cmluZ2lm
eQorICAgICAgICBpdCBzbWFydGx5IHNvIHRoYXQgaXQncyBzaG9ydCBhbmQgZWFzeSB0byB0eXBl
LiBXZSBiYXNlIGl0IG9uIHRoZSBzb3VyY2UgY29kZSBzbyB0aGF0CisgICAgICAgIHRoZSBvcHRp
bWl6YXRpb24gbGV2ZWwgaXMgaXJyZWxldmFudC4gQW5kLCB3ZSB1c2UgU0hBMSBzaW5jZSBpdCdz
IGFscmVhZHkgaW4gb3VyIGNvZGUKKyAgICAgICAgYmFzZS4gTm93LCB3aGVuIGEgcGllY2Ugb2Yg
Y29kZSB3YW50cyB0byBwcmludCBzb21lIGRlYnVnZ2luZyB0byBzYXkgdGhhdCBpdCdzIG9wZXJh
dGluZworICAgICAgICBvbiBzb21lIGNvZGUgYmxvY2ssIGl0IGNhbiB1c2UgdGhpcyBDb2RlQmxv
Y2tIYXNoIGluc3RlYWQgb2YgbWVtb3J5IGFkZHJlc3Nlcy4KKworICAgICAgICBUaGlzIGFsc28g
dGFrZXMgQ29kZUJsb2NrIGRlYnVnZ2luZyB0byB1c2UgdGhlIG5ldyB3b3JsZCBvZiBwcmludCgp
IGFuZCBkYXRhTG9nKCkuIEluCisgICAgICAgIHBhcnRpY3VsYXIsIENvZGVCbG9jazo6ZHVtcCgp
IGNvcnJlc3BvbmRzIHRvIHRoZSB0aGluZyB5b3Ugd2FudCBwcmludGVkIGlmIHlvdSBkbzoKKwor
ICAgICAgICBkYXRhTG9nKCJJIGhlYXJ0ICIsICpteUNvZGVCbG9jayk7CisKKyAgICAgICAgUHJv
YmFibHksIHlvdSB3YW50IHRvIGp1c3QgcHJpbnQgc29tZSBpZGVudGlmeWluZyBpbmZvcm1hdGlv
biBhdCB0aGlzIHBvaW50IHJhdGhlciB0aGFuCisgICAgICAgIHRoZSBmdWxsIGJ5dGVjb2RlIGR1
bXAuIFNvLCB0aGUgZXhpc3RpbmcgQ29kZUJsb2NrOjpkdW1wKCkgaGFzIGJlZW4gcmVuYW1lZCB0
bworICAgICAgICBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpLCBhbmQgQ29kZUJsb2NrOjpkdW1w
KCkgbm93IHByaW50cyB0aGUgQ29kZUJsb2NrSGFzaCBwbHVzIGp1c3QKKyAgICAgICAgYSBmZXcg
bGl0dGxlIHRpZGJpdHMuCisgICAgICAgIAorICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBD
b2RlQmxvY2s6OmR1bXAoKSBvdXRwdXQ6CisgICAgICAgIAorICAgICAgICBFa0lMenI6WzB4MTAz
ODgzYTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbF0KKyAgICAgICAgCisgICAgICAgIEVrSUx6ciBp
cyB0aGUgQ29kZUJsb2NrSGFzaC4gMHgxMDM4ODNhMDAgaXMgdGhlIENvZGVCbG9jaydzIGFkZHJl
c3MgaW4gbWVtb3J5LiBUaGUgb3RoZXIKKyAgICAgICAgcGFydCBpcyBzZWxmLWV4cGxhbmF0b3J5
LgorCisgICAgICAgIEZpbmFsbHksIHRoaXMgbmV3IG5vdGlvbiBvZiBDb2RlQmxvY2tIYXNoIGlz
IGF2YWlsYWJsZSBmb3Igb3RoZXIgcHVycG9zZXMgbGlrZSBiaXNlY3RpbmcKKyAgICAgICAgYnJl
YWthZ2UuIEFzIHN1Y2ggQ29kZUJsb2NrSGFzaCBoYXMgYWxsIG9mIHRoZSBjb21wYXJpc29uIG9w
ZXJhdG9yIG92ZXJsb2Fkcy4gV2hlbgorICAgICAgICBiaXNlY3RpbmcgaW4gREZHRHJpdmVyLmNw
cCwgeW91IGNhbiBub3cgc2F5IHRoaW5ncyBsaWtlOgorICAgICAgICAKKyAgICAgICAgaWYgKGNv
ZGVCbG9jay0+aGFzaCgpIDwgQ29kZUJsb2NrSGFzaCgiQ0FBQUFBIikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBBbmQgeWVzLCBDQUFBQUEgaXMgbmVhciB0
aGUgbWVkaWFuIGhhc2gsIGFuZCB0aGUgbGFyZ2VzdCBvbmUgaXMgc21hbGxlciB0aGFuIEU5OTk5
OS4gU3VjaAorICAgICAgICBpcyBsaWZlIHdoZW4geW91IHVzZSBiYXNlIDYyIHRvIGVuY29kZSBh
IDMyLWJpdCBudW1iZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAoQ2FsbExpbmtJbmZvKToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzcGVjaWFsaXphdGlvbktpbmQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFz
aCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBBc3N1bWlu
Z0pJVFR5cGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVzZXRTdHViSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnJlb3B0aW1pemUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZHVtcFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnNwZWNpYWxpemF0aW9uS2luZCk6CisgICAgICAgIChDb2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldEpJVFR5cGUpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6OkNvZGVCbG9ja0hhc2gpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2tIYXNoOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmg6
IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKENvZGVCbG9ja0hhc2gpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2tIYXNoOjpDb2RlQmxvY2tIYXNoKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrSGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tIYXNoOjpvcGVyYXRvciE9KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrSGFzaDo6b3BlcmF0b3I8KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
SGFzaDo6b3BlcmF0b3I+KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrSGFzaDo6b3BlcmF0b3I8
PSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6Om9wZXJhdG9yPj0pOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9ja1dpdGhKSVRUeXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKENvZGVCbG9ja1dpdGhKSVRUeXBlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
V2l0aEpJVFR5cGU6OkNvZGVCbG9ja1dpdGhKSVRUeXBlKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrV2l0aEpJVFR5cGU6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmlubGlu
ZURlcHRoRm9yQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6aW5saW5lRGVw
dGgpOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjppbmxpbmVTdGFjayk6CisgICAgICAgIChK
U0M6OklubGluZUNhbGxGcmFtZTo6aGFzaCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oOgorICAgICAgICAoSW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW5saW5lQ2Fs
bEZyYW1lOjpzcGVjaWFsaXphdGlvbktpbmQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlVHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdU
Rjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZVR5cGUuaDoKKyAgICAg
ICAgKFdURik6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHA6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGlvbkNvdW50ZXI6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0V4
ZWN1dGlvbkNvdW50ZXIuaDoKKyAgICAgICAgKEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXBDb2RlT3JpZ2lu
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIpOgorICAgICAgICAoSlND
OjpERkc6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5QnVpbGRHZXRC
eUlETGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdFB1dFJlcGxhY2VTdHViKToKKyAgICAg
ICAgKEpTQzo6REZHOjplbWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjpERkc6
OmRmZ0xpbmtDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZHVtcENhbGxGcmFtZSk6CisgICAgICAg
ICogaml0L0pJVENvZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6
OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6
OkpJVENvZGU6OmppdFR5cGUpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiBqaXQvSklURGlz
YXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpkdW1wKToKKyAg
ICAgICAgKEpTQzo6SklURGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb25zKToKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFNlbGZMaXN0KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90b0xpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWlu
TGlzdCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5
SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFBy
b3RvKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcDogQWRkZWQuCisgICAgICAg
IChXVEYpOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1l
L0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDoKKyAgICAgICAgKEpTQzo6c3BlY2lhbGl6YXRpb25G
cm9tSXNDYWxsKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnNwZWNpYWxpemF0aW9u
RnJvbUlzQ29uc3RydWN0KToKKyAgICAgICAgKFdURik6CisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6Omhhc2hGb3IpOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6aGFzaEZvcik6Cisg
ICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Omhhc2hGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoRXhlY3V0YWJsZUJhc2UpOgorICAgICAgICAoTmF0
aXZlRXhlY3V0YWJsZSk6CisgICAgICAgIChTY3JpcHRFeGVjdXRhYmxlKToKKyAgICAgICAgKEpT
Qzo6U2NyaXB0RXhlY3V0YWJsZTo6c291cmNlKToKKwogMjAxMi0xMS0yOSAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZSBXaW5kb3dzIGJ1
aWxkIGZpeCBhZnRlciByMTM2MDg2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTM2MDk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIFNFVChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHAKKyAgICBieXRlY29k
ZS9Db2RlQmxvY2tIYXNoLmNwcAorICAgIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCisgICAgYnl0
ZWNvZGUvQ29kZVR5cGUuY3BwCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCiAgICAg
Ynl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKICAgICBieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcApAQCAtMTUwLDYgKzE1Myw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
aml0L0pJVEFyaXRobWV0aWMuY3BwCiAgICAgaml0L0pJVENhbGwzMl82NC5jcHAKICAgICBqaXQv
SklUQ2FsbC5jcHAKKyAgICBqaXQvSklUQ29kZS5jcHAKICAgICBqaXQvSklULmNwcAogICAgIGpp
dC9KSVREaXNhc3NlbWJsZXIuY3BwCiAgICAgaml0L0pJVEV4Y2VwdGlvbnMuY3BwCkBAIC0xODIs
NiArMTg2LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Jvb2xl
YW5Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9DYWxsRGF0YS5jcHAKICAgICBydW50aW1lL0Nv
ZGVDYWNoZS5jcHAKKyAgICBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwCiAgICAg
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKICAgICBydW50aW1lL0NvbXBsZXRpb24uY3Bw
CiAgICAgcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNjA5NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC05NCw5ICs5
NCwxNCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlVHlwZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAgXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db21tZW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
YXRhRm9ybWF0LmggXApAQCAtMzk5LDYgKzQwNCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29tcGlsYXRpb25FZmZvcnQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwIFwKQEAgLTQ5OSw2ICs1MDUs
NyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25L
aW5kLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTM2MDk2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYg
KzU1LDkgQEAgU09VUkNFUyArPSBcCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBcCiAg
ICAgYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKICAgICBieXRlY29kZS9Db2RlQmxvY2su
Y3BwIFwKKyAgICBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcCBcCisgICAgYnl0ZWNvZGUvQ29k
ZU9yaWdpbi5jcHAgXAorICAgIGJ5dGVjb2RlL0NvZGVUeXBlLmNwcCBcCiAgICAgYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuY3BwIFwKICAgICBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcCBc
CiAgICAgYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgXApAQCAtMTU1LDYgKzE1OCw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklU
Q2FsbC5jcHAgXAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwIFwKKyAgICBqaXQvSklUQ29kZS5j
cHAgXAogICAgIGppdC9KSVQuY3BwIFwKICAgICBqaXQvSklURGlzYXNzZW1ibGVyLmNwcCBcCiAg
ICAgaml0L0pJVEV4Y2VwdGlvbnMuY3BwIFwKQEAgLTE5MSw2ICsxOTUsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL0NhbGxE
YXRhLmNwcCBcCiAgICAgcnVudGltZS9Db2RlQ2FjaGUuY3BwIFwKKyAgICBydW50aW1lL0NvZGVT
cGVjaWFsaXphdGlvbktpbmQuY3BwIFwKICAgICBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cCBcCiAgICAgcnVudGltZS9Db21wbGV0aW9uLmNwcCBcCiAgICAgcnVudGltZS9Db25zdHJ1Y3RE
YXRhLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTY0Niw2ICs2NDYsMTQgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRp
bWVcQ29tbW9uSWRlbnRpZmllcnMuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2MzAsNiAr
MTYzOCwyMiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxieXRlY29kZVxDb2RlQmxvY2tIYXNoLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ29kZUJsb2NrSGFzaC5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxi
eXRlY29kZVxDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxDb2RlT3JpZ2luLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNv
ZGVcQ29kZU9yaWdpbi5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE2MzgsNiArMTY2MiwxMCBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxi
eXRlY29kZVxDb2RlVHlwZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXENvbW1lbnQuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+
CkBAIC0xOTgyLDYgKzIwMTAsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEpJVENvZGUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklUQ29kZS5oIgogCQkJCT4K
IAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
MzYwOTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCwxMiBAQAogCQkw
RjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGODMz
NUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBE
RkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjhG
OTQzQzE2Njc2MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGOTQzQTE2Njc2MzEx
MDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgKi87IH07CisJCTBGOEY5NDQw
MTY2NzYzMzAwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNEMTY2NzYzMkQwMEQ2MTk3MSAvKiBD
b2RlQmxvY2tIYXNoLmNwcCAqLzsgfTsKKwkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENv
ZGVCbG9ja0hhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY4Rjk0NDIxNjY3NjMz
NTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGOEY5NDNGMTY2NzYzMkQwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAg
Ki87IH07CisJCTBGOEY5NDQ0MTY2NzYzNTQwMEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEY5NDQzMTY2NzYzNTIw
MEQ2MTk3MSAvKiBKSVRDb2RlLmNwcCAqLzsgfTsKKwkJMEY4Rjk0NDYxNjY3NjRGMTAwRDYxOTcx
IC8qIENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY4Rjk0NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICovOyB9
OwogCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwOTE1
N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgKi87IH07CiAJCTBGOTE5
RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkxOUQwQTE1N0VFMDlEMDA0QTRF
N0QgLyogSlNTeW1ib2xUYWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAvKiBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0LmNwcCAqLzsgfTsKQEAgLTE4NSw2ICsxOTEsNyBAQAogCQkwRjkzMzJBNDE0Q0E3
REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRT
dGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjkzMzJBNTE0Q0E3REREMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5QjE0Q0E3REMxMDA4NUYz
QzYgLyogU3RydWN0dXJlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMzYx
M0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBD
b2RlQmxvY2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5NkVCQjExNjY3NkVGNDAwOEJBREUzIC8qIENvZGVCbG9ja1dpdGhKSVRU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY5RDMzNzAxNjVEQkI5MDAwNUFEMzg3IC8qIERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM2RTE2NURCQjhEMDA1QUQz
ODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJMEY5RkM4QzMxNEUxQjVGRTAwRDUyQUUw
IC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3Jw
aGljUHV0QnlJZExpc3QuY3BwICovOyB9OwogCQkwRjlGQzhDNDE0RTFCNjAwMDBENTJBRTAgLyog
UG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY5RkM4QzAxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0
QnlJZExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtOTY4LDYgKzk3NSwxMiBAQAogCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzNjRCNTE2NEIwQzBFMDA1MzMy
OUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0JyYW5jaERpcmVjdGlvbi5oOyBwYXRoID0gZGZnL0RGR0JyYW5jaERpcmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEg
LyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY4Rjk0M0QxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29kZUJsb2NrSGFzaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAv
KiBDb2RlQmxvY2tIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVC
bG9ja0hhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0M0YxNjY3NjMy
RDAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvZGVUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Rjk0
NDMxNjY3NjM1MjAwRDYxOTcxIC8qIEpJVENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklUQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGOEY5NDQ1MTY2NzY0RUUwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xUYWJsZU9i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MTlEMEExNTdF
RTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTeW1ib2xUYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjkxOUQwRTE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4
Myw2ICs5OTYsNyBAQAogCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeUlkU3RhdHVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjlCMTRDQTdEQzEwMDg1RjNDNiAvKiBT
dHJ1Y3R1cmVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJl
U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2MTNGQzZGREUwMDAy
RDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmFsdWVQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTZFQkIxMTY2
NzZFRjQwMDhCQURFMyAvKiBDb2RlQmxvY2tXaXRoSklUVHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2RlQmxvY2tXaXRoSklUVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjlEMzM2RTE2NURCQjhEMDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpc2Fzc2VtYmxlci5jcHA7
IHBhdGggPSBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY5RkM4QkYxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJ
ZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9seW1vcnBo
aWNQdXRCeUlkTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZDOEMw
MTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbHltb3JwaGljUHV0QnlJZExpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MzgsNiArMTg1Miw3IEBACiAJCQkJQTc1NzA2REQxMThB
MkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi8sCiAJCQkJODZDQzg1QTIw
RUU3OUI3NDAwMjg4NjgyIC8qIEpJVENhbGwuY3BwICovLAogCQkJCTE0NkZFNTExMTFBNzEwNDMw
MDg3QUU2NiAvKiBKSVRDYWxsMzJfNjQuY3BwICovLAorCQkJCTBGOEY5NDQzMTY2NzYzNTIwMEQ2
MTk3MSAvKiBKSVRDb2RlLmNwcCAqLywKIAkJCQk4NkNDRUZERDBGNDEzRjg5MDBGRDdGOUUgLyog
SklUQ29kZS5oICovLAogCQkJCTBGMDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxh
dGlvbkVmZm9ydC5oICovLAogCQkJCTBGQUY3RUZBMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNh
c3NlbWJsZXIuY3BwICovLApAQCAtMjEzNiw2ICsyMTUxLDcgQEAKIAkJCQlCQ0E2MkRGRTBFMjgy
NjIzMDAwNEYzMEQgLyogQ2FsbERhdGEuY3BwICovLAogCQkJCTE0NUM1MDdGMEQ5REY2M0IwMDg4
RjZCOSAvKiBDYWxsRGF0YS5oICovLAogCQkJCUJDNkFBQUU0MEUxRjQyNjUwMEFEODdEOCAvKiBD
bGFzc0luZm8uaCAqLywKKwkJCQkwRjhGOTQzQTE2Njc2MzExMDBENjE5NzEgLyogQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5jcHAgKi8sCiAJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKIAkJCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAg
LyogQ29tbW9uSWRlbnRpZmllcnMuY3BwICovLAogCQkJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2
MCAvKiBDb21tb25JZGVudGlmaWVycy5oICovLApAQCAtMjU2MCw5ICsyNTc2LDE0IEBACiAJCQkJ
MEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkw
RjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjBC
ODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aCAqLywKKwkJCQkwRjhGOTQzRDE2Njc2MzJEMDBENjE5NzEgLyogQ29kZUJsb2NrSGFzaC5jcHAg
Ki8sCisJCQkJMEY4Rjk0M0UxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2guaCAqLywK
KwkJCQkwRjk2RUJCMTE2Njc2RUY0MDA4QkFERTMgLyogQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCAq
LywKIAkJCQk5NjlBMDc5MDBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmNwcCAqLywKIAkJ
CQk5NjlBMDc5MTBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCisJCQkJMEY4Rjk0
NDUxNjY3NjRFRTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwICovLAogCQkJCTBGQkQ3RTY3MTQ0
Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi8sCisJCQkJMEY4Rjk0M0YxNjY3NjMyRDAw
RDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLywKIAkJCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYg
LyogQ29kZVR5cGUuaCAqLywKIAkJCQlGRUI2M0FBMjE1OUI5REEzMDA4OTMyQTYgLyogQ29tbWVu
dC5oICovLAogCQkJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi8s
CkBAIC0zMDU0LDYgKzMwNzUsOCBAQAogCQkJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBK
SVREaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzNEN0FGMTY1QTE0MzAwMEFD
QUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRE
QkZCNjE2NjZFRURBMDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9ja0hhc2gu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTZFQkIzMTY2NzZFRjYwMDhCQURFMyAvKiBDb2RlQmxv
Y2tXaXRoSklUVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNjM3LDYgKzM2NjAsMTEgQEAKIAkJ
CQkwRjczRDdBRTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM3MDE2NURCQjkwMDA1QUQzODcgLyogRGlzYXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRERCRkI1MTY2NkVFRDgwMEM1NUZFRiAvKiBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOEY5NDND
MTY2NzYzMTMwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGOEY5NDQwMTY2NzYzMzAwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjhGOTQ0NDE2Njc2MzU0MDBENjE5NzEgLyogSklUQ29k
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjhGOTQ0NjE2Njc2NEYxMDBENjE5NzEgLyogQ29k
ZU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oIgogI2lu
Y2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCIKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiT3Bjb2RlLmgiCkBAIC02NSw2ICs2NiwxMSBAQCBzdHJ1Y3QgQ2FsbExpbmtJ
bmZvIDogcHVibGljIEJhc2ljUmF3U2VuCiAgICAgICAgIGlmIChpc09uTGlzdCgpKQogICAgICAg
ICAgICAgcmVtb3ZlKCk7CiAgICAgfQorICAgIAorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
c3BlY2lhbGl6YXRpb25LaW5kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzcGVjaWFs
aXphdGlvbkZyb21Jc0NvbnN0cnVjdChjYWxsVHlwZSA9PSBDb25zdHJ1Y3QpOworICAgIH0KIAog
ICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICBDb2RlTG9j
YXRpb25EYXRhTGFiZWxQdHIgaG90UGF0aEJlZ2luOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw2ICs2MiwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAj
ZW5kaWYKIAorQ29kZUJsb2NrSGFzaCBDb2RlQmxvY2s6Omhhc2goKSBjb25zdAoreworICAgIHJl
dHVybiBDb2RlQmxvY2tIYXNoKG93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3BlY2lhbGl6
YXRpb25LaW5kKCkpOworfQorCit2b2lkIENvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlwZShQ
cmludFN0cmVhbSYgb3V0LCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpIGNvbnN0Cit7CisgICAg
b3V0LnByaW50KCIjIiwgaGFzaCgpLCAiOlsiLCBSYXdQb2ludGVyKHRoaXMpLCAiLCAiLCBqaXRU
eXBlLCBjb2RlVHlwZSgpKTsKKyAgICBpZiAoY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCisg
ICAgICAgIG91dC5wcmludChzcGVjaWFsaXphdGlvbktpbmQoKSk7CisgICAgb3V0LnByaW50KCJd
Iik7Cit9CisKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgZHVtcEFzc3VtaW5nSklUVHlwZShvdXQsIGdldEpJVFR5cGUoKSk7Cit9CisKIHN0YXRp
YyBTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFN0cmluZyYgc3RyKQogewogICAgIFN0cmluZyBy
ZXN1bHQgPSBzdHI7CkBAIC00ODAsNyArNDk4LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50U3Ry
dWN0dXJlcyhjb25zdCBJbgogICAgIEFTU0VSVCh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2VuZXJpYykgfHwgdlBDWzBdLnUub3Bjb2RlID09
IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX2dlbmVyaWMpIHx8IHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2NhbGwpIHx8IHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2NhbGxfZXZhbCkgfHwgdlBDWzBdLnUu
b3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfY29uc3RydWN0KSk7CiB9CiAKLXZv
aWQgQ29kZUJsb2NrOjpkdW1wKCkKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoKQogewog
ICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBFeGVjU3RhdGUqIGZvciB0aGluZ3MgdGhhdCBkb24ndCBh
Y3R1YWxseSBsZWFkIHRvIEpTIGV4ZWN1dGlvbiwKICAgICAvLyBsaWtlIGNvbnZlcnRpbmcgYSBK
U1N0cmluZyB0byBhIFN0cmluZy4gSGVuY2UgdGhlIGdsb2JhbEV4ZWMgaXMgYXBwcm9wcmlhdGUu
CkBAIC00OTEsMTIgKzUwOSwxMiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcCgpCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Ro
c1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51Lm9w
Y29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKKyAgICBkYXRhTG9nKCp0aGlz
KTsKICAgICBkYXRhTG9nRigKLSAgICAgICAgIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVz
IGF0ICVwICglcyk7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2
YXJpYWJsZShzKSIsCisgICAgICAgICI6ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAl
ZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocykiLAog
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
LAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXpl
KCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgY29kZVR5cGVUb1N0cmlu
Zyhjb2RlVHlwZSgpKSwgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywKLSAg
ICAgICAgbV9udW1WYXJzKTsKKyAgICAgICAgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJl
Z2lzdGVycywgbV9udW1WYXJzKTsKICAgICBpZiAoc3ltYm9sVGFibGUoKSAmJiBzeW1ib2xUYWJs
ZSgpLT5jYXB0dXJlQ291bnQoKSkKICAgICAgICAgZGF0YUxvZ0YoIjsgJWQgY2FwdHVyZWQgdmFy
KHMpIiwgc3ltYm9sVGFibGUoKS0+Y2FwdHVyZUNvdW50KCkpOwogICAgIGlmICh1c2VzQXJndW1l
bnRzKCkpIHsKQEAgLTUxMiw3ICs1MzAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcCgpCiAgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBj
b25zdCBJbnN0cnVjdGlvbiogZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CiAgICAgZm9yIChj
b25zdCBJbnN0cnVjdGlvbiogaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBk
dW1wKGV4ZWMsIGJlZ2luLCBpdCk7CisgICAgICAgIGR1bXBCeXRlY29kZShleGVjLCBiZWdpbiwg
aXQpOwogCiAgICAgaWYgKCFtX2lkZW50aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBkYXRh
TG9nRigiXG5JZGVudGlmaWVyczpcbiIpOwpAQCAtNjA3LDcgKzYyNSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wKCkKICAgICBkYXRhTG9nRigiXG4iKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1
bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3Ry
dWN0aW9uKiYgaXQpCit2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KQogewog
ICAgIGludCBsb2NhdGlvbiA9IGl0IC0gYmVnaW47CiAgICAgc3dpdGNoIChleGVjLT5pbnRlcnBy
ZXRlcigpLT5nZXRPcGNvZGVJRChpdC0+dS5vcGNvZGUpKSB7CkBAIC0xNDU4LDExICsxNDc2LDEx
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICB9CiB9CiAK
LXZvaWQgQ29kZUJsb2NrOjpkdW1wKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQordm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIGNvbnN0IElu
c3RydWN0aW9uKiBpdCA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZU9mZnNldDsK
LSAgICBkdW1wKGV4ZWMsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0KTsKKyAgICBkdW1wQnl0
ZWNvZGUoZXhlYywgaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgaXQpOwogfQogCiAjaWYgRFVNUF9D
T0RFX0JMT0NLX1NUQVRJU1RJQ1MKQEAgLTE4OTIsNyArMTkxMCw3IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBtX2luc3RydWN0aW9ucyA9IFdURjo6UmVm
Q291bnRlZEFycmF5PEluc3RydWN0aW9uPihpbnN0cnVjdGlvbnMpOwogCiAgICAgaWYgKE9wdGlv
bnM6OmR1bXBHZW5lcmF0ZWRCeXRlY29kZXMoKSkKLSAgICAgICAgZHVtcCgpOworICAgICAgICBk
dW1wQnl0ZWNvZGUoKTsKICAgICBtX2dsb2JhbERhdGEtPmZpbmlzaGVkQ29tcGlsaW5nKHRoaXMp
OwogfQogCkBAIC0yMTg2LDcgKzIyMDQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2Fs
bExpbmtJbmZvcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlu
a0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0lu
Zm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlu
a2luZykKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IGNhbGwg
ZnJvbSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmlu
ZyBMTEludCBjYWxsIGZyb20gIiwgKnRoaXMsICJcbiIpOwogICAgICAgICAgICAgICAgIG1fbGxp
bnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6Omlz
TWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKQEAg
LTIxOTksMTQgKzIyMTcsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KAogICAgIC8vIENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0
dGlzb24uCiAgICAgaWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1Nj
YW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKICAgICAgICAgaWYg
KHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICBkYXRhTG9nRigiQ29kZSBibG9jayAlcCAo
ZXhlY3V0YWJsZSAlcCkgaGFzIGRlYWQgd2VhayByZWZlcmVuY2VzLCBqZXR0aXNvbmluZyBkdXJp
bmcgR0MuXG4iLCB0aGlzLCBvd25lckV4ZWN1dGFibGUoKSk7CisgICAgICAgICAgICBkYXRhTG9n
KCp0aGlzLCAiIGhhcyBkZWFkIHdlYWsgcmVmZXJlbmNlcywgamV0dGlzb25pbmcgZHVyaW5nIEdD
LlxuIik7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGJhc2VsaW5lIEpJVCBrbm93
cyB0aGF0IGl0IHNob3VsZCByZS13YXJtLXVwIGJlZm9yZQogICAgICAgICAvLyBvcHRpbWl6aW5n
LgogICAgICAgICBhbHRlcm5hdGl2ZSgpLT5vcHRpbWl6ZUFmdGVyV2FybVVwKCk7CiAgICAgICAg
IAogICAgICAgICBpZiAoREZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkgewotICAgICAgICAg
ICAgZGF0YUxvZ0YoIkRGRyBDb2RlQmxvY2sgJXAgd2lsbCBiZSBqZXR0aXNvbmVkIGJlY2F1c2Ug
b2YgdGhlIGZvbGxvd2luZyBkZWFkIHJlZmVyZW5jZXM6XG4iLCB0aGlzKTsKKyAgICAgICAgICAg
IGRhdGFMb2coKnRoaXMsICJ3aWxsIGJlIGpldHRpc29uZWQgYmVjYXVzZSBvZiB0aGUgZm9sbG93
aW5nIGRlYWQgcmVmZXJlbmNlczpcbiIpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fZGZnRGF0YS0+dHJhbnNpdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
ICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiYgdHJhbnNpdGlvbiA9IG1fZGZnRGF0YS0+dHJh
bnNpdGlvbnNbaV07CiAgICAgICAgICAgICAgICAgSlNDZWxsKiBvcmlnaW4gPSB0cmFuc2l0aW9u
Lm1fY29kZU9yaWdpbi5nZXQoKTsKQEAgLTIyMzQsNyArMjI1Miw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wdXRU
b0Jhc2VPcGVyYXRpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAg
aWYgKG1fcHV0VG9CYXNlT3BlcmF0aW9uc1tpXS5tX3N0cnVjdHVyZSAmJiAhSGVhcDo6aXNNYXJr
ZWQobV9wdXRUb0Jhc2VPcGVyYXRpb25zW2ldLm1fc3RydWN0dXJlLmdldCgpKSkgewogICAgICAg
ICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNs
ZWFyaW5nIHB1dFRvQmFzZSBpbmZvIGluICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAg
ZGF0YUxvZygiQ2xlYXJpbmcgcHV0VG9CYXNlIGluZm8gaW4gIiwgKnRoaXMsICJcbiIpOwogICAg
ICAgICAgICAgbV9wdXRUb0Jhc2VPcGVyYXRpb25zW2ldLm1fc3RydWN0dXJlLmNsZWFyKCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yMjQ4LDcgKzIyNjYsNyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgIG1fcmVzb2x2ZU9wZXJhdGlvbnNbaV0ubGFz
dCgpLm1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIGlmIChtX3Jlc29sdmVPcGVyYXRpb25z
W2ldLmxhc3QoKS5tX3N0cnVjdHVyZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9yZXNvbHZlT3BlcmF0
aW9uc1tpXS5sYXN0KCkubV9zdHJ1Y3R1cmUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAodmVy
Ym9zZVVubGlua2luZykKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgcmVzb2x2
ZSBpbmZvIGluICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJp
bmcgcmVzb2x2ZSBpbmZvIGluICIsICp0aGlzLCAiXG4iKTsKICAgICAgICAgICAgIG1fcmVzb2x2
ZU9wZXJhdGlvbnNbaV0ubGFzdCgpLm1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yMjYyLDEzICsyMjgwLDIzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxseSgKICAgICAgICAgICAgICAgICBpZiAoQ2xvc3VyZUNhbGxTdHViUm91dGluZSog
c3R1YiA9IGNhbGxMaW5rSW5mbyhpKS5zdHViLmdldCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmICghSGVhcDo6aXNNYXJrZWQoc3R1Yi0+c3RydWN0dXJlKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB8fCAhSGVhcDo6aXNNYXJrZWQoc3R1Yi0+ZXhlY3V0YWJsZSgpKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIGNsb3N1cmUgY2FsbCBmcm9tICVwIHRvICVw
LCBzdHViIHJvdXRpbmUgJXAuXG4iLCB0aGlzLCBzdHViLT5leGVjdXRhYmxlKCksIHN0dWIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiQ2xlYXJpbmcgY2xvc3VyZSBjYWxsIGZyb20gIiwgKnRoaXMsICIgdG8gIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R1Yi0+ZXhlY3V0YWJsZSgpLT5oYXNoRm9yKGNh
bGxMaW5rSW5mbyhpKS5zcGVjaWFsaXphdGlvbktpbmQoKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIsIHN0dWIgcm91dGluZSAiLCBSYXdQb2ludGVyKHN0dWIpLCAiLlxuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs
TGlua0luZm8oaSkudW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghSGVhcDo6aXNNYXJr
ZWQoY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigi
Q2xlYXJpbmcgY2FsbCBmcm9tICVwIHRvICVwLlxuIiwgdGhpcywgY2FsbExpbmtJbmZvKGkpLmNh
bGxlZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJDbGVhcmluZyBjYWxsIGZyb20gIiwgKnRoaXMsICIgdG8gIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSYXdQb2ludGVyKGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkp
LCAiICgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mbyhpKS5jYWxs
ZWUuZ2V0KCktPmV4ZWN1dGFibGUoKS0+aGFzaEZvcigKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbExpbmtJbmZvKGkpLnNwZWNpYWxpemF0aW9uS2luZCgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiKS5cbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mbyhpKS51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVw
YXRjaEJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjMwMyw3
ICsyMzMxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0U3R1YkludGVybmFsKFJlcGF0YwogICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LmFjY2Vzc1R5cGUpOwogICAgIAogICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICBk
YXRhTG9nRigiQ2xlYXJpbmcgc3RydWN0dXJlIGNhY2hlIChraW5kICVkKSBpbiAlcC5cbiIsIHN0
dWJJbmZvLmFjY2Vzc1R5cGUsIHRoaXMpOworICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBzdHJ1
Y3R1cmUgY2FjaGUgKGtpbmQgIiwgc3RhdGljX2Nhc3Q8aW50PihzdHViSW5mby5hY2Nlc3NUeXBl
KSwgIikgaW4gIiwgKnRoaXMsICIuXG4iKTsKICAgICAKICAgICBpZiAoaXNHZXRCeUlkQWNjZXNz
KGFjY2Vzc1R5cGUpKSB7CiAgICAgICAgIGlmIChnZXRKSVRDb2RlKCkuaml0VHlwZSgpID09IEpJ
VENvZGU6OkRGR0pJVCkKQEAgLTI3NjksNyArMjc5Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpyZW9w
dGltaXplKCkKICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+YWx0ZXJuYXRpdmUoKSA9PSB0aGlz
KTsKICAgICByZXBsYWNlbWVudCgpLT50YWxseUZyZXF1ZW50RXhpdFNpdGVzKCk7CiAgICAgaWYg
KERGRzo6c2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFMb2dGKCJERkcgQ29k
ZUJsb2NrICVwIHdpbGwgYmUgamV0dGlzb25lZCBkdWUgdG8gcmVvcHRpbWl6YXRpb24gb2YgJXAu
XG4iLCByZXBsYWNlbWVudCgpLCB0aGlzKTsKKyAgICAgICAgZGF0YUxvZygqcmVwbGFjZW1lbnQo
KSwgIiB3aWxsIGJlIGpldHRpc29uZWQgZHVlIHRvIHJlb3B0aW1pemF0aW9uIG9mICIsICp0aGlz
LCAiLlxuIik7CiAgICAgcmVwbGFjZW1lbnQoKS0+amV0dGlzb24oKTsKICAgICBjb3VudFJlb3B0
aW1pemF0aW9uKCk7CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOwpAQCAtMjgzNiw3ICsyODY0
LDcgQEAgdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiAgICAgQVNTRVJUKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSBy
ZXBsYWNlbWVudCgpKTsKICAgICBpZiAoREZHOjpzaG91bGRTaG93RGlzYXNzZW1ibHkoKSkKLSAg
ICAgICAgZGF0YUxvZ0YoIkpldHRpc29uaW5nIERGRyBDb2RlQmxvY2sgJXAuXG4iLCB0aGlzKTsK
KyAgICAgICAgZGF0YUxvZygiSmV0dGlzb25pbmcgIiwgKnRoaXMsICIuXG4iKTsKICAgICBzdGF0
aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25P
cHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCkBAIC0yODQ1LDcgKzI4NzMsNyBAQCB2
b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkKICAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRp
bWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50
KCkpOwogICAgIGlmIChERkc6OnNob3VsZFNob3dEaXNhc3NlbWJseSgpKQotICAgICAgICBkYXRh
TG9nRigiSmV0dGlzb25pbmcgREZHIENvZGVCbG9jayAlcC5cbiIsIHRoaXMpOworICAgICAgICBk
YXRhTG9nKCJKZXR0aXNvbmluZyAiLCAqdGhpcywgIi5cbiIpOwogICAgIHN0YXRpY19jYXN0PEV2
YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUo
Kmdsb2JhbERhdGEoKSk7CiB9CiAKQEAgLTI4NTQsNyArMjg4Miw3IEBAIHZvaWQgRnVuY3Rpb25D
b2RlQmxvY2s6OmpldHRpc29uKCkKICAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAg
IGlmIChERkc6OnNob3VsZFNob3dEaXNhc3NlbWJseSgpKQotICAgICAgICBkYXRhTG9nRigiSmV0
dGlzb25pbmcgREZHIENvZGVCbG9jayAlcC5cbiIsIHRoaXMpOworICAgICAgICBkYXRhTG9nKCJK
ZXR0aXNvbmluZyAiLCAqdGhpcywgIi5cbiIpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yKCpn
bG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9y
Q2FsbCk7CiB9CiAKQEAgLTI5NDgsNyArMjk3Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVB
bGxQcmVkaWN0aW9ucyhPcGUKIGJvb2wgQ29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiB7
CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBkYXRhTG9nRigiQ29uc2lkZXJpbmcg
b3B0aW1pemluZyAlcC4uLlxuIiwgdGhpcyk7CisgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgb3B0
aW1pemluZyAiLCAqdGhpcywgIi4uLlxuIik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWRVJCT1NF
X1ZBTFVFX1BST0ZJTEUpCkBAIC0yOTk2LDcgKzMwMjQsNyBAQCB2b2lkIENvZGVCbG9jazo6dGFs
bHlGcmVxdWVudEV4aXRTaXRlcygpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nRigiT1NSIGV4aXQg
IyV1IChiYyMldSwgQCV1LCAlcykgZm9yIGNvZGUgYmxvY2sgJXAgb2NjdXJyZWQgZnJlcXVlbnRs
eTsgY291bnRpbmcgYXMgZnJlcXVlbnQgZXhpdCBzaXRlLlxuIiwgaSwgZXhpdC5tX2NvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCwgZXhpdC5tX25vZGVJbmRleCwgREZHOjpleGl0S2luZFRvU3RyaW5n
KGV4aXQubV9raW5kKSwgdGhpcyk7CisgICAgICAgIGRhdGFMb2coIk9TUiBleGl0ICMiLCBpLCAi
IChiYyMiLCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCAiLCBAIiwgZXhpdC5tX25v
ZGVJbmRleCwgIiwgIiwgREZHOjpleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgIikgZm9y
ICIsICp0aGlzLCAiIG9jY3VycmVkIGZyZXF1ZW50bHk6IGNvdW50aW5nIGFzIGZyZXF1ZW50IGV4
aXQgc2l0ZS5cbiIpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtMzAwNSw3ICszMDMzLDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OnRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKQogI2lmIEVOQUJMRShWRVJCT1NF
X1ZBTFVFX1BST0ZJTEUpCiB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogewot
ICAgIGRhdGFMb2dGKCJWYWx1ZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CisgICAgZGF0YUxv
ZygiVmFsdWVQcm9maWxlIGZvciAiLCAqdGhpcywgIjpcbiIpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKICAgICAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CiAgICAg
ICAgIGlmIChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0IDwgMCkgewpAQCAtMzAyMCwxMiArMzA0
OCwxMiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogICAgICAgICBwcm9m
aWxlLT5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAg
IH0KLSAgICBkYXRhTG9nRigiUmFyZUNhc2VQcm9maWxlIGZvciAlcDpcbiIsIHRoaXMpOworICAg
IGRhdGFMb2coIlJhcmVDYXNlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6XG4iKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCk7ICsraSkgewog
ICAgICAgICBSYXJlQ2FzZVByb2ZpbGUqIHByb2ZpbGUgPSByYXJlQ2FzZVByb2ZpbGUoaSk7CiAg
ICAgICAgIGRhdGFMb2dGKCIgICBiYyA9ICVkOiAldVxuIiwgcHJvZmlsZS0+bV9ieXRlY29kZU9m
ZnNldCwgcHJvZmlsZS0+bV9jb3VudGVyKTsKICAgICB9Ci0gICAgZGF0YUxvZ0YoIlNwZWNpYWxG
YXN0Q2FzZVByb2ZpbGUgZm9yICVwOlxuIiwgdGhpcyk7CisgICAgZGF0YUxvZygiU3BlY2lhbEZh
c3RDYXNlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6XG4iKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZTcGVjaWFsRmFzdENhc2VQcm9maWxlcygpOyArK2kpIHsKICAgICAg
ICAgUmFyZUNhc2VQcm9maWxlKiBwcm9maWxlID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZShpKTsK
ICAgICAgICAgZGF0YUxvZ0YoIiAgIGJjID0gJWQ6ICV1XG4iLCBwcm9maWxlLT5tX2J5dGVjb2Rl
T2Zmc2V0LCBwcm9maWxlLT5tX2NvdW50ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxM
aW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmgi
CisjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNvbW1lbnQuaCIKQEAgLTEyOCw2ICsxMjks
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKICAgICAgICAgCisgICAgICAgIENvZGVCbG9ja0hh
c2ggaGFzaCgpIGNvbnN0OworICAgICAgICB2b2lkIGR1bXBBc3N1bWluZ0pJVFR5cGUoUHJpbnRT
dHJlYW0mLCBKSVRDb2RlOjpKSVRUeXBlKSBjb25zdDsKKyAgICAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CisgICAgICAgIAogICAgICAgICBpbnQgbnVtUGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQogICAgICAgICB2b2lkIHNldE51bVBhcmFt
ZXRlcnMoaW50IG5ld1ZhbHVlKTsKICAgICAgICAgCkBAIC0xMzgsMTEgKzE0Myw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBQYXNzT3duUHRyPENvZGVCbG9jaz4gcmVsZWFzZUFsdGVybmF0
aXZlKCkgeyByZXR1cm4gbV9hbHRlcm5hdGl2ZS5yZWxlYXNlKCk7IH0KICAgICAgICAgdm9pZCBz
ZXRBbHRlcm5hdGl2ZShQYXNzT3duUHRyPENvZGVCbG9jaz4gYWx0ZXJuYXRpdmUpIHsgbV9hbHRl
cm5hdGl2ZSA9IGFsdGVybmF0aXZlOyB9CiAgICAgICAgIAotICAgICAgICBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCgpCisgICAgICAgIENvZGVTcGVjaWFsaXphdGlv
bktpbmQgc3BlY2lhbGl6YXRpb25LaW5kKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKG1faXNDb25zdHJ1Y3RvcikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29kZUZvckNvbnN0
cnVjdDsKLSAgICAgICAgICAgIHJldHVybiBDb2RlRm9yQ2FsbDsKKyAgICAgICAgICAgIHJldHVy
biBzcGVjaWFsaXphdGlvbkZyb21Jc0NvbnN0cnVjdChtX2lzQ29uc3RydWN0b3IpOwogICAgICAg
ICB9CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xNjMsOCArMTY2LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAg
ICAgICB2b2lkIGR1bXAoKTsKLSAgICAgICAgdm9pZCBkdW1wKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KTsKKyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoKTsKKyAgICAgICAgdm9pZCBkdW1wQnl0
ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICB2b2lkIHByaW50U3RydWN0
dXJlcyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpOwogCkBAIC00
NzIsNyArNDc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgSklUQ29k
ZSYgZ2V0SklUQ29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgZ2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCkgeyByZXR1cm4gbV9qaXRDb2Rl
V2l0aEFyaXR5Q2hlY2s7IH0KLSAgICAgICAgSklUQ29kZTo6SklUVHlwZSBnZXRKSVRUeXBlKCkg
eyByZXR1cm4gbV9qaXRDb2RlLmppdFR5cGUoKTsgfQorICAgICAgICBKSVRDb2RlOjpKSVRUeXBl
IGdldEpJVFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2ppdENvZGUuaml0VHlwZSgpOyB9CiAgICAg
ICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVybiBn
ZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNP
YmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgSlNTY29wZSosIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOwpA
QCAtMTIxMiw3ICsxMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgbV9j
b25zdGFudFJlZ2lzdGVyc1tpXS5zZXQoKm1fZ2xvYmFsRGF0YSwgb3duZXJFeGVjdXRhYmxlKCks
IGNvbnN0YW50c1tpXS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR1bXAoRXhl
Y1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomKTsK
KyAgICAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoRXhlY1N0YXRlKiwgY29uc3QgSW5zdHJ1Y3Rpb24q
IGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomKTsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVy
TmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRVbmFyeU9w
KEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hh
ciogb3ApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hh
c2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2tIYXNoLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2tIYXNoLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgorCisjaW5jbHVkZSAiU291cmNlQ29k
ZS5oIgorI2luY2x1ZGUgPHd0Zi9TSEExLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5l
IFRBQkxFICgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ejAxMjM0NTY3ODkiKQorCitDb2RlQmxvY2tIYXNoOjpDb2RlQmxvY2tIYXNoKGNvbnN0IGNo
YXIqIHN0cmluZykKKyAgICA6IG1faGFzaCgwKQoreworICAgIGlmIChzdHJsZW4oc3RyaW5nKSAh
PSA2KQorICAgICAgICBDUkFTSCgpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCA2OyArK2kpIHsKKyAgICAgICAgbV9oYXNoICo9IDYyOworICAgICAgICB1bnNpZ25lZCBjID0g
c3RyaW5nW2ldOworICAgICAgICBpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpIHsKKyAgICAgICAg
ICAgIG1faGFzaCArPSBjIC0gJ0EnOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKSB7CisgICAgICAgICAgICBtX2hhc2gg
Kz0gYyAtICdhJyArIDI2OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKGMgPj0gJzAnICYmIGMgPD0gJzknKTsKKyAgICAgICAgbV9oYXNoICs9IGMgLSAn
MCcgKyAyNiAqIDI7CisgICAgfQorfQorCitDb2RlQmxvY2tIYXNoOjpDb2RlQmxvY2tIYXNoKGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
KyAgICA6IG1faGFzaCgwKQoreworICAgIFNIQTEgc2hhMTsKKyAgICBzaGExLmFkZEJ5dGVzKHNv
dXJjZUNvZGUudG9TdHJpbmcoKS51dGY4KCkpOworICAgIFZlY3Rvcjx1aW50OF90LCAyMD4gZGln
ZXN0OworICAgIHNoYTEuY29tcHV0ZUhhc2goZGlnZXN0KTsKKyAgICBtX2hhc2ggKz0gZGlnZXN0
WzBdIHwgKGRpZ2VzdFsxXSA8PCA4KSB8IChkaWdlc3RbMl0gPDwgMTYpIHwgKGRpZ2VzdFszXSA8
PCAyNCk7CisgICAgbV9oYXNoIF49IHN0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKTsKK30KKwor
dm9pZCBDb2RlQmxvY2tIYXNoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAg
QVNTRVJUKHN0cmxlbihUQUJMRSkgPT0gNjIpOworICAgIAorICAgIGNoYXIgYnVmZmVyWzddOwor
ICAgIHVuc2lnbmVkIGFjY3VtdWxhdG9yID0gbV9oYXNoOworICAgIGZvciAodW5zaWduZWQgaSA9
IDY7IGktLTspIHsKKyAgICAgICAgYnVmZmVyW2ldID0gVEFCTEVbYWNjdW11bGF0b3IgJSA2Ml07
CisgICAgICAgIGFjY3VtdWxhdG9yIC89IDYyOworICAgIH0KKyAgICBidWZmZXJbNl0gPSAwOwor
ICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb2RlQmxvY2tIYXNoIHJlY29tcHV0ZShi
dWZmZXIpOworICAgIEFTU0VSVChyZWNvbXB1dGUgPT0gKnRoaXMpOworI2VuZGlmIC8vICFBU1NF
UlRfRElTQUJMRUQKKyAgICAKKyAgICBvdXQucHJpbnQoYnVmZmVyKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tIYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9ja0hhc2guaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2tIYXNoLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlQmxv
Y2tIYXNoX2gKKyNkZWZpbmUgQ29kZUJsb2NrSGFzaF9oCisKKyNpbmNsdWRlICJDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKKy8vIENvZGVC
bG9jayBoYXNoZXMgYXJlIHVzZWZ1bCBmb3IgaW5mb3JtYWxseSBpZGVudGlmeWluZyBjb2RlIGJs
b2Nrcy4gVGhleSBjb3JyZXNwb25kCisvLyB0byB0aGUgbG93IDMyIGJpdHMgb2YgYSBTSEExIGhh
c2ggb2YgdGhlIHNvdXJjZSBjb2RlIHdpdGggdHdvIGxvdyBiaXQgZmxpcHBlZAorLy8gYWNjb3Jk
aW5nIHRvIHRoZSByb2xlIHRoYXQgdGhlIGNvZGUgYmxvY2sgc2VydmVzIChjYWxsLCBjb25zdHJ1
Y3QpLiBBZGRpdGlvbmFsbHksIHRoZQorLy8gaGFzaGVzIGFyZSB0eXBpY2FsbHkgb3BlcmF0ZWQg
b3ZlciB1c2luZyBhIHN0cmluZyBpbiB3aGljaCB0aGUgaGFzaCBpcyB0cmFuc2Zvcm1lZAorLy8g
aW50byBhIDYtYnl0ZSBhbHBoYW51bWVyaWMgcmVwcmVzZW50YXRpb24uIFRoaXMgY2FuIGJlIHJl
dHJpZXZlZCBieSB1c2luZworLy8gdG9TdHJpbmcoY29uc3QgQ29kZUJsb2NrSGFzaCYpLiBGaW5h
bGx5LCB3ZSBzdXBwb3J0IENvZGVCbG9ja0hhc2hlcyBmb3IgbmF0aXZlCisvLyBmdW5jdGlvbnMs
IGluIHdoaWNoIGNhc2UgdGhlIGhhc2ggaXMgcmVwbGFjZWQgYnkgdGhlIGZ1bmN0aW9uIGFkZHJl
c3MuCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTb3VyY2VDb2RlOworCitjbGFzcyBDb2Rl
QmxvY2tIYXNoIHsKK3B1YmxpYzoKKyAgICBDb2RlQmxvY2tIYXNoKCkKKyAgICAgICAgOiBtX2hh
c2goMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IENvZGVCbG9ja0hhc2godW5z
aWduZWQgaGFzaCkKKyAgICAgICAgOiBtX2hhc2goaGFzaCkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIENvZGVCbG9ja0hhc2goY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQpOworICAgIAorICAgIGV4cGxpY2l0IENvZGVCbG9ja0hhc2goY29uc3QgY2hhciopOworICAg
IAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KKyAgICAKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKKyAgICAvLyBDb21wYXJpc29u
IG1ldGhvZHMgdXNlZnVsIGZvciBiaXNlY3Rpb24uCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENvZGVCbG9ja0hhc2gmIG90aGVyKSBjb25zdCB7IHJldHVybiBoYXNoKCkgPT0gb3RoZXIuaGFz
aCgpOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVCbG9ja0hhc2gmIG90aGVyKSBj
b25zdCB7IHJldHVybiBoYXNoKCkgIT0gb3RoZXIuaGFzaCgpOyB9CisgICAgYm9vbCBvcGVyYXRv
cjwoY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2goKSA8IG90
aGVyLmhhc2goKTsgfQorICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IENvZGVCbG9ja0hhc2gmIG90
aGVyKSBjb25zdCB7IHJldHVybiBoYXNoKCkgPiBvdGhlci5oYXNoKCk7IH0KKyAgICBib29sIG9w
ZXJhdG9yPD0oY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2go
KSA8PSBvdGhlci5oYXNoKCk7IH0KKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgQ29kZUJsb2Nr
SGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2goKSA+PSBvdGhlci5oYXNoKCk7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9oYXNoOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBDb2RlQmxvY2tIYXNoX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tXaXRoSklUVHlwZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja1dpdGhKSVRU
eXBlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlQmxvY2tXaXRoSklUVHlwZV9o
CisjZGVmaW5lIENvZGVCbG9ja1dpdGhKSVRUeXBlX2gKKworI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gV2Ugc29tZXRpbWVzIHdoYXQgdG8gcHJpbnQgdGhl
IENvZGVCbG9jaydzIElEIGJlZm9yZSBzZXR0aW5nIGl0cyBKSVRDb2RlLiBBdCB0aGF0CisvLyBw
b2ludCB0aGUgQ29kZUJsb2NrIHdpbGwgY2xhaW0gYSBib2d1cyBKSVRUeXBlLiBUaGlzIGhlbHBl
ciBjbGFzcyBsZXRzIHVzIGRvIHRoYXQuCisKK2NsYXNzIENvZGVCbG9ja1dpdGhKSVRUeXBlIHsK
K3B1YmxpYzoKKyAgICBDb2RlQmxvY2tXaXRoSklUVHlwZShDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQorICAgICAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9j
aykKKyAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICB7CisgICAgfQorICAgIAorICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgbV9jb2Rl
QmxvY2stPmR1bXBBc3N1bWluZ0pJVFR5cGUob3V0LCBtX2ppdFR5cGUpOworICAgIH0KK3ByaXZh
dGU6CisgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBKSVRDb2RlOjpKSVRUeXBlIG1f
aml0VHlwZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29kZUJsb2Nr
V2l0aEpJVFR5cGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCit1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aEZv
ckNhbGxGcmFtZShJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKK3sKKyAgICB1bnNp
Z25lZCByZXN1bHQgPSAxOworICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBjdXJyZW50ID0gaW5s
aW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+Y2FsbGVyLmlubGluZUNh
bGxGcmFtZSkKKyAgICAgICAgcmVzdWx0Kys7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordW5z
aWduZWQgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBpbmxp
bmVEZXB0aEZvckNhbGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOworfQorICAgIAorVmVjdG9yPENv
ZGVPcmlnaW4+IENvZGVPcmlnaW46OmlubGluZVN0YWNrKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
Q29kZU9yaWdpbj4gcmVzdWx0KGlubGluZURlcHRoKCkpOworICAgIHJlc3VsdC5sYXN0KCkgPSAq
dGhpczsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHJlc3VsdC5zaXplKCkgLSAyOworICAgIGZvciAo
SW5saW5lQ2FsbEZyYW1lKiBjdXJyZW50ID0gaW5saW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJy
ZW50ID0gY3VycmVudC0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgcmVzdWx0W2lu
ZGV4LS1dID0gY3VycmVudC0+Y2FsbGVyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NvZGVC
bG9ja0hhc2ggSW5saW5lQ2FsbEZyYW1lOjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXhl
Y3V0YWJsZS0+aGFzaEZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3Jp
Z2luLmgJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgQ29k
ZU9yaWdpbl9oCiAjZGVmaW5lIENvZGVPcmlnaW5faAogCisjaW5jbHVkZSAiQ29kZUJsb2NrSGFz
aC5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJWYWx1
ZVJlY292ZXJ5LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Jp
dFZlY3Rvci5oPgpAQCAtOTgsNiArMTAwLDEwIEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewog
ICAgIEJpdFZlY3RvciBjYXB0dXJlZFZhcnM7IC8vIEluZGV4ZWQgYnkgdGhlIG1hY2hpbmUgY2Fs
bCBmcmFtZSdzIHZhcmlhYmxlIG51bWJlcmluZy4KICAgICB1bnNpZ25lZCBzdGFja09mZnNldCA6
IDMxOwogICAgIGJvb2wgaXNDYWxsIDogMTsKKyAgICAKKyAgICBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCgpIGNvbnN0IHsgcmV0dXJuIHNwZWNpYWxpemF0aW9uRnJv
bUlzQ2FsbChpc0NhbGwpOyB9CisgICAgCisgICAgQ29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3Q7
CiB9OwogCiBzdHJ1Y3QgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCB7CkBAIC0xMDUsMzYg
KzExMSwxMiBAQCBzdHJ1Y3QgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCB7CiAgICAgdW5z
aWduZWQgY2FsbFJldHVybk9mZnNldDsKIH07CiAKLWlubGluZSB1bnNpZ25lZCBDb2RlT3JpZ2lu
OjppbmxpbmVEZXB0aEZvckNhbGxGcmFtZShJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSkKLXsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAxOwotICAgIGZvciAoSW5saW5lQ2FsbEZyYW1l
KiBjdXJyZW50ID0gaW5saW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+
Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgcmVzdWx0Kys7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIENvZGVPcmlnaW46OmlubGluZURlcHRoKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1l
KTsKLX0KLSAgICAKIGlubGluZSBib29sIENvZGVPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QgQ29k
ZU9yaWdpbiYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJ5dGVjb2RlSW5kZXggPT0gb3Ro
ZXIuYnl0ZWNvZGVJbmRleAogICAgICAgICAmJiBpbmxpbmVDYWxsRnJhbWUgPT0gb3RoZXIuaW5s
aW5lQ2FsbEZyYW1lOwogfQogICAgIAotLy8gR2V0IHRoZSBpbmxpbmUgc3RhY2suIFRoaXMgaXMg
c2xvdywgYW5kIGlzIGludGVuZGVkIGZvciBkZWJ1Z2dpbmcgb25seS4KLWlubGluZSBWZWN0b3I8
Q29kZU9yaWdpbj4gQ29kZU9yaWdpbjo6aW5saW5lU3RhY2soKSBjb25zdAotewotICAgIFZlY3Rv
cjxDb2RlT3JpZ2luPiByZXN1bHQoaW5saW5lRGVwdGgoKSk7Ci0gICAgcmVzdWx0Lmxhc3QoKSA9
ICp0aGlzOwotICAgIHVuc2lnbmVkIGluZGV4ID0gcmVzdWx0LnNpemUoKSAtIDI7Ci0gICAgZm9y
IChJbmxpbmVDYWxsRnJhbWUqIGN1cnJlbnQgPSBpbmxpbmVDYWxsRnJhbWU7IGN1cnJlbnQ7IGN1
cnJlbnQgPSBjdXJyZW50LT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICByZXN1bHRb
aW5kZXgtLV0gPSBjdXJyZW50LT5jYWxsZXI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogaW5s
aW5lIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXRGb3JDb2RlT3JpZ2luKENvZGVPcmlnaW5B
dENhbGxSZXR1cm5PZmZzZXQqIGRhdGEpCiB7CiAgICAgcmV0dXJuIGRhdGEtPmNhbGxSZXR1cm5P
ZmZzZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5
cGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDb2RlVHlwZS5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpDb2Rl
VHlwZSBjb2RlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7CisgICAgY2FzZSBKU0M6
Okdsb2JhbENvZGU6CisgICAgICAgIG91dC5wcmludCgiR2xvYmFsIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEpTQzo6RXZhbENvZGU6CisgICAgICAgIG91dC5wcmludCgiRXZhbCIpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OkZ1bmN0aW9uQ29kZToKKyAgICAgICAgb3V0
LnByaW50KCJGdW5jdGlvbiIpOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5oCShy
ZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjIgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBlbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSB9Owog
Ci1pbmxpbmUgY29uc3QgY2hhciogY29kZVR5cGVUb1N0cmluZyhDb2RlVHlwZSBjb2RlVHlwZSkK
LXsKLSAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7Ci0gICAgY2FzZSBHbG9iYWxDb2RlOgotICAgICAg
ICByZXR1cm4gIkdsb2JhbENvZGUiOwotICAgIGNhc2UgRXZhbENvZGU6Ci0gICAgICAgIHJldHVy
biAiRXZhbENvZGUiOwotICAgIGNhc2UgRnVuY3Rpb25Db2RlOgotICAgICAgICByZXR1cm4gIkZ1
bmN0aW9uQ29kZSI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKK25h
bWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYsIEpTQzo6Q29kZVR5cGUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2Vu
ZGlmIC8vIENvZGVUeXBlX2gKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGlvbkNvdW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjAsMTEgKzE2MCw5IEBAIHZvaWQgRXhlY3V0aW9uQ291bnRlcjo6cmVzZXQo
KQogICAgIG1fYWN0aXZlVGhyZXNob2xkID0gMDsKIH0KIAotY29uc3QgY2hhciogRXhlY3V0aW9u
Q291bnRlcjo6c3RhdHVzKCkgY29uc3QKK3ZvaWQgRXhlY3V0aW9uQ291bnRlcjo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIHN0YXRpYyBjaGFyIHJlc3VsdFs4MF07Ci0gICAg
c25wcmludGYocmVzdWx0LCBzaXplb2YocmVzdWx0KSwgIiVsZi8lbGYsICVkIiwgY291bnQoKSwg
c3RhdGljX2Nhc3Q8ZG91YmxlPihtX2FjdGl2ZVRocmVzaG9sZCksIG1fY291bnRlcik7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBvdXQucHJpbnRmKCIlbGYvJWxmLCAlZCIsIGNvdW50KCksIHN0
YXRpY19jYXN0PGRvdWJsZT4obV9hY3RpdmVUaHJlc2hvbGQpLCBtX2NvdW50ZXIpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRpb25Db3VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3Rm
L1NpbXBsZVN0YXRzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDEsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXROZXdUaHJlc2hvbGQoaW50MzJfdCB0aHJlc2hvbGQsIENvZGVCbG9j
ayopOwogICAgIHZvaWQgZGVmZXJJbmRlZmluaXRlbHkoKTsKICAgICBkb3VibGUgY291bnQoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdG90YWxDb3VudCkgKyBtX2NvdW50
ZXI7IH0KLSAgICBjb25zdCBjaGFyKiBzdGF0dXMoKSBjb25zdDsKKyAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKICAgICBzdGF0aWMgZG91YmxlIGFwcGx5TWVtb3J5VXNhZ2VIZXVy
aXN0aWNzKGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOwogICAgIHN0YXRpYyBpbnQzMl90IGFw
cGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29udmVydFRvSW50KGludDMyX3QgdmFsdWUsIENv
ZGVCbG9jayopOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTM2MDk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2NDUsMjEgKzM2NDUsMjMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VDb2RlQmxvY2soKQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9jb2RlQmxvY2s7CiAgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQot
ICAgIGRhdGFMb2dGKCJQYXJzaW5nIGNvZGUgYmxvY2sgJXAuIGNvZGVUeXBlID0gJXMsIGNhcHR1
cmVDb3VudCA9ICV1LCBuZWVkc0Z1bGxTY29wZUNoYWluID0gJXMsIG5lZWRzQWN0aXZhdGlvbiA9
ICVzLCBpc1N0cmljdE1vZGUgPSAlc1xuIiwKLSAgICAgICAgICAgIGNvZGVCbG9jaywKLSAgICAg
ICAgICAgIGNvZGVUeXBlVG9TdHJpbmcoY29kZUJsb2NrLT5jb2RlVHlwZSgpKSwKLSAgICAgICAg
ICAgIGNvZGVCbG9jay0+c3ltYm9sVGFibGUoKSA/IGNvZGVCbG9jay0+c3ltYm9sVGFibGUoKS0+
Y2FwdHVyZUNvdW50KCkgOiAwLAotICAgICAgICAgICAgY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29w
ZUNoYWluKCk/InRydWUiOiJmYWxzZSIsCi0gICAgICAgICAgICBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5uZWVkc0FjdGl2YXRpb24oKT8idHJ1ZSI6ImZhbHNlIiwKLSAgICAgICAgICAg
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpPyJ0cnVlIjoiZmFs
c2UiKTsKLSAgICBjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpLT5kdW1wKCk7CisgICAgZGF0
YUxvZygKKyAgICAgICAgIlBhcnNpbmcgIiwgKmNvZGVCbG9jaywKKyAgICAgICAgIjogY2FwdHVy
ZUNvdW50ID0gIiwgY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpID8gY29kZUJsb2NrLT5zeW1ib2xU
YWJsZSgpLT5jYXB0dXJlQ291bnQoKSA6IDAsCisgICAgICAgICIsIG5lZWRzRnVsbFNjb3BlQ2hh
aW4gPSAiLCBjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSwKKyAgICAgICAgIiwgbmVl
ZHNBY3RpdmF0aW9uID0gIiwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bmVlZHNBY3Rp
dmF0aW9uKCksCisgICAgICAgICIsIGlzU3RyaWN0TW9kZSA9ICIsIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpLCAiXG4iKTsKKyAgICBjb2RlQmxvY2stPmJhc2Vs
aW5lVmVyc2lvbigpLT5kdW1wQnl0ZWNvZGUoKTsKICNlbmRpZgogICAgIAogICAgIGZvciAodW5z
aWduZWQganVtcFRhcmdldEluZGV4ID0gMDsganVtcFRhcmdldEluZGV4IDw9IGNvZGVCbG9jay0+
bnVtYmVyT2ZKdW1wVGFyZ2V0cygpOyArK2p1bXBUYXJnZXRJbmRleCkgewogICAgICAgICAvLyBU
aGUgbWF4aW11bSBieXRlY29kZSBvZmZzZXQgdG8gZ28gaW50byB0aGUgY3VycmVudCBiYXNpY2Js
b2NrIGlzIGVpdGhlciB0aGUgbmV4dCBqdW1wIHRhcmdldCwgb3IgdGhlIGVuZCBvZiB0aGUgaW5z
dHJ1Y3Rpb25zLgogICAgICAgICB1bnNpZ25lZCBsaW1pdCA9IGp1bXBUYXJnZXRJbmRleCA8IGNv
ZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpID8gY29kZUJsb2NrLT5qdW1wVGFyZ2V0KGp1
bXBUYXJnZXRJbmRleCkgOiBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJQYXJzaW5nIGJ5dGVj
b2RlIHdpdGggbGltaXQgJXAgYmMjJXUgYXQgaW5saW5lIGRlcHRoICV1LlxuIiwgbV9pbmxpbmVT
dGFja1RvcC0+ZXhlY3V0YWJsZSgpLCBsaW1pdCwgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGhGb3JD
YWxsRnJhbWUobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpKTsKKyAgICAgICAg
ZGF0YUxvZygKKyAgICAgICAgICAgICJQYXJzaW5nIGJ5dGVjb2RlIHdpdGggbGltaXQgIiwgbV9p
bmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUtPmhhc2goKSwKKyAgICAgICAgICAgICIg
YmMjIiwgbGltaXQsICIgYXQgaW5saW5lIGRlcHRoICIsCisgICAgICAgICAgICBDb2RlT3JpZ2lu
OjppbmxpbmVEZXB0aEZvckNhbGxGcmFtZShtX2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxG
cmFtZSksICIuXG4iKTsKICNlbmRpZgogICAgICAgICBBU1NFUlQobV9jdXJyZW50SW5kZXggPCBs
aW1pdCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgog
I2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
QEAgLTQzLDcgKzQ0LDcgQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dAogewogICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLmNvbXB1dGVJZk5lY2Vzc2FyeShtX2dyYXBo
KTsKICAgICAKLSAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgREZHIENvZGVC
bG9jayAiLCBSYXdQb2ludGVyKG1fZ3JhcGgubV9jb2RlQmxvY2spLCAiLCBpbnN0cnVjdGlvbiBj
b3VudCA9ICIsIG1fZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIjpcbiIp
OworICAgIG91dC5wcmludCgiR2VuZXJhdGVkIEpJVCBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRo
SklUVHlwZShtX2dyYXBoLm1fY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpLCAiLCBpbnN0cnVj
dGlvbiBjb3VudCA9ICIsIG1fZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwg
IjpcbiIpOwogICAgIG91dC5wcmludCgiICAgIENvZGUgYXQgWyIsIFJhd1BvaW50ZXIobGlua0J1
ZmZlci5kZWJ1Z0FkZHJlc3MoKSksICIsICIsIFJhd1BvaW50ZXIoc3RhdGljX2Nhc3Q8Y2hhcio+
KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSksICIp
OlxuIik7CiAgICAgCiAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDEzNjA5NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OCwxNCArODgsMTQgQEAgdm9pZCBHcmFwaDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0mIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IHByZXZpb3VzSW5saW5lU3RhY2suc2l6ZSgpOyBpLS0gPiBp
bmRleE9mRGl2ZXJnZW5jZTspIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCk7CiAgICAgICAg
IHByaW50V2hpdGVTcGFjZShvdXQsIGkgKiAyKTsKLSAgICAgICAgb3V0LnByaW50KCI8LS0gIiwg
UmF3UG9pbnRlcihwcmV2aW91c0lubGluZVN0YWNrW2ldLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0
YWJsZS5nZXQoKSksICJcbiIpOworICAgICAgICBvdXQucHJpbnQoIjwtLSAjIiwgcHJldmlvdXNJ
bmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmhhc2goKSwgIlxuIik7CiAgICAgfQogICAg
IAogICAgIC8vIFByaW50IHRoZSBwdXNoZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kZXhP
ZkRpdmVyZ2VuY2U7IGkgPCBjdXJyZW50SW5saW5lU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgb3V0LnByaW50KHByZWZpeCk7CiAgICAgICAgIHByaW50V2hpdGVTcGFjZShvdXQsIGkgKiAy
KTsKLSAgICAgICAgb3V0LnByaW50KCItLT4gIiwgUmF3UG9pbnRlcihjdXJyZW50SW5saW5lU3Rh
Y2tbaV0uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKSwgIlxuIik7CisgICAgICAg
IG91dC5wcmludCgiLS0+ICMiLCBjdXJyZW50SW5saW5lU3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1l
LT5oYXNoKCksICJcbiIpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKKyNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCkBAIC04MSw3ICs4MiwxMCBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4
aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0Up
Ci0gICAgZGF0YUxvZ0YoIkdlbmVyYXRpbmcgT1NSIGV4aXQgIyV1IChzZXEjJXUsIGJjIyV1LCBA
JXUsICVzKSBmb3IgY29kZSBibG9jayAlcC5cbiIsIGV4aXRJbmRleCwgZXhpdC5tX3N0cmVhbUlu
ZGV4LCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LCBl
eGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgY29kZUJsb2NrKTsKKyAgICBkYXRhTG9nKAor
ICAgICAgICAiR2VuZXJhdGluZyBPU1IgZXhpdCAjIiwgZXhpdEluZGV4LCAiIChzZXEjIiwgZXhp
dC5tX3N0cmVhbUluZGV4LAorICAgICAgICAiLCBiYyMiLCBleGl0Lm1fY29kZU9yaWdpbi5ieXRl
Y29kZUluZGV4LCAiLCBAIiwgZXhpdC5tX25vZGVJbmRleCwgIiwgIiwKKyAgICAgICAgZXhpdEtp
bmRUb1N0cmluZyhleGl0Lm1fa2luZCksICIpIGZvciAiLCAqY29kZUJsb2NrLCAiLlxuIik7CiAj
ZW5kaWYKIAogICAgIHsKQEAgLTk1LDkgKzk5LDkgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKICAg
ICAgICAgICAgIHNob3VsZFNob3dEaXNhc3NlbWJseSgpLAogICAgICAgICAgICAgcGF0Y2hCdWZm
ZXIsCi0gICAgICAgICAgICAoIkRGRyBPU1IgZXhpdCAjJXUgKGJjIyV1LCBAJXUsICVzKSBmcm9t
IENvZGVCbG9jayAlcCIsCi0gICAgICAgICAgICAgZXhpdEluZGV4LCBleGl0Lm1fY29kZU9yaWdp
bi5ieXRlY29kZUluZGV4LCBleGl0Lm1fbm9kZUluZGV4LAotICAgICAgICAgICAgIGV4aXRLaW5k
VG9TdHJpbmcoZXhpdC5tX2tpbmQpLCBjb2RlQmxvY2spKTsKKyAgICAgICAgICAgICgiREZHIE9T
UiBleGl0ICMldSAoYmMjJXUsIEAldSwgJXMpIGZyb20gJXMiLAorICAgICAgICAgICAgICAgIGV4
aXRJbmRleCwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgZXhpdC5tX25vZGVJbmRl
eCwKKyAgICAgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQubV9raW5kKSwgdG9DU3Ry
aW5nKCpjb2RlQmxvY2spLmRhdGEoKSkpOwogICAgIH0KICAgICAKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEzNjA5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MjIsMjIgKzE1MjIsMjQgQEAgdm9pZCBERkdfT1BFUkFUSU9OIGRlYnVn
T3BlcmF0aW9uUHJpbnRTcAogICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJ
bmZvID0gc3RhdGljX2Nhc3Q8U3BlY3VsYXRpb25GYWlsdXJlRGVidWdJbmZvKj4oZGVidWdJbmZv
UmF3KTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGRlYnVnSW5mby0+Y29kZUJsb2NrOwog
ICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0g
ICAgZGF0YUxvZ0YoIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gJXAgYXQgQCV1IHdpdGggZXhlY3V0
ZUNvdW50ZXIgPSAlcywgIgotICAgICAgICAgICAgInJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
ID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1LCAiCi0gICAgICAgICAgICAib3Ny
RXhpdENvdW50ZXIgPSAldVxuIiwKLSAgICAgICAgICAgIGNvZGVCbG9jaywKLSAgICAgICAgICAg
IGRlYnVnSW5mby0+bm9kZUluZGV4LAotICAgICAgICAgICAgYWx0ZXJuYXRpdmUgPyBhbHRlcm5h
dGl2ZS0+aml0RXhlY3V0ZUNvdW50ZXIoKS5zdGF0dXMoKSA6IDAsCi0gICAgICAgICAgICBhbHRl
cm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIDogMCwK
LSAgICAgICAgICAgIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPm9wdGltaXphdGlvbkRlbGF5
Q291bnRlcigpIDogMCwKLSAgICAgICAgICAgIGNvZGVCbG9jay0+b3NyRXhpdENvdW50ZXIoKSk7
CisgICAgZGF0YUxvZygKKyAgICAgICAgIlNwZWN1bGF0aW9uIGZhaWx1cmUgaW4gIiwgKmNvZGVC
bG9jaywgIiBhdCBAIiwgZGVidWdJbmZvLT5ub2RlSW5kZXgsCisgICAgICAgICIgd2l0aCAiKTsK
KyAgICBpZiAoYWx0ZXJuYXRpdmUpIHsKKyAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICJl
eGVjdXRlQ291bnRlciA9ICIsIGFsdGVybmF0aXZlLT5qaXRFeGVjdXRlQ291bnRlcigpLAorICAg
ICAgICAgICAgIiwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAiLCBhbHRlcm5hdGl2ZS0+
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwKKyAgICAgICAgICAgICIsIG9wdGltaXphdGlv
bkRlbGF5Q291bnRlciA9ICIsIGFsdGVybmF0aXZlLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIo
KSk7CisgICAgfSBlbHNlCisgICAgICAgIGRhdGFMb2coIm5vIGFsdGVybmF0aXZlIGNvZGUgYmxv
Y2sgKGkuZS4gd2UndmUgYmVlbiBqZXR0aXNvbmVkKSIpOworICAgIGRhdGFMb2coIiwgb3NyRXhp
dENvdW50ZXIgPSAiLCBjb2RlQmxvY2stPm9zckV4aXRDb3VudGVyKCksICJcbiIpOwogfQogI2Vu
ZGlmCiAKIGV4dGVybiAiQyIgdm9pZCBERkdfT1BFUkFUSU9OIHRyaWdnZXJSZW9wdGltaXphdGlv
bk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQotICAgIGRhdGFMb2dGKCIlcDogRW50ZXJlZCByZW9wdGltaXplXG4iLCBjb2RlQmxvY2spOwor
ICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIjogRW50ZXJlZCByZW9wdGltaXplXG4iKTsKICNlbmRp
ZgogICAgIC8vIFdlIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIGJhc2VsaW5lIGNvZGUgYmxvY2su
CiAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGNvZGVCbG9jay0+Z2V0SklUVHlw
ZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHJl
dmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgogI2luY2x1ZGUgIlJlcGF0Y2hC
dWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0yMzUsOCArMjM2LDggQEAgc3RhdGljIHZvaWQg
Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1YgogICAgIAogICAgIHN0dWJSb3V0aW5lID0gRklO
QUxJWkVfQ09ERV9GT1JfREZHX1NUVUIoCiAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAo
IkRGRyBwcm90b3R5cGUgY2hhaW4gYWNjZXNzIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJu
IHBvaW50ICVwIiwKLSAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBzdWNjZXNzTGFiZWwuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAoIkRGRyBwcm90b3R5cGUgY2hhaW4gYWNjZXNz
IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgdG9DU3RyaW5nKCpl
eGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdWNjZXNzTGFiZWwuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOwogfQogCiBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKQEAgLTI5Niw5
ICsyOTcsOSBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAg
ICAgIAogICAgICAgICBzdHViSW5mby5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX0RG
R19TVFVCKAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkRGRyBHZXRC
eUlkIGFycmF5IGxlbmd0aCBzdHViIGZvciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIs
Ci0gICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZmcu
ZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAoIkRG
RyBHZXRCeUlkIGFycmF5IGxlbmd0aCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAg
ICAgICAgICAgICAgICB0b0NTdHJpbmcoKmV4ZWMtPmNvZGVCbG9jaygpKS5kYXRhKCksIHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgICAgICAg
ICBzdHViSW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygp
KSk7CiAgICAgICAgIAogICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJs
b2NrKTsKICAgICAgICAgcmVwbGFjZVdpdGhKdW1wKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLCBz
dHViSW5mby5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7CkBAIC01MjUsOSArNTI2LDkgQEAg
c3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAgICAgY3Jl
YXRlSklUU3R1YlJvdXRpbmUoCiAgICAgICAgICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCiAg
ICAgICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAoIkRG
RyBHZXRCeUlkIHBvbHltb3JwaGljIGxpc3QgYWNjZXNzIGZvciBDb2RlQmxvY2sgJXAsIHJldHVy
biBwb2ludCAlcCIsCi0gICAgICAgICAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwgc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpLAorICAgICAgICAgICAgICAgICAgICAoIkRGRyBHZXRCeUlkIHBvbHltb3JwaGlj
IGxpc3QgYWNjZXNzIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRhdGEoKSwgc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpLAogICAgICAgICAgICAgICAgICpnbG9iYWxEYXRhLAogICAgICAgICAgICAgICAgIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgICAgICAgICAgc2xvdC5jYWNoZWRQcm9w
ZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRlcgpAQCAtNzM3LDkgKzczOCw5IEBAIHN0
YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICAgICAgICAgICAgIAogICAgIHN0dWJSb3V0
aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfREZHX1NUVUIoCiAgICAgICAgIHBhdGNoQnVmZmVyLAot
ICAgICAgICAoIkRGRyBQdXRCeUlkIHJlcGxhY2Ugc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1
cm4gcG9pbnQgJXAiLAotICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNo
LmRmZy5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgKCJE
RkcgUHV0QnlJZCByZXBsYWNlIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAg
ICAgICAgdG9DU3RyaW5nKCpleGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICBzdHViSW5mby5w
YXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiB9CiAKIHN0
YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKQEAgLTkzNywxMSArOTM4LDExIEBAIHN0
YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgY3JlYXRlSklUU3R1YlJv
dXRpbmUoCiAgICAgICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgKICAgICAgICAgICAgICAgICBw
YXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAoIkRGRyBQdXRCeUlkICVzdHJhbnNpdGlvbiBz
dHViICglcCAtPiAlcCkgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAg
ICAgICAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICE9IG9sZFN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA/ICJyZWFsbG9jYXRpbmcgIiA6ICIiLAotICAgICAgICAg
ICAgICAgICBvbGRTdHJ1Y3R1cmUsIHN0cnVjdHVyZSwKLSAgICAgICAgICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KAot
ICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvRG9uZSku
ZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAorICAgICAgICAgICAgICAgICgiREZHIFB1dEJ5SWQgJXN0
cmFuc2l0aW9uIHN0dWIgKCVwIC0+ICVwKSBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAhPSBvbGRTdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgPyAicmVhbGxvY2F0aW5nICIgOiAiIiwKKyAgICAg
ICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlLCBzdHJ1Y3R1cmUsCisgICAgICAgICAgICAgICAg
ICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRhdGEoKSwgc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAg
ICAgICAgICAgICAqZ2xvYmFsRGF0YSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5v
d25lckV4ZWN1dGFibGUoKSwKICAgICAgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAhPSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksCkBAIC0xMjMwLDkgKzEy
MzEsOSBAQCB2b2lkIGRmZ0xpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgUmVm
UHRyPENsb3N1cmVDYWxsU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lID0gYWRvcHRSZWYobmV3IENs
b3N1cmVDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKAogICAgICAg
ICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkRGRyBjbG9zdXJlIGNhbGwgc3R1YiBm
b3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAsIHRhcmdldCAlcCAoQ29kZUJsb2NrICVw
KSIsCi0gICAgICAgICAgICAgICAgY2FsbGVyQ29kZUJsb2NrLCBjYWxsTGlua0luZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoMCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKLSAgICAg
ICAgICAgICAgICBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxlZUNvZGVCbG9jaykp
LAorICAgICAgICAgICAgKCJERkcgY2xvc3VyZSBjYWxsIHN0dWIgZm9yICVzLCByZXR1cm4gcG9p
bnQgJXAsIHRhcmdldCAlcCAoJXMpIiwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKmNhbGxl
ckNvZGVCbG9jaykuZGF0YSgpLCBjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVs
QXRPZmZzZXQoMCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKKyAgICAgICAgICAgICAgICBjb2RlUHRy
LmV4ZWN1dGFibGVBZGRyZXNzKCksIHRvQ1N0cmluZygqY2FsbGVlQ29kZUJsb2NrKS5kYXRhKCkp
KSwKICAgICAgICAgKmdsb2JhbERhdGEsIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHN0cnVjdHVyZSwgZXhlY3V0YWJsZSwgY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4pKTsKICAg
ICAKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY2FsbGVyQ29kZUJsb2NrKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OmR1bXBDYWxsRnJhbWUoQ2FsbEZyYW0KIAogdm9pZCBJbnRlcnByZXRl
cjo6ZHVtcENhbGxGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5kdW1wKCk7CisgICAgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+ZHVtcEJ5
dGVjb2RlKCk7CiAgICAgZHVtcFJlZ2lzdGVycyhjYWxsRnJhbWUpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKSVRDb2RlLmgiCisKKyNpbmNsdWRlIDx3dGYv
UHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBKU0M6OkpJVENvZGU6OkpJVFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEpTQzo6SklUQ29kZTo6Tm9uZToKKyAgICAgICAgb3V0LnBy
aW50KCJOb25lIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6SklUQ29kZTo6SG9z
dENhbGxUaHVuazoKKyAgICAgICAgb3V0LnByaW50KCJIb3N0Iik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEpTQzo6SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgb3V0LnBy
aW50KCJMTEludCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OkpJVENvZGU6OkJh
c2VsaW5lSklUOgorICAgICAgICBvdXQucHJpbnQoIkJhc2VsaW5lIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEpTQzo6SklUQ29kZTo6REZHSklUOgorICAgICAgICBvdXQucHJpbnQoIkRG
RyIpOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgQ1JBU0goKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU3LDcgKzE1Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fcmVmLmV4ZWN1dGFibGVN
ZW1vcnkoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgSklUVHlwZSBqaXRUeXBlKCkK
KyAgICAgICAgSklUVHlwZSBqaXRUeXBlKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIG1faml0VHlwZTsKICAgICAgICAgfQpAQCAtMTg3LDYgKzE4NywxMyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNlbmRpZiAvLyBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgfTsK
IAotfTsKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJp
bnRTdHJlYW07Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkpJVENvZGU6
OkpJVFR5cGUpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAxMzYw
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNs
dWRlICJKSVQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Niw3ICs0Nyw3IEBAIEpJVERpc2Fz
c2VtYmxlcjo6fkpJVERpc2Fzc2VtYmxlcigpCiAKIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7Ci0gICAgb3V0LnBy
aW50KCJCYXNlbGluZSBKSVQgY29kZSBmb3IgQ29kZUJsb2NrICIsIFJhd1BvaW50ZXIobV9jb2Rl
QmxvY2spLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIG1fY29kZUJsb2NrLT5pbnN0cnVjdGlv
bkNvdW50KCksICJcbiIpOworICAgIG91dC5wcmludCgiQmFzZWxpbmUgSklUIGNvZGUgZm9yICIs
IENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCks
ICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQo
KSwgIlxuIik7CiAgICAgb3V0LnByaW50KCIgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVyKGxpbmtC
dWZmZXIuZGVidWdBZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0PGNoYXIq
PihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCkpLCAi
KTpcbiIpOwogICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIG1fc3RhcnRPZkNv
ZGUsIG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aFswXSk7CiAgICAgCkBAIC03OCw3
ICs3OSw3IEBAIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wRm9ySW5zdHJ1Y3Rpb24KICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIG91dC5wcmludChwcmVmaXgpOwot
ICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcChpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBC
eXRlY29kZShpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBuZXh0SW5kZXggPSBpICsgMTsgOyBu
ZXh0SW5kZXgrKykgewogICAgICAgICAgICAgaWYgKG5leHRJbmRleCA+PSBsYWJlbHMuc2l6ZSgp
KSB7CiAgICAgICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgbGlua0J1ZmZlciwgbGFi
ZWxzW2ldLCBlbmRMYWJlbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAj
aW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1
ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUg
PHN0ZGlvLmg+CkBAIC03MDQsOCArNzA1LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlJZFRyYW5zaXRpbwogICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJS
b3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIs
Ci0gICAgICAgICAgICAoIkJhc2VsaW5lIHB1dF9ieV9pZCB0cmFuc2l0aW9uIHN0dWIgZm9yIENv
ZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgICAgICBtX2NvZGVCbG9jaywg
cmV0dXJuQWRkcmVzcy52YWx1ZSgpKSksCisgICAgICAgICAgICAoIkJhc2VsaW5lIHB1dF9ieV9p
ZCB0cmFuc2l0aW9uIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAg
ICAgIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgp
KSksCiAgICAgICAgICptX2dsb2JhbERhdGEsCiAgICAgICAgIG1fY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwKICAgICAgICAgd2lsbE5lZWRTdG9yYWdlUmVhbGxvYywKQEAgLTc3OCw5ICs3
NzksOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgLy8g
VHJhY2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVk
IGxhdGVyLgogICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NU
VUIoCiAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBh
cnJheSBsZW5ndGggc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAg
ICAgICAgbV9jb2RlQmxvY2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgK
LSAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIGFycmF5
IGxlbmd0aCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgIHRvQ1N0
cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0
T2Zmc2V0KAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5w
dXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAKICAgICAvLyBGaW5hbGx5IHBh
dGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0byBqdW1wIGhl
cmUgaW5zdGVhZC4KICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBMb2NhdGlvbiA9IHN0dWJJbmZv
LT5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51Lmdl
dC5zdHJ1Y3R1cmVDaGVjayk7CkBAIC04NDksOSArODUwLDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKFN0cgogICAgIHN0dWJJbmZvLT5zdHViUm91dGluZSA9IGNyZWF0
ZUpJVFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAgcGF0
Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBwcm90byBzdHViIGZv
ciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxv
Y2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKLSAgICAgICAgICAgICAg
ICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpLAorICAgICAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfaWQgcHJvdG8gc3R1YiBm
b3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICAgICAgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCisg
ICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1
bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAgICAg
ICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICBuZWVkc1N0dWJMaW5r
KTsKQEAgLTkxNSw5ICs5MTYsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2Vs
Zkxpc3QoCiAgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSA9IGNyZWF0ZUpJ
VFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAgcGF0Y2hC
dWZmZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV9pZCBzZWxmIGxpc3Qgc3R1YiBm
b3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1fY29kZUJs
b2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAg
ICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKSwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIHNlbGYgbGlzdCBz
dHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmco
Km1fY29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNl
dCgKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1
dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAgICAgICAqbV9nbG9iYWxEYXRhLAog
ICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgIG5lZWRzU3R1
YkxpbmspOwpAQCAtOTg4LDkgKzk4OSw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRQcm90b0xpc3QKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lID0gY3Jl
YXRlSklUU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBw
YXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIHByb3RvIGxpc3Qg
c3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1f
Y29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCi0gICAgICAg
ICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKSwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIHByb3Rv
IGxpc3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICAgICAgdG9D
U3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVs
QXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51
LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAgKm1fZ2xvYmFs
RGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICBu
ZWVkc1N0dWJMaW5rKTsKQEAgLTEwNjYsOSArMTA2Nyw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0
aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAg
ICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5X2lkIGNo
YWluIGxpc3Qgc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLAotICAgICAg
ICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQo
Ci0gICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRSZXN1
bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0X2J5
X2lkIGNoYWluIGxpc3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAg
ICAgICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90UGF0aEJl
Z2luLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAg
Km1fZ2xvYmFsRGF0YSwKICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAog
ICAgICAgICBuZWVkc1N0dWJMaW5rKTsKQEAgLTExNDAsOSArMTE0MSw5IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHIKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+
IHN0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NP
REUoCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICgiQmFzZWxpbmUgZ2V0
X2J5X2lkIGNoYWluIHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAg
ICAgICAgICAgICBtX2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zm
c2V0KAotICAgICAgICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0
UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygpKSksCisgICAgICAgICAgICAoIkJhc2VsaW5lIGdl
dF9ieV9pZCBjaGFpbiBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAg
ICAgICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVn
aW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJh
c2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAgICAgICAq
bV9nbG9iYWxEYXRhLAogICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAg
ICAgICAgIG5lZWRzU3R1YkxpbmspOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDEzNjA5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlJl
c3VsdFR5cGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNpbmNsdWRlIDx3dGYvU3Ry
aW5nUHJpbnRTdHJlYW0uaD4KIAogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDxzdGRpby5oPgpA
QCAtNzQ2LDggKzc0Nyw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW8KICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZSgKICAg
ICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAg
ICAgKCJCYXNlbGluZSBwdXRfYnlfaWQgdHJhbnNpdGlvbiBmb3IgQ29kZUJsb2NrICVwLCByZXR1
cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1fY29kZUJsb2NrLCByZXR1cm5BZGRyZXNzLnZh
bHVlKCkpKSwKKyAgICAgICAgICAgICgiQmFzZWxpbmUgcHV0X2J5X2lkIHRyYW5zaXRpb24gZm9y
ICVzLCByZXR1cm4gcG9pbnQgJXAiLAorICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqbV9jb2Rl
QmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKSksCiAgICAgICAgICptX2dsb2Jh
bERhdGEsCiAgICAgICAgIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwKICAgICAgICAg
d2lsbE5lZWRTdG9yYWdlUmVhbGxvYywKQEAgLTgxNSw5ICs4MTYsMTAgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbgogICAgIC8vIFRyYWNrIHRoZSBzdHViIHdlIGhh
dmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4KICAgICBzdHViSW5m
by0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAogICAgICAgICBwYXRjaEJ1
ZmZlciwKLSAgICAgICAgKCJCYXNsaW5lIEpJVCBnZXRfYnlfaWQgYXJyYXkgbGVuZ3RoIHN0dWIg
Zm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgIG1fY29kZUJsb2Nr
LCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgc3R1
YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOworICAgICAgICAoIkJhc2xpbmUgSklUIGdldF9ieV9pZCBhcnJheSBsZW5ndGggc3R1YiBm
b3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICB0b0NTdHJpbmcoKm1fY29kZUJs
b2NrKS5kYXRhKCksCisgICAgICAgICAgICBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRP
ZmZzZXQoCisgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1
dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogCiAgICAgLy8gRmluYWxseSBwYXRjaCB0
aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGlu
c3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBzdHViSW5mby0+aG90
UGF0aEJlZ2luLmp1bXBBdE9mZnNldChzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQuc3Ry
dWN0dXJlQ2hlY2spOwpAQCAtODgzLDkgKzg4NSw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRQcm90byhTdHIKICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRT
dHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgKICAgICAgICAgICAgIHBhdGNoQnVm
ZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBKSVQgZ2V0X2J5X2lkIHByb3RvIHN0dWIgZm9y
IENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgICAgICBtX2NvZGVCbG9j
aywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAotICAgICAgICAgICAgICAg
ICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRk
cmVzcygpKSksCisgICAgICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgcHJvdG8gc3R1
YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICAgICAgdG9DU3RyaW5nKCpt
X2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQo
CisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRS
ZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAg
ICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICBuZWVkc1N0dWJM
aW5rKTsKQEAgLTk0OCw5ICs5NTAsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
U2VsZkxpc3QoCiAgICAgUmVmUHRyPEpJVFN0dWJSb3V0aW5lPiBzdHViQ29kZSA9IGNyZWF0ZUpJ
VFN0dWJSb3V0aW5lKAogICAgICAgICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAgcGF0Y2hC
dWZmZXIsCi0gICAgICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgbGlzdCBzdHViIGZv
ciBDb2RlQmxvY2sgJXAsIHJldHVybiBwb2ludCAlcCIsCi0gICAgICAgICAgICAgbV9jb2RlQmxv
Y2ssIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKLSAgICAgICAgICAgICAg
ICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpLAorICAgICAgICAgICAgKCJCYXNlbGluZSBKSVQgZ2V0X2J5X2lkIGxpc3Qgc3R1
YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsCisgICAgICAgICAgICAgICAgdG9DU3RyaW5nKCpt
X2NvZGVCbG9jaykuZGF0YSgpLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVsQXRPZmZzZXQo
CisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51LmdldC5wdXRS
ZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKICAgICAgICAgKm1fZ2xvYmFsRGF0YSwKICAg
ICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLAogICAgICAgICBuZWVkc1N0dWJM
aW5rKTsKQEAgLTEwMjIsOSArMTAyNCw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRQcm90b0xpc3QKICAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJDb2RlID0gY3JlYXRl
SklUU3R1YlJvdXRpbmUoCiAgICAgICAgIEZJTkFMSVpFX0NPREUoCiAgICAgICAgICAgICBwYXRj
aEJ1ZmZlciwKLSAgICAgICAgICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBwcm90byBsaXN0
IHN0dWIgZm9yIENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwKLSAgICAgICAgICAgICBt
X2NvZGVCbG9jaywgc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAotICAgICAg
ICAgICAgICAgICBzdHViSW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVj
dXRhYmxlQWRkcmVzcygpKSksCisgICAgICAgICAgICAoIkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQg
cHJvdG8gbGlzdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwKKyAgICAgICAgICAgICAg
ICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4u
bGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmJhc2Vs
aW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpLAogICAgICAgICAqbV9n
bG9iYWxEYXRhLAogICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAg
ICAgIG5lZWRzU3R1YkxpbmspOwpAQCAtMTA5OSw5ICsxMTAxLDkgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlJZENoYWluTGlzdAogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gc3R1
YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERSgK
ICAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBKSVQgZ2V0
X2J5X2lkIGNoYWluIGxpc3Qgc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAi
LAotICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0aEJlZ2luLmxhYmVs
QXRPZmZzZXQoCi0gICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5iYXNlbGluZS51Lmdl
dC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKKyAgICAgICAgICAgICgiQmFzZWxp
bmUgSklUIGdldF9ieV9pZCBjaGFpbiBsaXN0IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAi
LAorICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgc3R1Yklu
Zm8tPmhvdFBhdGhCZWdpbi5sYWJlbEF0T2Zmc2V0KAorICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby0+cGF0Y2guYmFzZWxpbmUudS5nZXQucHV0UmVzdWx0KS5leGVjdXRhYmxlQWRkcmVzcygp
KSksCiAgICAgICAgICptX2dsb2JhbERhdGEsCiAgICAgICAgIG1fY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwKICAgICAgICAgbmVlZHNTdHViTGluayk7CkBAIC0xMTc0LDkgKzExNzYsOSBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3RyCiAgICAgUmVmUHRyPEpJ
VFN0dWJSb3V0aW5lPiBzdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgICAg
ICBGSU5BTElaRV9DT0RFKAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAo
IkJhc2VsaW5lIEpJVCBnZXRfYnlfaWQgY2hhaW4gc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1
cm4gcG9pbnQgJXAiLAotICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBzdHViSW5mby0+aG90UGF0
aEJlZ2luLmxhYmVsQXRPZmZzZXQoCi0gICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5wYXRjaC5i
YXNlbGluZS51LmdldC5wdXRSZXN1bHQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSwKKyAgICAgICAg
ICAgICgiQmFzZWxpbmUgSklUIGdldF9ieV9pZCBjaGFpbiBzdHViIGZvciAlcywgcmV0dXJuIHBv
aW50ICVwIiwKKyAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCks
IHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4ubGFiZWxBdE9mZnNldCgKKyAgICAgICAgICAgICAgICAg
ICAgc3R1YkluZm8tPnBhdGNoLmJhc2VsaW5lLnUuZ2V0LnB1dFJlc3VsdCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpLAogICAgICAgICAqbV9nbG9iYWxEYXRhLAogICAgICAgICBtX2NvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksCiAgICAgICAgIG5lZWRzU3R1YkxpbmspOwpAQCAtMTQyOCw3ICsx
NDMwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwoQnlWYWxJbgogICAgIAog
ICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAogICAg
ICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfdmFsIHN0dWIgZm9y
IENvZGVCbG9jayAlcCwgcmV0dXJuIHBvaW50ICVwIiwgbV9jb2RlQmxvY2ssIHJldHVybkFkZHJl
c3MudmFsdWUoKSkpOworICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV92YWwgc3R1YiBmb3IgJXMs
IHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJu
QWRkcmVzcy52YWx1ZSgpKSk7CiAgICAgCiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVy
KG1fY29kZUJsb2NrKTsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhieVZhbEluZm8tPmJhZFR5
cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbChieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCku
Y29kZSgpKSk7CkBAIC0xNDk4LDcgKzE1MDAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbChCeVZhbEluCiAgICAgCiAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFM
SVpFX0NPREVfRk9SX1NUVUIoCiAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAoIkJhc2Vs
aW5lIHB1dF9ieV92YWwgc3R1YiBmb3IgQ29kZUJsb2NrICVwLCByZXR1cm4gcG9pbnQgJXAiLCBt
X2NvZGVCbG9jaywgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKSk7CisgICAgICAgICgiQmFzZWxpbmUg
cHV0X2J5X3ZhbCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpKTsKICAgICAKICAgICBSZXBh
dGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIobV9jb2RlQmxvY2spOwogICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwOCwxMiArMTgwOCwx
NiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKICAgICB1bnNpZ25lZCBi
eXRlY29kZUluZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAKICNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQotICAgIGRhdGFMb2dGKCIlcDogRW50ZXJlZCBvcHRpbWl6ZSB3aXRo
IGJ5dGVjb2RlSW5kZXggPSAldSwgZXhlY3V0ZUNvdW50ZXIgPSAlcywgcmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXUsIGV4aXRDb3Vu
dGVyID0gIiwgY29kZUJsb2NrLCBieXRlY29kZUluZGV4LCBjb2RlQmxvY2stPmppdEV4ZWN1dGVD
b3VudGVyKCkuc3RhdHVzKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIo
KSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgZGF0YUxvZygK
KyAgICAgICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCBvcHRpbWl6ZSB3aXRoIGJ5dGVjb2RlSW5k
ZXggPSAiLCBieXRlY29kZUluZGV4LAorICAgICAgICAiLCBleGVjdXRlQ291bnRlciA9ICIsIGNv
ZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwKKyAgICAgICAgIiwgb3B0aW1pemF0aW9uRGVs
YXlDb3VudGVyID0gIiwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLAor
ICAgICAgICAiLCBleGl0Q291bnRlciA9ICIpOwogICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGlt
aXplZFJlcGxhY2VtZW50KCkpCi0gICAgICAgIGRhdGFMb2dGKCIldSIsIGNvZGVCbG9jay0+cmVw
bGFjZW1lbnQoKS0+b3NyRXhpdENvdW50ZXIoKSk7CisgICAgICAgIGRhdGFMb2coY29kZUJsb2Nr
LT5yZXBsYWNlbWVudCgpLT5vc3JFeGl0Q291bnRlcigpKTsKICAgICBlbHNlCi0gICAgICAgIGRh
dGFMb2dGKCJOL0EiKTsKLSAgICBkYXRhTG9nRigiXG4iKTsKKyAgICAgICAgZGF0YUxvZygiTi9B
Iik7CisgICAgZGF0YUxvZygiXG4iKTsKICNlbmRpZgogCiAgICAgaWYgKCFjb2RlQmxvY2stPmNo
ZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKCkpIHsKQEAgLTE4MjMsNyArMTgyNyw3
IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogCiAgICAgaWYgKGNvZGVC
bG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9T
RV9PU1IpCi0gICAgICAgIGRhdGFMb2dGKCJDb25zaWRlcmluZyBPU1IgaW50byAlcCglcCkuXG4i
LCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7CisgICAgICAgIGRhdGFMb2dG
KCJDb25zaWRlcmluZyBPU1IgIiwgKmNvZGVCbG9jaywgIiAtPiAiLCAqY29kZUJsb2NrLT5yZXBs
YWNlbWVudCgpLCAiLlxuIik7CiAjZW5kaWYKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbiBvcHRp
bWl6ZWQgcmVwbGFjZW1lbnQsIHRoZW4gaXQgbXVzdCBiZSB0aGUgY2FzZSB0aGF0IHdlIGVudGVy
ZWQKICAgICAgICAgLy8gY3RpX29wdGltaXplIGZyb20gYSBsb29wLiBUaGF0J3MgYmVjYXVzZSBp
cyB0aGVyZSdzIGFuIG9wdGltaXplZCByZXBsYWNlbWVudCwKQEAgLTE4NDAsNyArMTg0NCw3IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogICAgICAgICAvLyBhZGRpdGlv
bmFsIGNoZWNraW5nIGFueXdheSwgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgcmVjb21waWxhdGlv
biB0aHJhc2hpbmcuCiAgICAgICAgIGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNob3Vs
ZFJlb3B0aW1pemVGcm9tTG9vcE5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikK
LSAgICAgICAgICAgIGRhdGFMb2dGKCJUcmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIG9mICVwKCVw
KSAoaW4gbG9vcCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nRigiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAiLCAqY29k
ZUJsb2NrLCAiKCIsICpjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksICIpIChpbiBsb29wKS5cbiIp
OwogI2VuZGlmCiAgICAgICAgICAgICBjb2RlQmxvY2stPnJlb3B0aW1pemUoKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTE4NDgsNyArMTg1Miw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQsIG9wdGltaXplKQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghY29kZUJsb2NrLT5zaG91
bGRPcHRpbWl6ZU5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAg
ICAgIGRhdGFMb2dGKCJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9yICVwIChpbiBsb29wKSBiZWNh
dXNlIG9mIGluc3VmZmljaWVudCBwcm9maWxpbmcuXG4iLCBjb2RlQmxvY2spOworICAgICAgICAg
ICAgZGF0YUxvZ0YoIkRlbGF5aW5nIG9wdGltaXphdGlvbiBmb3IgIiwgKmNvZGVCbG9jaywgIiAo
aW4gbG9vcCkgYmVjYXVzZSBvZiBpbnN1ZmZpY2llbnQgcHJvZmlsaW5nLlxuIik7CiAjZW5kaWYK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTg2NCw3ICsxODY4LDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAgICAgICAgIAogICAgICAgICBpZiAo
Y29kZUJsb2NrLT5yZXBsYWNlbWVudCgpID09IGNvZGVCbG9jaykgewogI2lmIEVOQUJMRShKSVRf
VkVSQk9TRV9PU1IpCi0gICAgICAgICAgICBkYXRhTG9nRigiT3B0aW1pemluZyAlcCBmYWlsZWQu
XG4iLCBjb2RlQmxvY2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIk9wdGltaXppbmcgIiwgKmNv
ZGVCbG9jaywgIiBmYWlsZWQuXG4iKTsKICNlbmRpZgogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OwpAQCAtMTg3OCwxMiArMTg4MiwxMiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRp
bWl6ZSkKICAgICAKICAgICBpZiAodm9pZCogYWRkcmVzcyA9IERGRzo6cHJlcGFyZU9TUkVudHJ5
KGNhbGxGcmFtZSwgb3B0aW1pemVkQ29kZUJsb2NrLCBieXRlY29kZUluZGV4KSkgewogICAgICAg
ICBpZiAoT3B0aW9uczo6c2hvd0RGR0Rpc2Fzc2VtYmx5KCkpIHsKLSAgICAgICAgICAgIGRhdGFM
b2dGKAotICAgICAgICAgICAgICAgICJQZXJmb3JtaW5nIE9TUiBmcm9tIGNvZGUgYmxvY2sgJXAg
dG8gY29kZSBibG9jayAlcCwgYWRkcmVzcyAlcCB0byAlcC5cbiIsCi0gICAgICAgICAgICAgICAg
Y29kZUJsb2NrLCBvcHRpbWl6ZWRDb2RlQmxvY2ssIChTVFVCX1JFVFVSTl9BRERSRVNTKS52YWx1
ZSgpLCBhZGRyZXNzKTsKKyAgICAgICAgICAgIGRhdGFMb2coCisgICAgICAgICAgICAgICAgIlBl
cmZvcm1pbmcgT1NSICIsICpjb2RlQmxvY2ssICIgLT4gIiwgKm9wdGltaXplZENvZGVCbG9jaywg
IiwgYWRkcmVzcyAiLAorICAgICAgICAgICAgICAgIFJhd1BvaW50ZXIoKFNUVUJfUkVUVVJOX0FE
RFJFU1MpLnZhbHVlKCkpLCAiIC0+ICIsIFJhd1BvaW50ZXIoYWRkcmVzcyksICIuXG4iKTsKICAg
ICAgICAgfQogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIGRhdGFMb2dGKCJP
cHRpbWl6aW5nICVwIHN1Y2NlZWRlZCwgcGVyZm9ybWluZyBPU1IgYWZ0ZXIgYSBkZWxheSBvZiAl
dS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7
CisgICAgICAgIGRhdGFMb2dGKCJPcHRpbWl6aW5nICIsICpjb2RlQmxvY2ssICIgc3VjY2VlZGVk
LCBwZXJmb3JtaW5nIE9TUiBhZnRlciBhIGRlbGF5IG9mICIsIGNvZGVCbG9jay0+b3B0aW1pemF0
aW9uRGVsYXlDb3VudGVyKCksICIuXG4iKTsKICNlbmRpZgogCiAgICAgICAgIGNvZGVCbG9jay0+
b3B0aW1pemVTb29uKCk7CkBAIC0xODkyLDcgKzE4OTYsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkLCBvcHRpbWl6ZSkKICAgICB9CiAgICAgCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09T
UikKLSAgICBkYXRhTG9nRigiT3B0aW1pemluZyAlcCBzdWNjZWVkZWQsIE9TUiBmYWlsZWQsIGFm
dGVyIGEgZGVsYXkgb2YgJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+b3B0aW1pemF0aW9u
RGVsYXlDb3VudGVyKCkpOworICAgIGRhdGFMb2dGKCJPcHRpbWl6aW5nICIsICpjb2RlQmxvY2ss
ICIgc3VjY2VlZGVkLCBPU1IgZmFpbGVkLCBhZnRlciBhIGRlbGF5IG9mICIsIGNvZGVCbG9jay0+
b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCksICIuXG4iKTsKICNlbmRpZgogCiAgICAgLy8gQ291
bnQgdGhlIE9TUiBmYWlsdXJlIGFzIGEgc3BlY3VsYXRpb24gZmFpbHVyZS4gSWYgdGhpcyBoYXBw
ZW5zIGEgbG90LCB0aGVuCkBAIC0xOTAwLDcgKzE5MDQsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkLCBvcHRpbWl6ZSkKICAgICBvcHRpbWl6ZWRDb2RlQmxvY2stPmNvdW50T1NSRXhpdCgp
OwogICAgIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgZGF0YUxvZ0YoIkVuY291
bnRlcmVkIE9TUiBmYWlsdXJlIGludG8gJXAoJXApLlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2st
PnJlcGxhY2VtZW50KCkpOworICAgIGRhdGFMb2dGKCJFbmNvdW50ZXJlZCBPU1IgZmFpbHVyZSAi
LCAqY29kZUJsb2NrLCAiIC0+ICIsICpjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksICIuXG4iKTsK
ICNlbmRpZgogCiAgICAgLy8gV2UgYXJlIGEgbG90IG1vcmUgY29uc2VydmF0aXZlIGFib3V0IHRy
aWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gYWZ0ZXIgT1NSIGZhaWx1cmUgdGhhbgpAQCAtMTkxMyw3
ICsxOTE3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAgICAgLy8g
cmVvcHRpbWl6YXRpb24gdHJpZ2dlci4KICAgICBpZiAob3B0aW1pemVkQ29kZUJsb2NrLT5zaG91
bGRSZW9wdGltaXplTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAg
ICBkYXRhTG9nRigiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAlcCglcCkgKGFmdGVyIE9T
UiBmYWlsKS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKKyAgICAg
ICAgZGF0YUxvZ0YoIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgKmNvZGVCbG9jaywg
IiAtPiAiLCAqY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLCAiIChhZnRlciBPU1IgZmFpbCkuXG4i
KTsKICNlbmRpZgogICAgICAgICBjb2RlQmxvY2stPnJlb3B0aW1pemUoKTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXVEYg
eworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgaWYgKGtpbmQgPT0gSlNDOjpDb2RlRm9yQ2FsbCkg
eworICAgICAgICBvdXQucHJpbnQoIkNhbGwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBBU1NFUlQoa2luZCA9PSBKU0M6OkNvZGVGb3JDb25zdHJ1Y3QpOworICAgIG91dC5w
cmludCgiQ29uc3RydWN0Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXph
dGlvbktpbmQuaAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsg
Q29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKIAoraW5saW5lIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgc3BlY2lhbGl6YXRpb25Gcm9tSXNDYWxsKGJvb2wgaXNDYWxsKQoreworICAgIHJl
dHVybiBpc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3Q7Cit9CisKK2lubGlu
ZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uRnJvbUlzQ29uc3RydWN0KGJv
b2wgaXNDb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGlzQ29uc3RydWN0ID8gQ29kZUZvckNvbnN0
cnVjdCA6IENvZGVGb3JDYWxsOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAorbmFtZXNwYWNl
IFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOwordm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiwgSlNDOjpDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKICNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDEzNjA5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NjUsNCArNjY1LDI2IEBAIFN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBh
cmFtU3RyaW5nKCkKICAgICByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcmFtU3RyaW5n
KCk7CiB9CiAKK0NvZGVCbG9ja0hhc2ggRXhlY3V0YWJsZUJhc2U6Omhhc2hGb3IoQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKSBjb25zdAoreworICAgIGlmICh0aGlzLT5jbGFzc0luZm8oKSA9
PSAmTmF0aXZlRXhlY3V0YWJsZTo6c19pbmZvKQorICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0
IE5hdGl2ZUV4ZWN1dGFibGUqPih0aGlzKS0+aGFzaEZvcihraW5kKTsKKyAgICAKKyAgICByZXR1
cm4ganNDYXN0PGNvbnN0IFNjcmlwdEV4ZWN1dGFibGUqPih0aGlzKS0+aGFzaEZvcihraW5kKTsK
K30KKworQ29kZUJsb2NrSGFzaCBOYXRpdmVFeGVjdXRhYmxlOjpoYXNoRm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkgY29uc3QKK3sKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkK
KyAgICAgICAgcmV0dXJuIENvZGVCbG9ja0hhc2goc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHdp
c2VfY2FzdDxzaXplX3Q+KG1fZnVuY3Rpb24pKSk7CisgICAgCisgICAgQVNTRVJUKGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCk7CisgICAgcmV0dXJuIENvZGVCbG9ja0hhc2goc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGJpdHdpc2VfY2FzdDxzaXplX3Q+KG1fY29uc3RydWN0b3IpKSk7Cit9CisKK0Nv
ZGVCbG9ja0hhc2ggU2NyaXB0RXhlY3V0YWJsZTo6aGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIENvZGVCbG9ja0hhc2goc291cmNlKCksIGtp
bmQpOworfQorCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUg
RXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVCbG9j
a0hhc2guaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAi
SGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC04Niw2ICs4Nyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0
cnVjdHVyZSA9IHRydWU7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAj
ZW5kaWYKKyAgICAgICAgCisgICAgICAgIENvZGVCbG9ja0hhc2ggaGFzaEZvcihDb2RlU3BlY2lh
bGl6YXRpb25LaW5kKSBjb25zdDsKIAogICAgICAgICBib29sIGlzRnVuY3Rpb25FeGVjdXRhYmxl
KCkKICAgICAgICAgewpAQCAtMjk1LDYgKzI5OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogI2VuZGlmCiAKKyAgICAgICAgQ29kZUJs
b2NrSGFzaCBoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0OworCiAgICAgICAg
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQogICAgICAg
ICBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1fY29uc3RydWN0b3I7IH0K
IApAQCAtMzUyLDggKzM1NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogI2VuZGlmCisgICAgICAgIAor
ICAgICAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29u
c3Q7CiAKLSAgICAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgeyByZXR1cm4gbV9zb3Vy
Y2U7IH0KKyAgICAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2U7IH0KICAgICAgICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5wcm92aWRlcklEKCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwoKTsgfQogICAgICAgICBp
bnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmU7IH0KSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMzYxMTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI2IEBACisyMDEyLTExLTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgSXQgc2hvdWxkIGJlIGVhc3kgdG8gZmluZCBjb2RlIGJsb2NrcyBpbiBkZWJ1ZyBk
dW1wcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAz
NjIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgQ2hh
bmdlZCBSYXdQb2ludGVyIHRvIGFjY2VwdCBib3RoIGNvbnN0IHZvaWQqIGFuZCB2b2lkKiwgYW5k
IHVzZSB0aGUgZm9ybWVyIGludGVybmFsbHkuCisgICAgICAgIAorICAgICAgICBDbGVhbmVkIHVw
IFNIQTEgc28gdGhhdCB0aGUgZnVuY3Rpb25hbGl0eSBhbHJlYWR5IHVzZWQgaW50ZXJuYWxseSBm
b3Igc2VsZi10ZXN0aW5nIGlzCisgICAgICAgIGF2YWlsYWJsZSB2aWEgdGhlIEFQSS4gVGhpcyBp
bmNsdWRlcyBhZGRCeXRlcyhDU3RyaW5nKSBhbmQgY29tcHV0aW5nIGhleCBkaWdlc3RzLgorCisg
ICAgICAgICogd3RmL1Jhd1BvaW50ZXIuaDoKKyAgICAgICAgKFdURjo6UmF3UG9pbnRlcjo6UmF3
UG9pbnRlcik6CisgICAgICAgIChSYXdQb2ludGVyKToKKyAgICAgICAgKFdURjo6UmF3UG9pbnRl
cjo6dmFsdWUpOgorICAgICAgICAqIHd0Zi9TSEExLmNwcDoKKyAgICAgICAgKFdURjo6ZXhwZWN0
U0hBMSk6CisgICAgICAgIChXVEY6OlNIQTE6OmhleERpZ2VzdCk6CisgICAgICAgIChXVEY6OlNI
QTE6OmNvbXB1dGVIZXhEaWdlc3QpOgorICAgICAgICAqIHd0Zi9TSEExLmg6CisgICAgICAgIChX
VEY6OlNIQTE6OmFkZEJ5dGVzKToKKwogMjAxMi0xMS0yOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGR1bXBpbmcgc2hvdWxkIG5vdCB1
c2UgdGhlIHN0YXRpYyBjaGFyIGJ1ZmZlclt0aGluZ3ldIGlkaW9tCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9SYXdQb2ludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmF3UG9pbnRl
ci5oCShyZXZpc2lvbiAxMzYwOTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDEwICs0MCwxNSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAg
ICAKLSAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBleHBs
aWNpdCBSYXdQb2ludGVyKGNvbnN0IHZvaWQqIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFs
dWUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBjb25zdCB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCogbV92YWx1ZTsKKyAg
ICBjb25zdCB2b2lkKiBtX3ZhbHVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9TSEExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TSEEx
LmNwcAkocmV2aXNpb24gMTM2MDk1KQorKysgU291cmNlL1dURi93dGYvU0hBMS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDEwICszNiw5IEBACiAjaW5jbHVkZSAiU0hBMS5oIgogCiAjaW5jbHVk
ZSAiQXNzZXJ0aW9ucy5oIgotI2lmbmRlZiBOREVCVUcKKwogI2luY2x1ZGUgIlN0cmluZ0V4dHJh
cy5oIgogI2luY2x1ZGUgInRleHQvQ1N0cmluZy5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXVEYg
ewogCkBAIC01MiwxNSArNTEsOCBAQCBzdGF0aWMgdm9pZCBleHBlY3RTSEExKENTdHJpbmcgaW5w
dXQsIGluCiB7CiAgICAgU0hBMSBzaGExOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0
OyArK2kpCi0gICAgICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQubGVuZ3RoKCkpOwotICAgIFZlY3Rvcjx1aW50OF90
LCAyMD4gZGlnZXN0OwotICAgIHNoYTEuY29tcHV0ZUhhc2goZGlnZXN0KTsKLSAgICBjaGFyKiBi
dWZmZXIgPSAwOwotICAgIENTdHJpbmcgYWN0dWFsID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXpl
ZCg0MCwgYnVmZmVyKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDIwOyArK2kpIHsKLSAg
ICAgICAgc25wcmludGYoYnVmZmVyLCAzLCAiJTAyWCIsIGRpZ2VzdC5hdChpKSk7Ci0gICAgICAg
IGJ1ZmZlciArPSAyOwotICAgIH0KKyAgICAgICAgc2hhMS5hZGRCeXRlcyhpbnB1dCk7CisgICAg
Q1N0cmluZyBhY3R1YWwgPSBzaGExLmNvbXB1dGVIZXhEaWdlc3QoKTsKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGFjdHVhbCA9PSBleHBlY3RlZCwgImlucHV0OiAlcywgcmVwZWF0OiAlZCwgYWN0
dWFsOiAlcywgZXhwZWN0ZWQ6ICVzIiwgaW5wdXQuZGF0YSgpLCByZXBlYXQsIGFjdHVhbC5kYXRh
KCksIGV4cGVjdGVkLmRhdGEoKSk7CiB9CiAKQEAgLTE0NCw2ICsxMzYsMjUgQEAgdm9pZCBTSEEx
Ojpjb21wdXRlSGFzaChWZWN0b3I8dWludDhfdCwgMgogICAgIHJlc2V0KCk7CiB9CiAKK0NTdHJp
bmcgU0hBMTo6aGV4RGlnZXN0KGNvbnN0IFZlY3Rvcjx1aW50OF90LCAyMD4mIGRpZ2VzdCkKK3sK
KyAgICBjaGFyKiBzdGFydCA9IDA7CisgICAgQ1N0cmluZyByZXN1bHQgPSBDU3RyaW5nOjpuZXdV
bmluaXRpYWxpemVkKDQwLCBzdGFydCk7CisgICAgY2hhciogYnVmZmVyID0gc3RhcnQ7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCAyMDsgKytpKSB7CisgICAgICAgIHNucHJpbnRmKGJ1ZmZl
ciwgMywgIiUwMlgiLCBkaWdlc3QuYXQoaSkpOworICAgICAgICBidWZmZXIgKz0gMjsKKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ1N0cmluZyBTSEExOjpjb21wdXRlSGV4RGlnZXN0
KCkKK3sKKyAgICBWZWN0b3I8dWludDhfdCwgMjA+IGRpZ2VzdDsKKyAgICBjb21wdXRlSGFzaChk
aWdlc3QpOworICAgIHJldHVybiBoZXhEaWdlc3QoZGlnZXN0KTsKK30KKwogdm9pZCBTSEExOjpm
aW5hbGl6ZSgpCiB7CiAgICAgQVNTRVJUKG1fY3Vyc29yIDwgNjQpOwpJbmRleDogU291cmNlL1dU
Ri93dGYvU0hBMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NIQTEuaAkocmV2aXNp
b24gMTM2MDk1KQorKysgU291cmNlL1dURi93dGYvU0hBMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAjZGVmaW5lIFdURl9TSEExX2gKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBA
IC00MywxMSArNDQsMjcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYWRkQnl0ZXMoaW5wdXQu
ZGF0YSgpLCBpbnB1dC5zaXplKCkpOwogICAgIH0KKyAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IENT
dHJpbmcmIGlucHV0KQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogc3RyaW5nID0gaW5wdXQu
ZGF0YSgpOworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY3JlYXRvciBvZiB0aGUgQ1N0
cmluZyBkaWRuJ3QgbWFrZSB0aGUgbWlzdGFrZQorICAgICAgICAvLyBvZiBmb3JjaW5nIGxlbmd0
aCgpIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgdXNlZCB0byBjcmVhdGUgdGhlCisgICAg
ICAgIC8vIHN0cmluZywgcHJpb3IgdG8gaW5zZXJ0aW5nIHRoZSBudWxsIHRlcm1pbmF0b3IgZWFy
bGllciBpbiB0aGUKKyAgICAgICAgLy8gc2VxdWVuY2UuCisgICAgICAgIEFTU0VSVChpbnB1dC5s
ZW5ndGgoKSA9PSBzdHJsZW4oc3RyaW5nKSk7CisgICAgICAgIGFkZEJ5dGVzKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZyksIGlucHV0Lmxlbmd0aCgpKTsKKyAgICB9CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQnl0ZXMoY29uc3QgdWludDhfdCogaW5wdXQs
IHNpemVfdCBsZW5ndGgpOwogCiAgICAgLy8gY29tcHV0ZUhhc2ggaGFzIGEgc2lkZSBlZmZlY3Qg
b2YgcmVzZXR0aW5nIHRoZSBzdGF0ZSBvZiB0aGUgb2JqZWN0LgogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGNvbXB1dGVIYXNoKFZlY3Rvcjx1aW50OF90LCAyMD4mKTsKLQorICAgIAorICAg
IC8vIEdldCBhIGhleCBoYXNoIGZyb20gdGhlIGRpZ2VzdC4gUGFzcyBhIGxpbWl0IGxlc3MgdGhh
biA0MCBpZiB5b3Ugd2FudCBhIHNob3J0ZXIgZGlnZXN0LgorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgQ1N0cmluZyBoZXhEaWdlc3QoY29uc3QgVmVjdG9yPHVpbnQ4X3QsIDIwPiYpOwor
ICAgIAorICAgIC8vIENvbXB1dGUgdGhlIGhleCBkaWdlc3QgZGlyZWN0bHkuIFBhc3MgYSBsaW1p
dCBsZXNzIHRoYW4gNDAgaWYgeW91IHdhbnQgYSBzaG9ydGVyIGRpZ2VzdC4KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgQ1N0cmluZyBjb21wdXRlSGV4RGlnZXN0KCk7CisgICAgCiBwcml2YXRlOgog
ICAgIHZvaWQgZmluYWxpemUoKTsKICAgICB2b2lkIHByb2Nlc3NCbG9jaygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>